International Payments APIs

Cross River offers a set of APIs to enable cross border money movement for International Payments.

International Payments APIs are found in the international module of our COS sandbox.

Note

Get started with Cross River APIs.

This table presents APIs that we describe in detail.

Action

API Call

Description

Get an estimate of an exchange rate

GET /International/v1/estimates

Returns the estimated cost of sending an international payment, including the exchange rate

Get a list of fields required to request a quote

GET /International/v1/meta/quote-requirements

Returns country-specific fields you need to submit when requesting a quote

Request a quote for currency foreign exchange

POST /International/v1/quotes

Requests an executable payment quote for sending either USD or foreign currency before actually sending funds

Originate a cross border money transfer

POST /International/v1/payments

Executes a payment quote to send funds internationally

Get an exchange rate estimate

/International/v1/estimates

Returns an estimate of an exchange rate. The estimate shows the current foreign exchange rate, including spread and the transaction fee. Unlike a quote, no beneficiary data is required and the estimate cannot be executed.

The estimate is not saved in COS.

Important

You must have a value for either a fromAmount or a toAmount, but not both.

Note

Money amounts in API calls and responses are written without a decimal point between the dollars and the cents.

Query attributes

accountNumber

string

Required  

Account number of the sending CR account

currency

string

Required  

Currency the customer is converting funds into. 3-letter ISO currency code.

fromAmount

integer

Conditional 

The amount in USD to be transferred.

Leave blank if you provide a toAmount.

toAmount

integer

Conditional 

The amount in the specified currency to be received.

Leave blank if you provide a fromAmount.

conversionFeeBps

integer

Optional 

Requested fee for conversion of the funds using basis points (BPS) added onto the foreign exchange rate and earned by the COS partner into their specified account. The fee is added onto the foreign exchange rate when returned in the response. A basis point is 1/100th of a percent of the funds to be transferred.

Partners must be approved to use this attribute to earn conversion fees.

regularTransactionFeeAmount

integer

Optional 

Requested fee taken from the sending account for regular payment, earned by the COS partner into their specified account. The regular transaction fee is added onto the platform fee to get the total transaction fee.

Partners must be approved to use this attribute to earn transaction fees.

priorityTransactionFeeAmount

integer

Optional 

Requested fee taken from the sending account for priority (SWIFT) payment, earned by the COS partner into their specified account. The priority transaction fee is added onto platform fee to get the total Transaction Fee.

Partners must be approved to use this attribute to earn transaction fees.

Response attributes

accountNumber

string

Account number of the sending CR account

currency

string

Currency the customer is converting funds into. 3-letter ISO currency code.

fromAmount

integer

The amount in USD to be transferred.

Leave blank if you provide a toAmount.

toAmount

integer

The amount in the specified currency to be received.

Leave blank if you provide a fromAmount.

exchangeRate

string

The estimated conversion rate between the dollar amount and the foreign currency

regularTransactionFeeAmount

integer

Requested fee taken from the sending account for regular payment, earned by the COS partner into their specified account. The regular transaction fee is added onto the platform fee to get the total transaction fee.

Partners must be approved to use this attribute to earn transaction fees.

priorityTransactionFeeAmount

integer

Requested fee taken from the sending account for priority (SWIFT) payment, earned by the COS partner into their specified account. The priority transaction fee is added onto platform fee to get the total Transaction Fee.

Partners must be approved to use this attribute to earn transaction fees.

Back to top

Copy

Sample request

https://sandbox.crbcos.com/International/v1/estimates?request.accountNumber=2294111782&request.currency=EUR&request.fromAmount=1000
Copy
Sample response
{
  "accountNumber": "2294111782",
  "currency": "eur",
  "fromAmount": 1000,
  "toAmount": 851,
  "exchangeRate": "1.1749",
  "regularTransactionFeeAmount": 600,
  "priorityTransactionFeeAmount": 900
}                    

Get a list of fields required to request a quote

/International/v1/meta/quote-requirements

Returns the country-specific fields you need to submit when requesting a quote.

Note

Money amounts in API calls and responses are written without a decimal point between the dollars and the cents.

Query parameters

currency

string

Required  

Currency the customer is converting funds into. 3-letter ISO currency code.

beneficiaryCountry

string

Required  

Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based.

bankCountry

string

Required  

Two-letter code for the country where the beneficiary's bank account is held

entityType

string

Optional 

Legal status of the entity, whether beneficiary or originator:

  • Individual

  • Company

The default value is individual.

priority

boolean

Optional 

True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.

Response attributes

