Fiat Transfers
Overview
The Transfers module of the Customer API facilitates the movement of funds and manages transfer-related operations with a suite of endpoints tailored to cover various functionalities:
Create Internal Fiat Transfer: This endpoint allows customers to conduct internal fund transfers between two customer asset accounts within the system. The users need to specify the source and destination account IDs, the amount to be transferred, and a reference note for the transaction.
Create External Fiat Transfer: Customers can perform external transfers from their asset account using this endpoint. It supports both domestic and international transfers, requiring information about the source account, transfer type, payee details, saved payee preferences, amount, reference note, and the purpose code for the transaction.
Create External Fiat Transfer With Originator: Customers can perform external transfers from their asset account using this endpoint. User's have the ability to set the transaction's originator, and thus affect how the sender's details appear in the receiver's account. It supports both domestic and international transfers, requiring information about the source account, transfer type, payee details, saved payee preferences, amount, reference note, and the purpose code for the transaction.
Get Purpose Codes: This endpoint provides a list of available purpose codes that are to be used for external fiat transfers. It helps in categorizing the transfer types for internal use, such as "Transfer to own account" or "Family Maintenance".
Get Reverse Inbound Transfer Details - This operation gives a user necessary details to call the POST endpoint. This includes a list of reasons for transaction reversal.
Reverse Inbound Transfer - This operation allows the user to reverse an inbound external transfer.
Lookup Bank Details: This endpoint allows customers to look up additional bank details given a SWIFT code (more lookup options coming soon).
Request FX Quote : Request quote for foreign transfers
Execute FX Quote : Execute a given foreign transfer quote
Create Internal Fiat Transfer
Make an internal fiat transfer between two customer asset accounts.
Request Headers:
- IdempotencyKey: Unique GUID value generated by user to identify subsequent retries of a request (optional)
Request body parameters:
- SourceAccountId: Source asset account id
- DestinationAccountId: Destination asset account id
- Amount: Fiat transfer amount
- Reference: Purpose of transaction
Response:
- Id : Transfer Id
Possible validation errors:
- Required
- User_Not_Found
- Invalid_Source_Account
- Invalid_Destination_Account
- Invalid_Asset : If both account's asset are different
- Insufficient_Funds
One time pass for the request
POST /api/v1/customer/transfers/fiat/createinternaltransfer HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 76
{
"sourceAccountId": 1,
"destinationAccountId": 1,
"amount": 1,
"reference": "text"
}
{
"status": "text",
"errors": [
{
"errorType": "text",
"fieldName": "text",
"messageCode": "text"
}
],
"id": 1,
"details": {
"id": 1,
"accountsId": 1,
"fromTransactionsId": 1,
"fromAccountsId": 1,
"toTransactionsId": 1,
"toAccountsId": 1,
"amount": 1,
"description": "text",
"dateTime": "2025-07-10T15:07:49.118Z",
"bPending": true
}
}
Optional Request Headers:
IdempotencyKey
: Unique GUID value generated by user to identify and avoid subsequent retries of a request (optional)
Example Request Body
{
"SourceAccountId":2141,
"DestinationAccountId":2143,
"Amount": 1000,
"Reference": "Internal Fiat Transfer Test"
}
Example Success Response
{
"id": 1008,
"status": "1",
"errors": []
}
Create External Fiat Transfer
Make an external transfer from a customer asset account, using either a Wire or ACH. Refer to Purpose Codes to categorize a transfer.
Endpoint:
/api/v3/customer/transfers/fiat/createexternaltransfer
Method:
POST
Transfer Types
Create External Fiat Transfer currently supports four different TransferTypes
. Depending on your account type, you can access the following:
Wire
- FedWire, available to US accounts.ACH
- Available to US accounts.RTP
- Realtime Domestic US Payments, also known as FedNow. Available to US accounts.SWIFT
- For international accounts.P2C
- Use only withPayeesId
set to a card-type payee.
Optional Request Headers:
IdempotencyKey
: Unique GUID value generated by user to identify and avoid subsequent retries of a request (optional)
Request Body Parameters
transmitter
Object, Required for Financial Institutions
Information relating to the transmittere of payment
transmitter.firstPartyTransfer
Boolean
True if the payment is a first party transfer. If true, other transmitter fields are not required.
transmitter.type
String
'Company' or 'Individual'
transmitter.dateOfBirth
datetime
If Transmitter type is 'Individual', date of birth is required
transmitter.name
String
Name of Transmitter
transmitter.accountNumber
String, Optional
Account Number for the Transmitter
transmitter.addressLine1
String
Address Line 1 for transmitter
transmitter.addressLine2
String, Optional
Address Line 2 for transmitter
transmitter.townCity
String
Town / City for transmitter
transmitter.state
String
State / Province for transmitter
transmitter.postcode
String
Post Code for transmitter
transmitter.countryCode
String
3 Letter Country Code for transmitter (ex. USA)
payee
Object, Required
Payee / Beneficary information
payee.payeesId
Number
Optional Payees ID of an existing payee, for sending payments to an existing payee. If provided, the other payee fields are not required.
payee.name
String
Name of Payee
payee.type
String
'Personal' or 'Company'
payee.countryCode
String
3 Letter Country Code for recieving bank (ex. USA)
payee.bankName
String
Name of Receiving Bank
payee.routingNumber
String
ABA Routing Number, not required if swiftCode is provided
payee.swiftCode
String
SWIFT Bic, not required if routingNumber is provided
payee.intermediarySwiftCode
String, Optional
Optional Intermediary Bank SWIFT Bic. Only available for SWIFT transfers.
payee.accountNumber
String
Account Number of payee
payee.accountName
String
Name of the payee's account. If unknown, use the payee name
payee.addressLine1
String
Address Line 1 for payee
payee.addressLine2
String, Optional
Address Line 2 for payee
payee.townCity
String
Town / City for payee
payee.state
String
State / Province for payee
payee.postcode
String
Post Code for payee
payee.addressCountryCode
String
3 Letter Country Code for payee (ex. USA)
bSavePayee
Boolean
True if you would like to save the payee details for future use
sourceAccountId
Number
Account ID corresponding to the account to be debited
transferType
String
Transfer rail (ex. 'SWIFT', 'Wire', etc)
amount
Number
Amount to be sent. The currency is implied by the currency of the sourceAccountId
bankFeeSplitType
String
For SWIFT transfers only, specify 'Full Bank Fee', 'Half Bank Fee', or 'No Bank Fee'. If none is provided, default is 'Half Bank Fee'
reference
String
Reference message to be sent to the receiving bank. (Limit 140 characters)
purposeCode
String, Enum
Refer to our list of Purpose Codes. Required for Wire transfers sent to an international payee.
purpose
String
If a purposeCode is not provided, you may use purpose, which is a string to specify the purpose of the payment (max 100 chars). You must provide either purpose or purposeCode, however purposeCode is required for Wire transfers sent to payees outside the USA
Transfer Purpose
External fiat transfers may require a payment purpose to be submitted in the request body. A list of applicable payment purpose codes for a particular transfer is returned from the Purpose Codes endpoint. If the purposeCode
is omitted or specified as 'Other', then you should submit a customer purpose in the purpose
field.
Note: When a purpose code is required, it will be listed in the Purpose Codes endpoint. If no purpose codes are returned from this endpoint, then purposeCode
is not required and you should specify the purpose of the payment in purpose
.
Purpose
String
Provide a string for purpose reason. Limit 100 chars. [a-z], [A-Z], [0-9]
Payee Request Parameters
When configuring a payee, you can either use payeesId
to use an existing payee, or provide payee information directly. Additionally, you can refer to the Payees API Endpoints to access various functionality such as creating, retrieving, modifying, and deleting payees.
{
...
"payee": {
// Option 1: Use payeesId to reference a Payee
"payeesId": 0,
// Option 2: Use the following fields to detail a payee
//Either Routing Number or Swift Code is available
"routingNumber": "string",
"swiftCode": "string",
"bankName": "string",
"countryCode": "string", // country code for the receiving bank
"intermediarySwiftCode":"string",
"accountNumber": "string",
"accountName": "string",
"type": "string",
"name": "string",
"addressLine1": "string",
"addressLine2": "string",
"addressCountryCode": "string",
"townCity": "string",
"state": "string",
"postcode": "string",
"addressCountryCode": "string" //country code for the payee's address
},
...
}
Transmitter Information
Financial Institutions are required to submit information regarding the transmitter of a payment. You can submit this information in the transmitter object. For transactions that are first party transfer, you can specify firstPartyTransfer: true
Third Party Payment Example
{
...
"transmitter": {
"firstPartyTransfer": false,
"name": "John Doe",
"type": "Company",
"dateOfBirth": "1990-10-08T00:00:00.000Z"
"accountNumber": "1234567890",
"addressLine1": "123 Main St",
"addressLine2": "Unit 1A",
"townCity": "Cityville",
"state": "WY",
"postcode": "12345",
"countryCode": "USA"
},
...
}
First Party Payment Example
{
...
"transmitter": {
"firstPartyTransfer": true
},
...
}
Example Request Body
The format of the request body is different between Domestic USA transfers and international transfers. Refer to the following examples for reference:
Domestic Wire Transfer Request Body
{
"sourceAccountId":2141,
"transferType": "Wire",
"payee":{
"countryCode":"USA",
"bankName": "ABC Bank",
"routingNumber":"125000105",
"accountNumber":"2140632999",
"accountName":"Test account",
"type":"Personal",
"name":"Test Account",
"addressLine1":"123 Main St",
"townCity":"New York",
"state":"NY",
"postcode":"10001",
"addressCountryCode": "USA"
},
"bSavePayee":true,
"amount": 100,
"reference": "Test Transfer",
"purposeCode" : "PUC002"
}
International Swift Transfer Request Body
International transfers utilize the SWIFT
TransferType. Customers can specify the BankFeeSplitType
, which enables a customer to decide the bearer of bank charges. You can choose between the following values for BankFeeSplitType
:
"Full Bank Fee"
- This option is known as 'OURS'"Half Bank Fee"
- This option is known as 'SHA'"No Bank Fee"
- This option is known as 'BEN'
{
"sourceAccountId": 2141,
"transferType": "SWIFT",
"bankFeeSplitType": "Full Bank Fee",
"transmitter": {
"firstPartyTransfer": false,
"name": "John Doe",
"accountNumber": "1234567890",
"addressLine1": "123 Main St",
"addressLine2": "Unit 1A",
"townCity": "Cityville",
"state": "WY",
"postcode": "12345",
"countryCode": "USA",
"type": "Individual",
"dateOfBirth": "1990-10-08T00:00:00.000Z"
},
"payee": {
"countryCode": "SGP",
"bankName": "ABC Bank",
"swiftCode": "DBSSSGSG",
"intermediaryBic":"XXXX",
"accountNumber": "12342346545123",
"accountName": "Checking Account",
"type":"Company",
"name": "Sample Company LLC",
"addressLine1": "62 UBI road 1",
"townCity": "Oxley Bizhub 2",
"postcode": "408734",
"addressCountryCode": "SGP"
},
"bSavePayee": true,
"amount": 50,
"reference": "Transaction reference to be sent to beneficiary (140 chars)",
"purpose": "Purpose of the transfer (100 chars)"
}
Example Success Response
{
"id": 22026,
"details": {
"id": 30939,
"accountsId": 2141,
"fromTransactionsId": null,
"fromAccountsId": null,
"toTransactionsId": null,
"toAccountsId": null,
"amount": -10,
"description": "External transfer - Family Maintenance",
"dateTime": "2024-02-15T17:05:09.97+00:00",
"bPending": true
},
"status": "1",
"errors": []
}
Create External Fiat Transfer With Originator
Make an external transfer with a user defined originator from a customer asset account, using either a Wire or ACH. Refer to Purpose Codes to categorize a transfer.
Transfer Types
Create External Fiat Transfer currently supports four different TransferTypes
. Depending on your account type, you can access the following:
Wire
- FedWire, available to US accounts.ACH
- Available to US accounts.RTP
- Realtime Domestic US Payments, also known as FedNow. Available to US accounts.SWIFT
- For international accounts.P2C
- Use only withPayeesId
set to a card-type payee.
Optional Request Headers:
IdempotencyKey
: Unique GUID value generated by user to identify and avoid subsequent retries of a request (optional)
Request Body Parameters
transmitter
Object, Required for Financial Institutions
Information relating to the transmittere of payment
transmitter.firstPartyTransfer
Boolean
True if the payment is a first party transfer. If true, other transmitter fields are not required.
transmitter.name
String
Name of Transmitter
transmitter.accountNumber
String, Optional
Account Number for the Transmitter
transmitter.addressLine1
String
Address Line 1 for transmitter
transmitter.addressLine2
String, Optional
Address Line 2 for transmitter
transmitter.townCity
String
Town / City for transmitter
transmitter.state
String
State / Province for transmitter
transmitter.postcode
String
Post Code for transmitter
transmitter.countryCode
String
3 Letter Country Code for transmitter (ex. USA)
payee
Object, Required
Payee / Beneficary information
payee.payeesId
Number
Optional Payees ID of an existing payee, for sending payments to an existing payee. If provided, the other payee fields are not required.
payee.name
String
Name of Payee
payee.type
String
'Personal' or 'Company'
payee.countryCode
String
3 Letter Country Code for recieving bank (ex. USA)
payee.bankName
String
Name of Receiving Bank
payee.routingNumber
String
ABA Routing Number, not required if swiftCode is provided
payee.swiftCode
String
SWIFT Bic, not required if routingNumber is provided
payee.intermediarySwiftCode
String, Optional
Optional Intermediary Bank SWIFT Bic. Only available for SWIFT transfers.
payee.accountNumber
String
Account Number of payee
payee.accountName
String
Name of the payee's account. If unknown, use the payee name
payee.addressLine1
String
Address Line 1 for payee
payee.addressLine2
String, Optional
Address Line 2 for payee
payee.townCity
String
Town / City for payee
payee.state
String
State / Province for payee
payee.postcode
String
Post Code for payee
payee.addressCountryCode
String
3 Letter Country Code for payee (ex. USA)
bSavePayee
Boolean
True if you would like to save the payee details for future use
originator
Object
Information relating to the originator
originator.companyId
String
Company ID of the originator
originator.name
String
Name of Orignator
originator.AddressLine1
String
Address line 1 for originator
originator.AddressLine2
String
Address line 2 for originator
originator.AddressLine3
String
Address line 3 for originator
originator.Data
String
Additional data to be sent with Originator Information
sourceAccountId
Number
Account ID corresponding to the account to be debited
transferType
String
Transfer rail (ex. 'SWIFT', 'Wire', etc)
amount
Number
Amount to be sent. The currency is implied by the currency of the sourceAccountId
bankFeeSplitType
String
For SWIFT transfers only, specify 'Full Bank Fee', 'Half Bank Fee', or 'No Bank Fee'. If none is provided, default is 'Half Bank Fee'
reference
String
Reference message to be sent to the receiving bank. (Limit 140 characters)
purposeCode
String, Enum
The list of applicable purpose codes for a transfer can vary, depending on the sending bank and the receiving country. Before making a transfer, a call should be made to the Purpose Codes Endpoint to get a list of acceptable purpose codes. If no purpose codes are returned by this endpoint, then a purpose code need not be provided for this transfer, but a purpose should be provided in the purpose
field, in such a case.
purpose
String
If a purpose code is not required, you should specify the purpose of the payment here (max 100 chars). If the purpose code corresponding to 'Other' is used, then the custom purpose must be provided here.
Payee Request Parameters
When configuring a payee, you can either use payeesId
to use an existing payee, or provide payee information directly. Additionally, you can refer to the Payees API Endpoints to access various functionality such as creating, retrieving, modifying, and deleting payees.
{
...
"payee": {
// Option 1: Use payeesId to reference a Payee
"payeesId": 0,
// Option 2: Use the following fields to detail a payee
//Either Routing Number or Swift Code is available
"routingNumber": "string",
"swiftCode": "string",
"bankName": "string",
"countryCode": "string",
"intermediarySwiftCode":"string",
"accountNumber": "string",
"accountName": "string",
"type": "string",
"name": "string",
"addressLine1": "string",
"addressLine2": "string",
"addressCountryCode": "string",
"townCity": "string",
"state": "string",
"postcode": "string"
},
...
}
Transmitter Information
Financial Institutions are required to submit information regarding the transmitter of a payment. You can submit this information in the transmitter object.
Third Party Payment Example
{
...
"transmitter": {
"firstPartyTransfer": false,
"name": "John Doe",
"accountNumber": "1234567890",
"addressLine1": "123 Main St",
"addressLine2": "Unit 1A",
"townCity": "Cityville",
"state": "WY",
"postcode": "12345",
"countryCode": "USA"
},
...
}
First Party Payment Example
{
...
"transmitter": {
"firstPartyTransfer": true
},
...
}
Originator Request Parameters
The settable parameters for the originator depend on whether the transfer is a Wire or an ACH transfer.
{
...
"Originator":{
//Required for ACH transfers
"CompanyId":"string",
//Required
"Name":"string",
//Optional for Wire transfers. Must be null for ACH transfers
"AddressLine1":"string",
//Optional for Wire transfers. Must be null for ACH transfers
"AddressLine2":"string",
//Optional for Wire transfers. Must be null for ACH transfers
"AddressLine3":"string",
//Optional for ACH transfers. Must be null for Wire transfers
"Data":"string"
},
...
}
Example Request Body
The format of the request body is different between Domestic USA transfers and international transfers. Refer to the following examples for reference:
Domestic Wire Transfer Request Body
{
"SourceAccountId":2141,
"TransferType":"Wire",
"Payee":{
"CountryCode":"USA",
"RoutingNumber":"125000105",
"AccountNumber":"2140632999",
"AccountName":"Test account",
"Type":"Personal",
"Name":"Test Account",
"AddressLine1":"1 TestAddress",
"TownCity":"TestTown",
"State":"TestCounty",
"Postcode":"N19AA",
"addressCountryCode": "GBR"
},
"Originator":{
"CompanyId":null,
"Name":"Test name",
"AddressLine1":"street address",
"AddressLine2":"town",
"AddressLine3":"country",
"Data":null
},
"bSavePayee":true,
"Amount": 10,
"Reference": "Test Transfer",
"PurposeCode" : "PUC002"
}
International Wire Transfer Request Body
{
"SourceAccountId": 2141,
"TransferType": "Wire",
"Payee": {
"CountryCode": "SGP",
"SwiftCode": "DBSSSGSG",
"IntermediaryBic":"XXXX",
"AccountNumber": "12342346545123",
"AccountName": "Sebi Scaria",
"Type":"Company",
"Name": "Sebi Scaria",
"AddressLine1": "62 UBI road 1",
"TownCity": "Oxley Bizhub 2",
"Postcode": "408734",
"addressCountryCode": "SGP"
},
"Originator":{
"CompanyId":null,
"Name":"Test name",
"AddressLine1":"street address",
"AddressLine2":"town",
"AddressLine3":"country",
"Data":null
},
"bSavePayee":true,
"Amount": 50,
"Reference": "Test Transfer",
"PurposeCode": "PUC002"
}
Example Success Response
{
"id": 22026,
"details": {
"id": 30939,
"accountsId": 2141,
"fromTransactionsId": null,
"fromAccountsId": null,
"toTransactionsId": null,
"toAccountsId": null,
"amount": -10,
"description": "External transfer - Family Maintenance",
"dateTime": "2024-02-15T17:05:09.97+00:00",
"bPending": true
},
"status": "1",
"errors": []
}
Get Purpose Codes
Get list of available purpose codes to be used for external fiat transfer.
Response: Array of
- Code: Purpose Code
- Description: Purpose Description
One time pass for the request
GET /api/v2/customer/transfers/purpose-codes HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Accept: */*
{
"id": 1,
"details": {
"purposeCodes": [
{
"code": "text",
"description": "text"
}
]
},
"status": "text",
"errors": [
{
"fieldName": "text",
"messageCode": "text"
}
]
}
Example Success Response
{
"id": 0,
"details": {
"purposeCodes": [
{
"code": "PUC001",
"description": "Transfer to own account"
},
{
"code": "PUC002",
"description": "Family Maintenance"
}]
},
"pageSize": 10,
"pageNumber": 1,
"status": "1",
"errors": []
}
Query Parameters
customerAssetAccountsId
(Integer) - The ID of the source account making the external fiat transfer (REQUIRED),payeesId
(Integer) - The ID of the payee in the external fiat transfer. Required ifcountryCode
is not specified, optional otherwise.countryCode
(String) - The country code of the payee in ISO/ISO2 format. Required ifpayeesId
is not specified, optional otherwise.
Get Reverse Inbound Transfer Details
This operation gives the user necessary details to call the POST endpoint to reverse an inbound transfer.
Endpoint:
/api/v1/customer/accounts/reverse-inbound-transfer
Method: GET
One time pass for the request
GET /api/v1/customer/accounts/reverse-inbound-transfer HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Accept: */*
{
"status": "text",
"errors": [
{
"errorType": "text",
"fieldName": "text",
"messageCode": "text"
}
],
"id": 1,
"details": {
"purposes": [
{
"id": 1,
"name": "text"
}
]
}
}
Query Parameters:
customersId
(Integer): The ID of the customer account from which the withdrawal is to be made.
Response Body Parameters:
id
(Integer): A reference ID for the transaction; not used in the example.details.purposes
(JSON Array): List of possible purposes for reversal.details.purposes.id
(Integer): The ID of the purpose.details.purposes.name
(String): Description of the purpose.
Success Response Example:
{
"id": 0,
"details": {
"purposes": [
{
"id": 1000,
"name": "Unable to Identify Beneficiary"
},
{
"id": 1001,
"name": "Unexpected Transaction"
},
{
"id": 1002,
"name": "Transaction Not Allowed"
},
{
"id": 1003,
"name": "Other"
}
]
},
"status": "1",
"errors": []
}
Reverse Inbound Transfer
This operation allows the user to reverse an inbound transfer.
Endpoint:
/api/v1/customer/accounts/reverse-inbound-transfer
Method: POST
One time pass for the request
POST /api/v1/customer/accounts/reverse-inbound-transfer HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 71
{
"customersId": 1,
"transactionId": 1,
"purposeId": 1,
"purposeOther": "text"
}
{
"status": "text",
"errors": [
{
"errorType": "text",
"fieldName": "text",
"messageCode": "text"
}
],
"id": 1
}
Request Body Parameters:
customersId
(Integer): The ID of the customer account from which the withdrawal is to be made.
Request Example:
{
"customersId":2036,
"transactionId":18410,
"purposeId":1001,
"purposeOther":null
}
Response Body Parameters:
id
(Integer): A reference ID for the transaction; not used in the example.details.transactionId
(JSON Array): Id of the transaction being reversed.
Success Response Example:
{
"id": 0,
"details": {
"transactionId": 18410
},
"status": "1",
"errors": []
}
Lookup Bank Details
This endpoint allows customers to look up additional bank details given a SWIFT code (more lookup options coming soon).
Request body parameters:
- SWIFTCode: Bank SWIFT Code
Response:
- BankName: Banking Institution Name
Possible validation errors:
- Required
- Not_Found: no banking institution could be found for the input data
One time pass for the request
GET /api/v1/customer/transfers/lookupbankdetails HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Accept: */*
{
"status": "text",
"errors": [
{
"errorType": "text",
"fieldName": "text",
"messageCode": "text"
}
],
"id": 1,
"details": {
"bankName": "text",
"swiftCode": "text",
"iban": "text",
"bankAddress": "text",
"bankPostCode": "text",
"bankBranchName": "text",
"bankCountryISO3": "text",
"bankCountryName": "text",
"bankCity": "text"
}
}
Request FX Transfer Quote
This operation request a quote for a foreign transfer with either source amount or destination amount and returns the estimated source and destination amounts with the quote id.
Endpoint:
/api/v1/customer/transfers/fx-request-quote
Method: POST
Request body parameters:
- CustomerAssetAccountsId: Source asset account id
- PayeesId : Payee id
- SourceAmount : Source amount
- DestinationAmount : Destination amount
- TransferType: Wire Or ACH
Response:
- commandSourceAmount : Given source amount
- commandDestinationAmount : Given destination amount
- estimateSourceAmount : Estimated source amount
- estimateDestinationAmount : Estimated destination amount
- fxFeePercentage : FX Fee percentage
- exchangeFeeAmount : Exchange fee amount
- estimateTotalSourceAmount : Estimated total source amount
- estimateTotalDestinationAmount : Estimated total destination amount
- quotedFXRate : Quoted FX rate
- quotedFXRateID : Quoted FX rate ID
- quotedFxRateExpiry : Quoted FX rate expiry
Possible validation errors:
- Required
- User_Not_Found
- Invalid_TransferType
- Invalid_PayeesId
- Both source amount and destination amount should not be specified.
- Either source amount and destination amount should be required
One time pass for the request
POST /api/v1/customer/transfers/fx-request-quote HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 103
{
"customerAssetAccountsId": 1,
"payeesId": 1,
"sourceAmount": 1,
"destinationAmount": 1,
"transferType": "Wire"
}
{
"id": 1,
"details": {
"commandSourceAmount": 1,
"commandDestinationAmount": 1,
"estimateSourceAmount": 1,
"estimateDestinationAmount": 1,
"fxFeePercentage": 1,
"exchangeFeeAmount": 1,
"estimateTotalSourceAmount": 1,
"estimateTotalDestinationAmount": 1,
"quotedFXRate": "text",
"quotedFXRateID": 1,
"quotedFxRateExpiry": "2025-07-10T15:07:49.118Z"
},
"status": "text",
"errors": [
{
"fieldName": "text",
"messageCode": "text"
}
]
}
Request Example:
{
"SourceAmount": "10",
"PayeesId": 4451,
"PurposeCode": "PUC002",
"Reference": "REF16149",
"CustomerAssetAccountsId": 14259,
"TransferType": "Wire"
}
Success Response Example:
{
"id": 1,
"details": {
"commandSourceAmount": 10.0,
"commandDestinationAmount": null,
"estimateSourceAmount": 10.0,
"estimateDestinationAmount": 9.48,
"fxFeePercentage": 0.200,
"exchangeFeeAmount": 0.24,
"estimateTotalSourceAmount": 10.0,
"estimateTotalDestinationAmount": 9.24,
"quotedFXRate": "0.947601",
"quotedFXRateID": 1247,
"quotedFxRateExpiry": "2024-12-11T10:39:51.154Z"
},
"status": "1",
"errors": []
}
Execute FX Transfer
This operation execute a given FX transfer quote .
Endpoint:
/api/v1/customer/transfers/executefxtransfer
Method: POST
Request Headers:
- IdempotencyKey: Unique GUID value generated by user to identify subsequent retries of a request
Request body parameters: ///
- CustomerAssetAccountsId: Source asset account id
- PayeesId : Payee id
- FxRateId : Quoted FX rate ID
- TransferType: Wire Or ACH
- PurposeCode : Purpose code for Fx transfer
- Purpose: Other Purpose of transaction
- Reference: Reference ( FBO accounts, this should be reference to identify the account)
- BeneficiaryReference : Beneficiary reference
Response:
- Id : Transfer Id
- accountsId: Account Id
- fromTransactionsId : From transaction Id
- fromAccountsId : From account Id
- toTransactionsId : To transaction Id
- toAccountsId : To account Id
- amount : Transfer amount
- description : Transfer description
- dateTime : Transfer date time
- bPending : Pending status
- transmitterId : Transmitter Id
Possible validation errors:
- Required
- User_Not_Found
- Invalid_TransferType
- International_Transfer_Not_Allowed
- Invalid_PayeesId
- Invalid_Country
- Invalid_Currency
- Invalid_Source_Account
- Insufficient_Funds
One time pass for the request
^[A-Za-z0-9^ !_\-@'`()#""*\]+{}|~$%&,:.-\\]+$
^[A-Za-z0-9^ !_\-@'`()#""*\]+{}|~$%&,:.-\\]+$
POST /api/v1/customer/transfers/executefxtransfer HTTP/1.1
Host:
Authorization: YOUR_API_KEY
otp: text
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 440
{
"customerAssetAccountsId": 1,
"transferType": "Wire",
"payeesId": 1,
"fxRateId": 1,
"reference": "text",
"beneficiaryReference": "text",
"purposeCode": "text",
"purpose": "text",
"bankFeeSplitType": "text",
"transmitter": {
"firstPartyTransfer": true,
"name": "text",
"accountNumber": "text",
"addressLine1": "text",
"addressLine2": "text",
"townCity": "text",
"state": "text",
"postcode": "text",
"countryCode": "text",
"type": "text",
"dateOfBirth": "2025-07-10T15:07:49.118Z"
}
}
{
"id": 1,
"details": {
"id": 1,
"accountsId": 1,
"fromTransactionsId": 1,
"fromAccountsId": 1,
"toTransactionsId": 1,
"toAccountsId": 1,
"amount": 1,
"description": "text",
"dateTime": "2025-07-10T15:07:49.118Z",
"bPending": true,
"transmitterId": "text"
},
"status": "text",
"errors": [
{
"fieldName": "text",
"messageCode": "text"
}
]
}
Optional Request Headers:
IdempotencyKey
: Unique GUID value generated by user to identify and avoid subsequent retries of a request (optional)
Request Example:
{
"CustomerAssetAccountsId": 14259,
"TransferType": "Wire",
"PayeesId": 4451,
"FxRateId":1247,
"Reference": "REF16149",
"BeneficiaryReference": "REF16149",
"PurposeCode": "PUC002"
}
Success Response Example:
{
"id": 61825,
"details": {
"id": 61825,
"accountsId": 14259,
"fromTransactionsId": null,
"fromAccountsId": null,
"toTransactionsId": null,
"toAccountsId": null,
"amount": -10.000000000000000000,
"description": "USD International Transfer",
"dateTime": "2024-12-10T10:40:10.06+00:00",
"bPending": true,
"transmitterId": "CST10024-4451"
},
"status": "1",
"errors": []
}
Last updated