Links

Rates

FX Providers are responsible for informing Nexus of the rates at which they are willing to swap one currency for another.
  • The FXP sends rates to the POST /rates/ API
  • A rate in Nexus describes the ‘going rate’ at which an FXP is willing to swap one currency for another.
  • The rate is not specific to a single transaction. FXPs are not asked to quote or bid on individual transactions. This means that when an FXP provides a rate to Nexus, they are effectively saying “Until further notice, for any Nexus payment, I’m willing to exchange Currency A for Currency B at exchange rate X”. “Further notice” is given when the FXP sends a revised rate.
  • The rate provided is the rate that the FX Provider charges to the Source PSP. The Source PSP could choose to mark up this rate before displaying it to the Sender.

Updating rates

  • A rate provided by an FXP continues to apply until the FXP sends a new rate to the POST /rates/ API.
  • A new rate causes older rates to immediately expire. Source PSPs who call the GET /quotes/ API are only shown the most recent rates.
  • Rates can be updated as frequently or infrequently as the FX Provider wishes. Updates could be on a regular or irregular schedule. For example an FXP may choose to update their rates every minute, every half hour, every day or only when market conditions change significantly.
To manage load on the Nexus network, very-high frequency updates may not be permitted. For example, given the lower values of Nexus payments compared to wholesale FX markets, there is little need to update rates on a sub-second frequency as any changes would made a negligible difference to the ultimate cost to the Sender. Such frequent updates, multiplied across multiple corridors and multiple FXPs, could have a detrimental impact on the performance of the Nexus FX Service with very little end-user benefit.

Structure of a rate

Within the Nexus FX service, each rate contains the following information.

Table: Structure of a Rate

ELEMENT
USAGE
EXAMPLES
Id
Autogenerated Id for this rate (a specific rate for a specific currency pair issued by a specific FXP at a specific time)
302293
FXP Id
Internal Nexus ID for the FXP (not external ID such as BIC or LEI, which is used in the API requests and responses)
1301
UnitCcy
ISO 20022 term for Source Currency
EUR
QtdCcy
ISO 20022 term for Destination Currency
SGD
Threshold
Minimum transaction size IN SOURCE CURRENCY at which the improvement applies. If the FXP has defined tiers for this Source Currency, the POST /rates/ API will generate additional improved rates based on those tiers.
10,000
Rate
Exchange rate, where UnitCcy Amount * Rate = QtyCcy Amount
1.5019
Source UPS
The Source Unique Payment System in which the FXP can receive the Source Currency.
EURTIPS
Destination UPS
The Destination Unique Payment System in which the FXP can receive the Destination Currency.
SGDFAST
DateTimeIssued
DateTime at which the Nexus Gateway accepts the quote and publishes it to the rest of the network
2022-09-11 15:52:23
DateTimeExpired
Initially blank. Will be set if an FXP withdraws their rates.
2022-09-11 16:52:23

Rate uniqueness

A rate is unique to:
  • A specific FXP, AND
  • A specific Source Unique Payment System (UPS - an IPS operating payments in a specific currency, which is available in one or more countries), AND
  • A specific Destination UPS
Note that each rate is:
  • one-directional: a rate describes the rate of exchange for payments flowing in one direction only (eg from currency A>B).
  • independent & non-reciprocal: for a specific FXP, given currencies A & B, the rate for payments from B>A is set independently of the rate for payments from A>B. The rate for B>A is not simply the reciprocal of the rate for payments from A>B (eg 1 / (B>A)).
WORKED EXAMPLE: Asymmetric rates
FXP-A may wish to reduce their holdings of SGD and increase their holding of EUR. FXP-A provides two independent rates to Nexus:
EUR->SGD = 1.5000 (EUR 1 = SGD 1.50)
SGD->EUR = 0.6500 (SGD 1 = EUR 0.65)
Note that the SGD>EUR rate is not simply 1 divided by the EUR>SGD rate, which would be SGD 0.6667.
The rates above may be attractive rate for anyone sending payments from the Eurozone to Singapore, but unattractive for anyone sending payments from Singapore to the Eurozone. This means the FXP is likely to be selected for payments from the Eurozone to Singapore, but unlikely to be selected for payments from Singapore to the Eurozone. Consequently, they are likely to accumulate EUR and run down their holdings of SGD.

Withdrawing a rate

