# NewFxRateInput

input type

Create-input for an FxRate. The tenant (org group) is derived SERVER-SIDE from the principal; the LEVEL is named by the anchor field: BOTH absent = a group-level record, organizationId = an org override, logicalFacilityId = an LF override (naming both refuses). The anchor is tenant-scoped server-side and must be ACTIVE; BOTH currencies must be in the minor-unit registry (VALIDATION/UNSUPPORTED_CURRENCY naming the side); group-level records must be absolute; startAt is optional (absent = effective NOW, server-stamped; explicit values must be >= the server now — no past starts) and must precede endAt.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the window coordinate `<from>/<to> <mode payload> from <startAt>`; when supplied it must be non-blank. |
| `organizationId` | [ID](/types/#scalars) | no | The org anchor for an ORG-level override — tenant-scoped server-side; absent (with logicalFacilityId absent) = a GROUP-level record. |
| `logicalFacilityId` | [ID](/types/#scalars) | no | The LF anchor for an LF-level override — tenant-scoped server-side; never together with organizationId. |
| `fromCurrency` | [String](/types/#scalars) `String!` | yes | The FROM (tendered/foreign) currency — must be in the minor-unit registry. |
| `toCurrency` | [String](/types/#scalars) `String!` | yes | The TO (settlement) currency — must be in the registry; must differ from fromCurrency. |
| `mode` | [String](/types/#scalars) `String!` | yes | absolute (buy+sell required) \| adjust (adjustPpm required, feeMinor optional; org/LF only) \| par (no rate fields; org/LF only). |
| `buyRateMicro` | [Int](/types/#scalars) | no | ABSOLUTE only — integer micro to-per-from (1.25 = 1250000). |
| `sellRateMicro` | [Int](/types/#scalars) | no | ABSOLUTE only — integer micro to-per-from. |
| `adjustPpm` | [Int](/types/#scalars) | no | ADJUST only — SIGNED, non-zero, ±500000 (±50%). |
| `feeMinor` | [Int](/types/#scalars) | no | ADJUST only, optional — TO-currency minor units, reducing the credited amount. |
| `startAt` | [String](/types/#scalars) | no | The window start (INCLUSIVE; UTC ISO-8601). Optional — absent = effective NOW (server-stamped); explicit values must be >= the server now (no past starts). |
| `endAt` | [String](/types/#scalars) `String!` | yes | The window end (EXCLUSIVE; UTC ISO-8601). ALWAYS required (far-future = the standing rate); must be strictly after startAt. |

## Used by

- [createFxRate](/reference/fx-rate/createFxRate/)