The attributes in the response are required for the quote with the parameters defined in the request for this call (except where indicated in the table below). The values provided describe the required responses. For example, for lastName the value is ^.{1,255}, indicating that the regular expression characters are permitted, up to 255 characters maximum. The bankCountry is fr, as provided in the request.

firstName

string

First name of the beneficiary of the funds. Required if entityType is individual.

lastName

string

Last name of the beneficiary of the funds. Required if entityType is individual.

companyName

string

Name of the beneficiary company. Required if entityType is company.

currency

string

Currency the customer is converting funds into. 3-letter ISO currency code.

address

string

Complete beneficiary street address.

city

string

Beneficiary city.

stateProvince

string

Beneficiary state or province

postalCode

string

Beneficiary postal or ZIP code.

countryCode

string

Two-letter ISO country code. For a company entity, the country where it's registered. For an individual, the country where they're based.

routingCodeType1

string

Local payment routing system type. If supplied, you must also give the actual code for routingCodeValue1.

  • SortCode (UK, Ireland)

  • ABA (United States)

  • BSBCode (Australia)

  • InstitutionNo

  • BankCode

  • BranchCode

  • Clabe (Mexico)

  • Cnaps (China)

  • Ifsc

routingCodeValue1

string

Routing code of the routing code typeRequired if you supply a value for routingCodeType1.

routingCodeType2

string

Sometimes certain corridors will require 2 routing codes. In that case, use this attribute for the second code type. If supplied, you must also give the actual code for routingCodeValue2.

  • SortCode (UK, Ireland)

  • ABA (United States)

  • BSBCode (Australia)

  • InstitutionNo

  • BankCode

  • BranchCode

  • Clabe (Mexico)

  • Cnaps (China)

  • Ifsc

routingCodeValue2

string

Routing code of the routing code typeRequired if you supplied a value for routingCodeType2.

bicSwift

string

BIC/SWIFT code of the beneficiary FI

iban

string

IBAN number of the beneficiary FI

bankName

string

Name of the beneficiary's bank

bankCountry

string

Two-letter code for the country where the beneficiary's bank account is held

bankAddress

string

Street address of the Beneficiary's bank

bankAccountType

string

Beneficiary bank account type:

  • Checking

  • Savings

entityType

string

Legal status of the entity, whether beneficiary or originator:

  • Individual

  • Company

The default value is individual.

priority

boolean

True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.

Back to top

Copy

Sample request

curl -X GET
--header 'Accept: application/json'
--header 'Authorization: Bearer <token>'
'https://sandbox.crbcos.com/International/v1/meta/quote-requirements?filter.currency=EUR&filter.beneficiaryCountry=fr&filter.bankCountry=fr&filter.entityType=Individual&filter.priority=false'
Copy

Sample response

{
  "firstName": "^.{1,255}",
  "lastName": "^.{1,255}",
  "currency": "EUR",
  "address": "^.{1,255}",
  "city": "^.{1,255}",
  "postalCode": "^.{1,12}$",
  "country": "fr",
  "iban": "([A-Z0-9]\\s*){15,34}",
  "bankCountry": "fr",
  "bankAccountType": "Checking",
  "entityType": "Individual",
  "priority": false
}

Request a payment quote for sending funds internationally

/International/v1/quotes

Calls an executable international payment quote that returns the cost of the transfer, including any fees and the exchange rate to a foreign currency.

Many beneficiary details are conditionally optional depending on destination country. Call GET /International/v1/meta/quote-requirements for a list of specific required parameters for your quote.

You need beneficiary details to create a quote. You use the value of the id attribute in the response (the Quote ID) to originate an international transfer. Quotes are typically valid for only 30 seconds.

Important

You must have a value for either a fromAmount or a toAmount, but not both.

bankCountry is always a required field.

Other attributes may or may not be required depending on the country and other parameters.

Note

Money amounts in API calls and responses are written without a decimal point between the dollars and the cents.

Request attributes

currency

string

Optional 

Currency the customer is converting funds into. 3-letter ISO currency code.

accountNumber

string

Required  

Account number of the sending CR account

fromAmount

integer

Conditional 

The amount in USD to be transferred.

Leave blank if you provide a toAmount.

toAmount

integer

Conditional 

The amount in the specified currency to be received.

Leave blank if you provide a fromAmount.

beneficiary

object

Conditional 

The individual or company who gets the payment

beneficiaryFi

object

Optional 

Details of the beneficiary's financial institution (where the payment goes)

priority

boolean

Optional 

True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.

conversionFeeBps

integer

Optional 