In some cases, an FXP may need to ‘withdraw’ a specific rate. One example would be where the FXP needs to do maintenance on their own systems, making it impossible for them to manage liquidity for Nexus payments. In this case, an FXP could withdraw a rate using the DELETE /rates/ API. “Deleting” a rate would set this rate to expire so that it is no longer shown to PSPs.
This functionality has not been built as part of the PoC and would need to be added to a production version.

Providing rates when FX markets are closed

IPSs allow payments to be made 24 hours per day, seven days per week. In contrast, FX markets, where financial institutions buy and sell currencies from each other, are only open during business hours from Monday-Friday. Because of the global nature of FX markets, it is usually possible to trade major currencies for 24 hours a day from Monday to Friday, but not over the weekend. This means that there is no “live” market to define FX rates on Saturday and Sunday.
To enable Nexus payments at weekends, FX Providers must continue to provide FX over the weekend. There are two ways they could do this:
  • An FXP can update their rates when the FX markets close on Friday, and leave those rates fixed throughout the weekend, since the market rates will not change. In this case, they would “price in” the risk that the rates in the wider FX market on Monday morning may jump relative to the rates when the market closed on Friday evening. This means that the rates charged over the weekend are likely to be less competitive than those during the week to cover this risk.
  • Alternatively, the FXP could continue to update its rates through the weekend. Although the market rates would not change, an FXP may wish to do this to manage their liquidity in the different currencies. For example, they can make their rates better or worse, compared to the market, in order to attract more or less of certain currencies.

Improving rates based on size or PSP

Improved rates for larger transactions (tier-based improvements)

In Nexus a specific FXP can offer better rates for larger transactions. This works as follows:
  • For each specific Source Currency, the FXP can define a number of “tiers” at which better rates apply.
  • For each tier, the FXP will define how much the base rate (as provided in the POST /rates/ API) should be improved, in basis points.
  • For payments smaller than the lowest tier, the base rate (provided in the POST /rates/ API) applies. (This is recorded in Nexus as a rate with a threshold of zero.)
  • Important: After submitting a new tier or changing the rate on a tier, changes will only be applied to newly submitted rates. Nexus will not retroactively apply changed rates to existing rates.
Note:
  • An FXP can choose whether or not to set tiers for a specific currency, and how many tiers to set.
  • Different FXPs can set different tiers

Table: Structure of a single tier

