• Documentation
  • API Reference
Overview
Guides
    Get StartedGood to KnowAccess Tokens
    Core APIs
    Alternative APIs
      ISO PaymentsPayouts (Premium)FX Connect
Other Information
Changelog
Downloads
Support
Alternative APIs

FX Connect

The FX Connect API enables you to execute cross-border payments without integrating the Payment Initiation Service (PIS), operating seamlessly on top of your own existing bank integrations. With FX Connect, you can provide your users with real-time, transparent institutional FX rates for spot and forward transactions, together with automated cross-border settlement — while continuing to use your platform's own bank connections to initiate payments.

For requests to the FX Connect API, you need an access token with scope set to paymentinitiation corporate.

Using FX Connect requires completed KYC verification on the PSU's organization. Refer to the KYC guide for information on how to implement this.

1. Create FX Quote

The first step is to create an FX quote to define the exchange rate, fees, and the validity period. FX quotes can be created for 180+ destination countries, with support for both spot and forward exchange rates (up to 30 days).

Endpoint

Code
POST /psd2/paymentinitiation/v1/fx

Request Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.

Request Body

NameTypeDescription
sourceCurrencystringThe source currency.
targetCurrencystringThe target currency.
requestedExecutionDatestring(date)The requested execution date, for future payments.
countryCodestringThe target country.
amountstringThe requested amount.
TerminalCode
curl -X POST "https://api.openbankingplatform.com/psd2/paymentinitiation/v1/fx" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 98afac01-e0bb-4aa2-95fd-0b3204f8a183" \ -d '{ "sourceCurrency": "SEK", "targetCurrency": "EUR", "requestedExecutionDate": "2025-11-10", "countryCode": "FI", "amount": "130.00" }'

Response

Code
{ "fxQuoteId": "F100000PFM", "fxRate": "11.05254986", "fee": "1.50", "totalAmount": "1440.53", "validFrom": "2025-11-09T09:36:24.0142906Z", "validTo": "2025-11-10T23:59:59.0000000Z" }

The response contains an fxQuoteId which you will need to reference in the next step.

2. Confirm Cross-Border Payment Intent

Once an FX quote has been created and accepted by the PSU, the next step is to confirm the PSU's intent to proceed with the payment. In this request, you submit the final payment instructions for the specified fxQuoteId, allowing Open Payments to prepare the currency exchange and generate the funding instructions.

Confirming the payment intent locks in the FX rate and creates a binding commitment to execute the payment at the quoted terms.

Code
PUT /psd2/paymentinitiation/v1/fx/{fxQuoteId}

Path Parameters

NameTypeDescription
fxQuoteIdstringThe ID of the FX Quote to be confirmed and locked.

Request Headers

NameTypeDescription
X-Request-IDstring(uuid)The ID of the request, unique to the call, as determined by the initiating party.
X-BicFistringThe BIC of the bank to which the request is addressed.
PSU-IDstringThe ID used to identify the PSU at the bank. Typically a local social security number or another unique login ID.
PSU-Corporate-IDstringThe Corporate ID of the PSU when acting on behalf of an organization, e.g. Org. nummer for SE, KVK for NL.

Request Body

NameTypeDescription
instructedAmountobjectThe amount and currency of the money to be transferred.
debtorAccountobjectThe account from which the payment will be debited.
creditorNamestringThe full name of the payment recipient.
creditorAccountobjectThe account to which the payment will be credited.
creditorAddressobjectThe address of the payment recipient.
creditorAgentstringThe BIC of the payment recipient's bank.
creditorAgentNamestringThe name of the payment recipient's bank.
requestedExecutionDatestring(date)The date when the payment is scheduled to be executed in ISO 8601 format, e.g. 2025-10-31.
remittanceInformationUnstructuredstringA free-text field for remittance information on the payment.
TerminalCode
curl -X PUT "https://api.openbankingplatform.com/psd2/paymentinitiation/v1/fx/F100000PFM" \ -H "Accept: application/json" \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIn0..." \ -H "Content-Type: application/json" \ -H "X-Request-ID: 004bd42c-034b-45de-8361-c043615784a6" \ -H "X-BicFi: ESSESESS" \ -H "PSU-ID: 123456789001" \ -H "PSU-Corporate-ID: 1234567890" \ -d '{ "instructedAmount": { "currency": "EUR", "amount": "130.00" }, "debtorAccount": { "iban": "SE40100100103307118608", "currency": "SEK" }, "creditorName": "Merchant 123", "creditorAccount": { "iban": "FI02100100109307118603", "currency": "EUR" }, "creditorAddress": { "street": "Example Street", "buildingNumber": "5", "city": "Helsinki", "postalCode": "10600", "country": "FI" }, "creditorAgent": "NDEAFIHH", "creditorAgentName": "Nordea Bank Abp", "requestedExecutionDate": "2026-01-01", "remittanceInformationUnstructured": "Ref Number Merchant" }'

Response

Code
{ "creditorAccount": { "iban": "SE1234500987654321001", "currency": "SEK" }, "creditorName": "Open Payments FX", "debtorAccount": { "iban": "SE40100100103307118608", "currency": "SEK" }, "instructedAmount": { "amount": "1440.53", "currency": "SEK" }, "creditorAddress": { "country": "SE" }, "remittanceInformationUnstructured": "OPESE12345", "requestedExecutionDate": "2025-11-10" }

Upon successful confirmation of the payment intent, the response returns the payment instructions for transferring the funds to Open Payments' client funds account, including a mandatory payment reference.

3. Send Funds

Once the payment instructions are returned, you must immediately initiate the funding transfer from the PSU's account to our client funds account, to be executed on the stated date. The incoming funds will be automatically reconciled and the payout will be disbursed to the ultimate beneficiary.

The provided reference is used to uniquely identify the incoming funds. Do not alter the reference or payment details, as this may prevent the funds from being matched and delay the payout.

Last modified on February 13, 2026
Payouts (Premium)Credentials
On this page
    • 1. Create FX Quote
    • 2. Confirm Cross-Border Payment Intent
    • 3. Send Funds
JSON
JSON