Each currency zone has its own rules and norms for international transfers, so please see the Cross-border-playbook.pdf for each country you may be trying to send a cross-border payment to.
There are 3 steps to using the Cross-Border APIs:
1. Create a contact for the recipient with a Cross-Border sub-object
2. Get a quote for the destinationCurrency
3. Send the crossBorder payment within 15 minutes of the quote
Step 1: Create a cross-border contact
Before you can send a cross-border payment, you need to create a contact with a Cross-Border sub-object. If the contact already exists, you can skip to step 2.
ENDPOINT
- POST /v1/contact
REQUEST
- {
- "accountId": "{{accountId}}",
- "name": "CrossBorder Contact",
- "email": "crossborder@solidfi.com",
- "phone": "+18185551212",
- "crossBorder": {
- "beneficiaryType": "person",
- "accountNumber": "12379827892221",
- "accountType": "saving",
- "bankName": "HDFC",
- "bankCode": "0128",
- "beneficiaryRelationship": "Self",
- "beneficiaryIdentificationType": "Aadhaar",
- "beneficiaryIdentificationValue": "A12112121",
- "bankIdentifierType1": "ifsc",
- "bankIdentifierCode1": "HDFC0000128",
- "bankIdentifierType2": "",
- "bankIdentifierCode2": "",
- "address": {
- "addressType": "crossBorder",
- "line1": "HDFCBank",
- "line2": "",
- "city": "CHENNAI",
- "state": "TamilNadu",
- "country": "IN",
- "postalCode": "600002"
- }
- }
- }
RESPONSE
- {
- "id": "con-aa2c6463-566f-41b0-8a45-96009a24af58",
- "accountId": "acc-cdc4ca0a-2f1b-4c0b-9964-2339268c2d7b",
- "name": "CrossBorder Contact",
- "label": "CrossBorder Contact",
- "email": "crossborder@solidfi.com",
- "phone": "+18185551212",
- "status": "active",
- "type": "others",
- "programId": "prg-ddb08641-6565-465d-ba94-ed199497299f",
- "createdAt": "2022-12-11T19:41:04Z",
- "modifiedAt": "2022-12-11T19:41:04Z",
- "intrabank": null,
- "ach": null,
- "wire": null,
- "check": null,
- "card": null,
- "debitCard": {
- "cardNumber": "",
- "last4": "",
- "expiryMonth": "",
- "expiryYear": "",
- "address": null,
- "pull": null,
- "push": null,
- "usageType": "both"
- },
- "crossBorder": {
- "beneficiaryType": "person",
- "address": {
- "addressType": "crossBorder",
- "line1": "HDFCBank",
- "line2": "",
- "city": "CHENNAI",
- "state": "TamilNadu",
- "country": "IN",
- "postalCode": "600002"
- },
- "accountNumber": "93879827892221",
- "accountType": "saving",
- "bankName": "HDFC",
- "bankCode": "0128",
- "bankIdentifierType1": "ifsc",
- "bankIdentifierCode1": "HDFC0000128",
- "bankIdentifierType2": "",
- "bankIdentifierCode2": "",
- "beneficiaryRelationship": "Self",
- "beneficiaryIdentificationType": "Aadhaar",
- "beneficiaryIdentificationValue": "A12112121"
- },
- "metadata": null
- }
Step 2: Get a quote for the destination currency
You can request a quote by specifying the destinationCurrency and the destinationAmount.
REQUEST
- GET /v1/send/crossborder/quote?destinationCurrency=INR&destinationAmount=100
Where:
- destinationCurrency = one of the currencies supported (ex: GBP)
- destinationAmount = amount of the destinationCurrency (ex: 100.00)
RESPONSE
- {
- "id": "cbq-0f0e2331-8bb1-474b-8ac6-641566a5b14a",
- "sourceCurrency": "USD",
- "sourceAmount": "1.21",
- "destinationCurrency": "INR",
- "destinationAmount": "100.00",
- "conversionRate": "82.339320",
- "expires": "2022-12-12T17:43:11Z"
- }
In this example: To send 100 INR, the sourceAmount is USD 1.21.
In the quote API, you also get the market price for 1 quantity, in this example, 1 USD = 82.339320 INR
Step 3: Send the cross-border payment
In Step 1, you get a quoteId that is valid for 15 minutes. You can execute the Send Cross-Border inside the 15 minutes, else it times out and you'd need to request a new quote. In the request object, pass:
- contactId
- quoteId
- source accountId
- description
- purposeCode - see list of codes here
- title
ENDPOINT
- POST /v1/send/crossborder
REQUEST
- {
- "accountId": "{{accountId}}",
- "contactId": "{{contactId}}",
- "quoteId": "{{quoteId}}",
- "description": "Mandatory description",
- "purposeCode": "IR001",
- "title": "Optional transaction title"
- }
RESPONSE
- {
- "id": "tra-71aa3bd2-9d62-49bc-b664-e26b78a9717a",
- "bankName": "HDFC",
- "accountId": "acc-cdc4ca0a-2f1b-4c0b-9964-2339268c2d7b",
- "contactId": "con-aa2c6463-566f-41b0-8a45-96009a24af58",
- "name": "CrossBorderContact",
- "accountNumber": "93879827892221",
- "routingNumber": "",
- "address": {
- "addressType": "crossBorder",
- "line1": "HDFCBank",
- "line2": "",
- "city": "CHENNAI",
- "state": "TamilNadu",
- "country": "IN",
- "postalCode": "600002"
- },
- "amount": "1.21",
- "status": "pending",
- "description": "Mandatory description",
- "txnType": "debit",
- "transferType": "crossBorder",
- "transferSubType": "originated",
- "createdAt": "2022-12-12T21:25:34Z",
- "modifiedAt": "2022-12-12T21:25:34Z",
- "transferredAt": "2022-12-12T21:25:34Z",
- "accountType": "",
- "iban": "",
- "valid": "",
- "parentTransferId": "",
- "reviewCode": "",
- "reviewMessage": "",
- "type": "",
- "metadata": null,
- "title": "Optional transaction title",
- "card": null,
- "destinationAmount": "100.00",
- "destinationCurrency": "INR",
- "purposeCode": "IR001",
- "bin": ""
- }