Requested fee for conversion of the funds using basis points (BPS) added onto the foreign exchange rate and earned by the COS partner into their specified account. The fee is added onto the foreign exchange rate when returned in the response. A basis point is 1/100th of a percent of the funds to be transferred.

Partners must be approved to use this attribute to earn conversion fees.

transactionFeeAmount

integer

Optional 

The requested flat fee amount for the transaction in USD earned by the COS partner into their specified account

Response attributes

id

string

The quote ID. You must use this GUID format ID when you originate a payment.

accountNumber

string

Account number of the sending CR account

currency

string

Currency the customer is converting funds into. 3-letter ISO currency code.

beneficiary

object

The individual or company who gets the payment

beneficiaryFi

object

Details of the beneficiary's financial institution (where the payment goes)

fromAmount

integer

The amount in USD to be transferred

toAmount

integer

The amount in the specified currency to be received

transactionFee

integer

Total fee. A combination of the fee charged by CR and that earned by the requesting partner, debited from the originating account

conversionRate

number

The executable conversion rate between the dollar amount and the foreign currency. The conversion rate is typically valid for only 30 seconds.

expiresAt

string

Date and time of quote expiration. Payment must be executed by the expiration to be accepted.

The date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]

status

string

Status of the quote:

  • Created

  • Executed

  • Hold

priority

boolean

True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.

Back to top

Copy

Sample request

https://sandbox.crbcos.com/International/v1/quotes
{
  "currency": "eur",
  "accountNumber": "2294111782",
  "fromAmount": 1000,
  "toAmount": 0,
  "beneficiary": {
    "firstName": "Stephen",
    "lastName": "Larson",
    "email": "stephen.larson@gmail.com",
    "birthDate": "2020-07-31",
    "address": "2406 Killarney Way",
    "city": "Paris",
    "stateProvince": "FS",
    "postalCode": "32309",
    "countryCode": "FR",
    "entityType": "Individual",
  },
  "beneficiaryFi": {
    "bankName": "BNP Paribas",
    "bankCountry": "fr",
    "bankAddress": "20 Boulevard des Italiens Paris, France",
    "bankAccountType": "Checking",
    "routingCodeType1": "Aba",
    "routingCodeValue1": "123456789",
    "routingCodeType2": "BankCode",
    "routingCodeValue2": "312322",
    "bicSwift": "SMCOGB2LXXX",
    "iban": "GB33BUKB20201555555555",
  },
  "priority": true,
}
Copy
Sample response
{
  "id": "db41e69f-29fa-41ea-973c-b0cf01721474",
  "accountNumber": "2294111782",
  "currency": "eur",
  "beneficiary": {
    "firstName": "Stephen",
    "lastName": "Larson",
    "email": "stephen.larson@gmail.com",
    "birthDate": "2020-07-31T00:00:00-04:00",
    "address": "2406 Killarney Way",
    "city": "Paris",
    "stateProvince": "FS",
    "postalCode": "32309",
    "countryCode": "FR",
    "entityType": "Individual",
  },
  "beneficiaryFi": {
    "bankName": "BNP Paribas",
    "bankCountry": "FR",
    "bankAddress": "20 Boulevard des Italiens Paris, France",
    "bankAccountType": "Checking",
    "routingCodeType1": "Aba",
    "routingCodeValue1": "123456789",
    "routingCodeType2": "BankCode",
    "routingCodeValue2": "312322",
    "bicSwift": "SMCOGB2L",
    "iban": "GB33BUKB20201555555555",
  },
  "fromAmount": 1000,
  "toAmount": 851,
  "transactionFee": 900,
  "conversionRate": 1.1749,
  "expiresAt": "2023-12-05T17:28:25.4296297-05:00",
  "status": "Created",
  "priority": true
}

Originate a international payment

/International/v1/payments

Originates a cross border money transfer.

You must get a quote ID using the Request a payment quote call. The quote ID is returned in the id field in the response to that call.

Quote IDs submitted in request are typically only valid for 30 seconds.

Note

Money amounts in API calls and responses are written without a decimal point between the dollars and the cents.

Request attributes

quoteId

string

Required  

ID in GUID format received in the response to the quote call. The quote ID is valid for a limited time, typically 30 seconds.

clientIdentifier

string

Optional 

Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.

Response attributes

id

string

Payment ID. This ID first appears as the value for this attribute in the response to the originate a payment call. This ID is in GUID format.

partnerId

string

Your ID in the CR system. This ID is in GUID format.

productId

string

ID in GUID format of your specific product type on which the account is based. Provided by CR.

