For the complete documentation index, see llms.txt. This page is also available as Markdown.

FXP Rates

APIs for FX Providers (FXPs) to create, retrieve and withdraw the exchange rates they offer on Nexus for quote generation.

Create an FX rate

post
/v1/rates

Creates a new exchange rate for a currency pair. If a live rate already exists for the same currency pair, it is automatically marked as superseded and kept as a historical record. Quotes already issued against the previous rate remain valid for 10 minutes, known as the NQVT window. Nexus may throttle this endpoint, and an idempotency key header is recommended so that retried submissions are not duplicated. Requires the scope rates.write. Used by: FX Providers (FXPs)

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Header parameters
Idempotency-Keystring · uuidOptional

Recommended for POST requests. A UUID used to deduplicate retried submissions.

Body

Request body for creating a rate. Any live rate that already exists for the same FXP and currency pair is automatically superseded.

sourceCurrencystringRequired

ISO 4217 currency code of the source currency, three uppercase letters.

Example: EURPattern: ^[A-Z]{3}$
destinationCurrencystringRequired

ISO 4217 currency code of the destination currency, three uppercase letters.

Example: SGDPattern: ^[A-Z]{3}$
ratenumberRequired

Exchange rate, where UnitCcyAmount multiplied by rate equals QtyCcyAmount. Must be greater than 0.

Example: 1.5019
Responses
200

The created rate record.

application/json

An exchange rate provided by an FXP for a specific currency pair. Each rate applies in one direction only, and the rate for the opposite direction is configured separately. A rate stays live until it is replaced by a newer rate for the same currency pair or withdrawn. Nexus does not expire rates based on time.

idstringRequired

Unique ID of the rate record.

Example: 9929ea23-f29c-4053-b54a-5bf7a1bb348e
sourceCurrencystringRequired

ISO 4217 currency code of the source currency, three uppercase letters.

Example: EURPattern: ^[A-Z]{3}$
destinationCurrencystringRequired

ISO 4217 currency code of the destination currency, three uppercase letters.

Example: SGDPattern: ^[A-Z]{3}$
ratenumberRequired

Exchange rate, where UnitCcyAmount multiplied by rate equals QtyCcyAmount. Must be greater than 0.

Example: 1.5019
createdDateTimestring · date-timeRequired

Timestamp at which the rate record was created.

isExpiredbooleanRequired

Historical marker set to true when the rate is replaced or withdrawn. It does not mean the rate expired with time.

expiryDateTimestring · nullableOptional

Timestamp at which the rate was replaced or withdrawn. A historical marker only.

post/v1/rates

List FX rates

get
/v1/rates

Returns your current live exchange rates, with optional filters for currency pair. Rate records are kept for up to 13 months and a maximum of 100 records is returned. When includeExpired is true, the limit parameter must be provided. Rates do not expire with time. A rate stays live until you replace it with a new rate for the same currency pair or withdraw it. Keeping rates up to date is your responsibility under the Scheme Rulebook. Requires the scope rates.read. Used by: FX Providers (FXPs)

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
sourceCurrencystringOptional

ISO 4217 currency code of the source currency, three uppercase letters.

Pattern: ^[A-Z]{3}$
destinationCurrencystringOptional

ISO 4217 currency code of the destination currency, three uppercase letters.

Pattern: ^[A-Z]{3}$
includeExpiredbooleanOptional

If true, include historical records that were replaced or withdrawn in the last 13 months. Default is false. When true, the limit parameter is required. Note that the word expired in field names is historical naming only; records are never expired based on time.

Default: false
limitinteger · min: 1 · max: 100Optional

Maximum number of items to return. Default is 50 and the maximum is 100. Required when includeExpired is true.

Default: 50
Responses
200

The FXP's rates.

application/json

List of rate records belonging to the FXP.

get/v1/rates

Withdraw an FX rate

delete
/v1/rates/{rateId}

Withdraws a rate so it is no longer offered to PSPs. The response returns the withdrawn record with isExpired set to true as a historical marker. Quotes issued against this rate in the last 10 minutes remain valid. Requires the scope rates.write. Used by: FX Providers (FXPs)

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
rateIdstringRequired

UUID of the rate record to withdraw.

Responses
200

The withdrawn rate record.

application/json

An exchange rate provided by an FXP for a specific currency pair. Each rate applies in one direction only, and the rate for the opposite direction is configured separately. A rate stays live until it is replaced by a newer rate for the same currency pair or withdrawn. Nexus does not expire rates based on time.

idstringRequired

Unique ID of the rate record.

Example: 9929ea23-f29c-4053-b54a-5bf7a1bb348e
sourceCurrencystringRequired

ISO 4217 currency code of the source currency, three uppercase letters.

Example: EURPattern: ^[A-Z]{3}$
destinationCurrencystringRequired

ISO 4217 currency code of the destination currency, three uppercase letters.

Example: SGDPattern: ^[A-Z]{3}$
ratenumberRequired

Exchange rate, where UnitCcyAmount multiplied by rate equals QtyCcyAmount. Must be greater than 0.

Example: 1.5019
createdDateTimestring · date-timeRequired

Timestamp at which the rate record was created.

isExpiredbooleanRequired

Historical marker set to true when the rate is replaced or withdrawn. It does not mean the rate expired with time.

expiryDateTimestring · nullableOptional

Timestamp at which the rate was replaced or withdrawn. A historical marker only.

delete/v1/rates/{rateId}

Count FX rates

get
/v1/rates/count

Returns the number of rate records you have configured. Set includeExpired to true to include historical records that were replaced or withdrawn. Requires the scope rates.read. Used by: FX Providers (FXPs)

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
includeExpiredbooleanOptional

If true, include historical records that were replaced or withdrawn in the last 13 months. Default is false. When true, the limit parameter is required. Note that the word expired in field names is historical naming only; records are never expired based on time.

Default: false
Responses
200

The rate record count.

application/json

A simple record count.

countintegerRequired

The number of records.

Example: 2
get/v1/rates/count

Last updated