API tutorials
International payments
what you will learn ✅ get an estimate of the exchange rate for a cross border payment ✅ get a list of fields required to get a valid executable quote for the payment ✅ request an executable quote ✅ send a payment if you are new to international payments we recommend you read docid 3evrgfmqc 15mblv j3cp before starting this tutorial this tutorial assumes you have a knowledge of apis and how they work for more information on sending api calls, refer to docid\ zg9cjgpbh9nmhcoit5w3a the tutorial uses these api endpoints api description docid 13bvdesrai7mgfgtl8fjf returns the estimated cost of sending an international payment, including the exchange rate docid\ tfujxiwrevywnetqogcv returns a list of country specific fields you need to submit when requesting a quote docid\ onbkgebihvb4ihvb1hakl requests an executable payment quote for sending either usd or foreign currency before actually sending funds docid\ swyrh0f0e40q1dofzmunr executes a payment quote to send funds internationally before you begin make sure you have docid\ wmg 1fqwq3bj d3c3hffs account number of the sending cross river account sending account configured by cross river to send international payments fees configured by cross river according to your signed agreement docid\ bn5xtgkjogbe ctwomcbs the following webhook event event name description international payment sent funds have been sent via a wire payment to the receivers bank send an international payment from a cross river account to send a payment cross border, you must make several api calls get an estimate of the fees and exchange rate this call gives a general idea of how much the money transfer will cost the customer we recommend you call this endpoint but it's not required determine the required fields for getting a quote for a payment to a specific country depending on the country, the required information can differ it's important to know which values you must supply for the quote call to complete without errors request a quote for the exchange this call returns a quoteid that is required to make the actual payment the quote is usually good for 30 seconds originate the payment include the quoteid to use the api to send the payment money amounts in api calls and responses are written without a decimal point between the dollars and the cents to get an exchange rate estimate call the docid 13bvdesrai7mgfgtl8fjf endpoint for this call, you must supply your cross river accountnumber , the desired currency of the received payment, and either amount in usd you plan to send ( fromamount ) or the amount in the foreign currency you want sent ( toamount ) in this example, the account number is 158560897007 , the currency is great british pounds ( gbp ), and the from amount is 10 00 usd ( 1000 ) important you must have a value for either a fromamount or a toamount , but not both sample request curl location 'https //sandbox crbcos com/international/v1/estimates?accountnumber=158560897007\¤cy=gbp\&fromamount=1000' \\ \ data '' a successful api call returns a json response with the details of the estimate this estimate is non binding and only gives you an approximate idea of what the exchange rate will be in this example, we provided the fromamount the toamount returned is 7 89 gbp at an exchange rate of 0 7889 usd to the gbp in addition, you can see that a regular transaction costs 1 29 usd while a priority transaction (swift) costs 14 00 usd sample response { "accountnumber" "158560897007", "currency" "gbp", "fromamount" 1000, "toamount" 789, "exchangerate" "0 7889", "regulartransactionfeeamount" 129, "prioritytransactionfeeamount" 1400 } to get a list of required fields for a quote call get /international/v1/meta/quote requirements for this call, you must supply values for all possible attributes none are optional in this example, we provide the following values currency gbp (great britain pounds) beneficiarycountry us (united states) bankcountrycode gb (great britain) entitytype individual (what legal entity is receiving the payment) priority if no value is supplied, the default is false meaning not via swift sample request curl location 'https //sandbox crbcos com/international/v1/meta/quote requirements?filter currency=gbp\&filter beneficiarycountrycode=us\&filter bankcountrycode=gb\&filter entitytype=individual' \\ \ data '' a successful api call returns a json response with a list of required fields/attributes you must provide values for when you call post /international/v1/quotes the attributes in the response are required for the quote that will have the parameters as defined in this request the response values describe the required responses for example, for lastname the value is ^(\[^0 9]{2,255})$ , indicating that regular expression characters are permitted, up to 255 characters maximum the bankcountrycode is gb , as provided in the request attributes regarding entities and fis refer to the beneficiary only sample response \[ { "firstname" "^(\[^0 9]{2,255})$", "lastname" "^(\[^0 9]{2,255})$", "currency" "gbp", "address" "^ {1,255}", "city" "^ {1,255}", "postalcode" "^ {1,12}$", "countrycode" "us", "routingcodetype1" "sortcode", "routingcodevalue1" "^\\\d{6}$", "bankname" "^ {1,255}", "bankcountrycode" "gb", "receiveraccountnumber" "^\\\d{8}$", "entitytype" "individual", "paymentnetwork" "regular", "priority" false } ] to request an international payment quote call post /international/v1/quotes for this call, you must supply values for the fields returned in the the get /international/v1/meta/quote requirements call sample request curl location 'https //sandbox crbcos com/international/v1/quotes' \\ \ data '{ "currency" "gbp", "accountnumber" "158560897007", "fromamount" "500", "toamount" "", "beneficiary" { "firstname" "jon", "lastname" "smith", "fullname" "jonsmith", "birthdate" "2001 06 18t13 05 09 015z", "address" "1 street", "city" "winfield", "stateprovince" "", "postalcode" "gb12345", "countrycode" "gb", "entitytype" "individual" }, "beneficiaryfi" { "bankname" "bank uk", "bankcountrycode" "gb", "bankaddress" "1 avenue", "bankaccounttype" "checking", "routingcodetype1" "sortcode", "routingcodevalue1" "123456789", "routingcodetype2" "aba", "routingcodevalue2" "123456789", "bicswift" "tgclgb99", "iban" "gb33bukb20201555555555" }, "originator" { "entityname" "cross river bank", "firstname" "", "lastname" "", "fullname" "cross river bank", "address" "885 teaneck road", "city" "teaneck", "state" "nj", "postalcode" "07666", "countrycode" "us", "entitytype" "company", "birthdate" "2008 06 23", "identificationtype" "incorporationnumber", "identificationvalue" "0400170263" }, "priority" true, "purpose" "srv" }' a successful api call returns a json response with a quote id in the id field and information about the exchange rate you need the quote id to make the payment the quote is valid for 30 seconds in this example, the quote id is 1b28600b 6fd7 4e0c bc50 b39b007a0dc2 { "id" "1b28600b 6fd7 4e0c bc50 b39b007a0dc2", "accountnumber" "158560897007", "currency" "gbp", "beneficiary" { "firstname" "jon", "lastname" "smith", "birthdate" "2001 06 18t00 00 00 04 00", "address" "1 street", "city" "winfield", "postalcode" "gb12345", "countrycode" "gb", "entitytype" "individual" }, "beneficiaryfi" { "bankname" "bank uk", "bankcountrycode" "gb", "bankaddress" "1 avenue", "bankaccounttype" "checking", "routingcodetype1" "sortcode", "routingcodevalue1" "123456789", "routingcodetype2" "aba", "routingcodevalue2" "123456789", "bicswift" "tgclgb99", "iban" "gb33bukb20201555555555" }, "originator" { "entityname" "cross river bank", "firstname" "", "lastname" "", "address" "885 teaneck road", "city" "teaneck", "state" "nj", "postalcode" "07666", "countrycode" "us", "entitytype" "company", "birthdate" "2008 06 23", "identificationtype" "incorporationnumber", "identificationvalue" "0400170263" }, "fromamount" 500, "toamount" 394, "transactionfee" 100, "conversionrate" 0 7889, "estimateddeliverydate" "2025 11 20", "expiresat" "2025 11 20t02 25 23 3897333 05 00", "status" "created", "priority" true, "paymentnetwork" "priority", "purpose" "srv" } to send an international payment call post /international/v1/payments for this call, you must supply the quote id from the id field returned in the the post /international/v1/quotes call in this example, the quote id is 1b28600b 6fd7 4e0c bc50 b39b007a0dc2 , which we received in the response you can add a client identifier if you like sample request curl location 'https //sandbox crbcos com/international/v1/payments' \\ \ data '{ "quoteid" "1b28600b 6fd7 4e0c bc50 b39b007a0dc2" }' a successful api call returns a json response with the payment id in the id field and information about the payment in this example, the payment id is 5962aa43 a31e 42e5 950d b39b007d67d6 sample response { "id" "5962aa43 a31e 42e5 950d b39b007d67d6", "partnerid" "19222b81 0e1e 452d a842 b2f1011c16f3", "productid" "57146944 b145 4326 884d b2f700ecf688", "quoteid" "1333dc9d ec3d 40f0 8a8e b39b007d581b", "fromcurrency" "usd", "tocurrency" "gbp", "fromamount" 500, "toamount" 394, "accountnumber" "158560897007", "estimateddeliverydate" "11/20/2025 12 00 00 am", "originator" { "entityname" "cross river bank", "firstname" "", "lastname" "", "fullname" "cross river bank", "address" "885 teaneck road", "city" "teaneck", "state" "nj", "postalcode" "07666", "countrycode" "us", "entitytype" "company", "birthdate" "2008 06 23", "identificationtype" "incorporationnumber", "identificationvalue" "0400170263" }, "beneficiary" { "firstname" "jon", "lastname" "smith", "fullname" "jon smith", "birthdate" "2001 06 18t00 00 00 04 00", "address" "1 street", "city" "winfield", "postalcode" "gb12345", "countrycode" "gb", "entitytype" "individual" }, "beneficiaryfi" { "bankname" "bank uk", "bankcountrycode" "gb", "bankaddress" "1 avenue", "bankaccounttype" "checking", "routingcodetype1" "sortcode", "routingcodevalue1" "123456789", "routingcodetype2" "aba", "routingcodevalue2" "123456789", "bicswift" "tgclgb99", "iban" "gb33bukb20201555555555" }, "status" "created", "purpose" "srv", "paymenttype" "transfer", "direction" "outbound", "priority" true, "feeamount" 100, "feecurrency" "usd", "source" "api", "createdat" "2025 11 20t02 36 35 2730121 05 00", "lastmodifiedat" "2025 11 20t02 36 35 2730121 05 00", "limitseligibleon" "2025 11 20t02 36 35 2730121 05 00" } when the payment completes an international payment sent webhook event fires the payment id ( 5962aa43 a31e 42e5 950d b39b007d67d6 ) provided in the response body of the payment origination request ( id ) appears in the details object of the international payment sent event sample international payment sent event { "id" "41a037c3 457e 44bb ab45 b39b007e54a0", "eventname" "international payment sent", "status" "pending", "partnerid" "19222b81 0e1e 452d a842 b2f1011c16f3", "createdat" "2024 01 08t18 30 52 247 05 00", "resources" \[ "international/v1/payments/f710a42a e03a 47b8 a415 b3050061085e" ], "details" \[ { "paymentid" "5962aa43 a31e 42e5 950d b39b007d67d6", "productid" "57146944 b145 4326 884d b2f700ecf688", "quoteid" "f710a42a e03a 47b8 a415 b3050061085e", "fromcurrency" "usd", "tocurrency" "gbp", "fromamount" 500, "toamount" 394, "feeamount" "100", "accountnumber" "158560897007", "status" "completed", "reason" null, "clientidentifier" null, "priority" "true", "payerentitytype" "individual", "companyname" null, "firstname" "sara", "lastname" "kim", "address" "250 kuhn highway", "city" "grover", "stateprovince" "rr", "postalcode" "28073", "country" "gb", "birthdate" null } ] }