quoteId

string

The ID of the quote used to execute the money transfer, found in the id field of the response to the create a payment quote call.

This ID is in GUID format.

fromCurrency

string

Currency the payment is sent in

toCurrency

string

Currency the payment is received in

fromAmount

integer

The amount in USD to be transferred

toAmount

integer

The amount in the specified currency to be received

accountNumber

string

Account number of the sending CR account

originator

object

The individual or company sending the payment

beneficiary

object

The individual or company who gets the payment

beneficiaryFi

object

Details of the beneficiary's financial institution (where the payment goes)

status

string

Status of the payment object

  • Created

  • Pending

  • Processing

  • Hold

  • Canceled

  • Completed

  • Failed

  • Rejected

reason

string

Reason for sending the payment

clientIdentifier

string

Use this attribute to add your own unique identifying string to a payment call or COS record. This attribute is useful for idempotency purposes.

paymentDate

string

The date and time of anticipated payment delivery, in the format: yyyy-mm-ddThh:mm:ss[.mmm].

Payment delivery times cannot be guaranteed.

paymentType

string

Tell you whether this is an original transfer or return payment:

  • Transfer

  • Return

priority

boolean

True if the transfer is via SWIFT. Otherwise false. If you don't supply a value, the default is false.

feeAmount

integer

Transaction fee amount

feeCurrency

string

Currency used for the fee

source

string

The source of the request to send a cross border payment:

  • Api

  • PartnerPortal

canceledAt

string

Date and time the payment was canceled.

In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]

processedAt

string

Date and time the payment was processed.

In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]

completedAt

string

Date and time the payment completed.

In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]

createdAt

string

Date and time the payment was created.

In this case, the date and time are in this format: yyyy-mm-ddThh:mm:ss[.mmm]

lastModifiedAt

string

Internal CR value. Date and time the database entry was last modified.

Back to top

Copy

Sample request

https://sandbox.crbcos.com/International/v1/payments
{
  "quoteId": "db41e69f-29fa-41ea-973c-b0cf01721474"
}
Copy
Sample response
{
  "id": "92086a97-fdbf-4cfb-a431-b0cf0172c999",
  "partnerId": "6f3e87df-e1ef-4cbf-ad89-b07c010df73d",
  "productId": "82d5af92-b7e0-4ad7-8c19-b07c01106247",
  "quoteId": "61ed7efd-8bd4-481a-9507-b0cf0172b309",
  "fromCurrency": "usd",
  "toCurrency": "eur",
  "fromAmount": 1000,
  "toAmount": 851,
  "accountNumber": "2294111782",
  "originator": {
    "firstName": "Sara",
    "lastName": "Kim",
    "address": "250 Kuhn Highway",
    "city": "Grover",
    "stateProvince": "NC",
    "postalCode": "28073",
    "countryCode": "US",
    "entityType": "Individual",
  },
  "beneficiary": {
    "firstName": "Stephen",
    "lastName": "Larson",
    "email": "stephen.larson@gmail.com",
    "birthDate": "2020-07-31",
    "address": "2406 Killarney Way",
    "city": "Paris",
    "stateProvince": "FS",
    "postalCode": "32309",
    "countryCode": "FR",
    "entityType": "Individual",
  },
  "beneficiaryFi": {
    "bankName": "BNP Paribas",
    "bankCountry": "fr",
    "bankAddress": "20 Boulevard des Italiens Paris, France",
    "bankAccountType": "Checking",
    "routingCodeType1": "Aba",
    "routingCodeValue1": "123456789",
    "routingCodeType2": "BankCode",
    "routingCodeValue2": "312322",
    "bicSwift": "SMCOGB2LXXX",
    "iban": "GB33BUKB20201555555555",
  },
  "status": "Created",
  "paymentType": "Transfer",
  "priority": true,
  "feeAmount": 900,
  "feeCurrency": "usd",
  "createdAt": "2023-12-05T17:29:59.756747-05:00",
  "lastModifiedAt": "2023-12-05T17:29:59.7723955-05:00"
}

Associated webhook events

Event Name Description

International.Hold.Cleared

Hold on payment cleared. Funds sent.

International.Hold.Escalated

Payment on hold and status escalated. Additional actions needed.

International.Payment.Sent

Funds sent via a wire payment to the receiver bank

International.Payment.Canceled

Payment canceled at partner request

International.Payment.Returned

Payment rejected by the receiving bank

Back to top

Related topics

International Payments (cross border money movement) overview

Error codes

Tutorials

How to send an international payment

 

Back to top