ELEMENTS
USAGE
EXAMPLES
Id
Autogenerated primary key of this tier, unique to a specific FXP, Source Currency and threshold (minimum amount)
20515
FXP Id
Internal Nexus ID for the FXP (not external ID such as BIC or LEI, which is used in the API requests and responses)
1301
UnitCcy
ISO 20022 term for Source Currency. Thresholds relate to value of the payment in this currency only (not Destination Currency)
EUR
Threshold
Minimum transaction size IN SOURCE CURRENCY at which the improvement applies
50,000.00
Improvement
An improvement, recorded in basis points, which is applied to the base rate.
100.00
DateTimeExpired
Initially blank. Will be set when an FXP provides a new improvement for this threshold.
Worked example
The Source Currency is Euros. The maximum payment permitted through the TIPS payment system is EUR 100,000. The FXP could therefore choose to set the following tiers:
FXP Id
SOURCE CURRENCY
TIER THRESHOLD (Minimum transaction size at which the improvement applies)
IMPROVEMENT in basis points (applied to the base rate in the FXP’s quote)
FXP-A
EUR
25,000
50
FXP-A
EUR
50,000
100
FXP-A
EUR
75,000
150
This means that for a payment of 50,000, the rate will be improved by 1%, and so the amount received by the Recipient will be 1% greater than it would have been with the base rate.
If FXP-A quoted the base rate for EUR>SGD at 1.500, then the improvement would be calculated as:
Improved rate = Base Rate * (1 + (basis points / 10000)
= 1.5000 * (1 + (100 / 10000))
= 1.5000 * (1 + 0.01)
= 1.5000 * (1.01) = 1.5150
Note that for transactions below the 50,000 threshold, FXP-A’s base rate, as provided in the initial POST /rates/ API call, will apply.

Improved rates for preferred PSPs (PSP-based improvements)

FX Providers may also want to offer better rates to specific PSPs, for example, PSPs that are already customers of the FXP. In Nexus this works as follows:
  • An FXP can define the PSPs to which it wishes to offer improved rates
    • For each PSP, the FXP can define how much the base rate should be improved, in basis points.
  • When a Source PSP calls the GET /quotes/ API, Nexus will check whether any FXPs have registered preferential rates for that PSP and apply the improvement to the FXP's base rate.
  • An FXP does not need to set any PSP-based improvements. If no PSP-based improvement is set for a specific PSP, the base rate will apply.

TABLE: Structure of a single PSP-based improvement

ELEMENT
USAGE
EXAMPLES
Id
Primary key of this PSP-based improvement, unique to a specific FXP and specific PSP
3289
FXP Id
Internal Nexus ID for the FXP (not external ID such as BIC or LEI, which is used in the API requests and responses)
1301
PSP Id
Internal Nexus ID for the PSP (not external ID such as BIC or LEI)
0592
Improvement
An improvement, recorded in basis points, which is applied to the rates after any tier-based improvements have been calculated.
30
DateTimeExpired
Initially blank. When the FXP issues a new Improvement for this PSP, the old one is set to expire.

Table: Example PSP-based improvements

FXP Id
PSP Id (this would be a BIC)
IMPROVEMENT in basis points (applied to the base rate in the FXP’s quote)
FXP-A
PSP-C
25
FXP-A
PSP-D
50
FXP-B
PSP-D
30

Generation of quotes

When a Source PSP calls the GET /quotes/ API, Nexus will:
  1. 1.
    retrieve the rates for the currency pair requested by the PSP
  2. 2.
    for each FXP providing a rate:
    • check whether the transaction value is higher than any of the tiers set by FXPs for that currency. If it is, Nexus will apply the improvement to the relevant FXP's base rate
    • check whether the FXP has registered a PSP-based improvement for the requesting PSP. If so, apply the PSP-based improvements to the relevant rate (after any tier-based improvements have been applied).
  3. 3.
    return the full list of quotes with rates that have already been improved for both tier-based and PSP-improvements.
Every quote includes a quote ID which is unique. The usage of this quote ID is explained below.

How the Quote Id is used by the Source PSP

The Source PSP will:
  1. 1.
    Select their preferred quote from the list of quotes provided by Nexus. They may simply choose the best rate in the market or may choose a preferred FXP. If the PSP is also an FXP, they may select their own quote.
  2. 2.
    Potentially mark up the quote (see “Guidelines for PSPs” for a detailed explanation).
  3. 3.
    Show that quote to the Sender
If the Sender approves the payment at that rate:
  • The PSP will call the GET /intermediaryagents/ API to retrieve the relevant account numbers or bank identifiers of the FXP's SAPs. These will be used to fill the IntermediaryAgent blocks of the pacs.008 payment instruction that the Source PSP will send to their local IPS
  • The quote ID will also be included in the pacs.008, allowing Nexus to convert the amounts at the correct exchange rate.

Automatic expiry of a quote

A Sender of a payment would normally be shown the final FX rate (selected by the PSP, and possibly marked up by the FXP), before entering the details of the Recipient. To ensure a good user experience, we want the Sender to be able to complete the payment setup process without being asked to agree to a new, revised FX rate.
For this reason, FX Providers are obliged to honour a quote for exactly ten minutes (600 seconds) after it is provided to a Source PSP even if the FXP has since provided new rates.
Within the Nexus FX Service, every quote has an expiry time that is automatically set to 10 minutes after the quote is generated and returned to the Source PSP.
This 10-minute limit is intentionally set to be long enough for most Senders to be able to complete the payment setup process without having to refresh the agreed rate. The 10-minute limit is standard across all FXPs for Nexus.
FX Providers could be asked to honour quotes for a longer period of time, but this would result in them offering worse rates to allow for the greater risk of market FX rates changing before the sender completes the payment. Ten minutes is considered to be a fair trade-off between user experience for the Sender, and FX risk for the FXP.

Worked example:

TIME
EVENT
00m00s
Nexus receives and saves Rate 1 from FXP-A.
01m00s
Nexus receives a quote request on behalf of Sender A. It generates a new Quote 1A.
02m00s
Nexus receives a quote request on behalf of Sender B. It generates and replies with Quote 1B.
02m01s
Nexus receives and saves a new Rate 2, from FXP-A. This overwrites Rate 1.
02m30s
Nexus receives a quote request on behalf of Sender C. It generates and replies with Quote 2C
09m30s
Nexus receives a payment instruction from Sender A referencing Quote 1A.
Nexus checks the expiry time for Quote 1A. Since Quote 1A only expires at 11:01 (600 seconds after the quote was generated), this quote is still valid and can be honoured.
12m30s
Nexus receives another payment instruction, this time from Sender B referencing Quote 1B
Quote 1B expired at 12:01 (02:00 + 10 minutes), so this quote is no longer valid. The Source PSP must request an up-to-date quote and show this to the Sender.