Money Transfers FX
Overview
Money Transfer quotes can be created for multiple applications, whether you need to pay a client, transfer cash to a relative in another country, or simply buy currency for your own purposes.
Currencies
Customers looking to make Money Transfers, benefit from 6 Main currencies that can be paired with 29 Exchange currencies.
Main Currencies
There are 6 Main currencies available to Money Transfer accounts. To list them, call the GET - Retrieve Main Currencies for Money Transfers
endpoint. These include:
Currency | Code | Name |
---|---|---|
AUD | 36 | Australian Dollar |
CAD | 124 | Canadian Dollar |
EUR | 978 | Euro |
GBP | 826 | British Pound Sterling |
NZD | 554 | New Zealand Dollar |
USD | 840 | US Dollar |
Exchange Currencies
There are 29 Exchange Currencies available for Money Transfer accounts to purchase. To list them, call the GET - Retrieve Exchange Currencies for Money Transfers
endpoint. These include:
Currency | Code | Name |
---|---|---|
AUD | 36 | Australian Dollar |
GBP | 826 | British Pound Sterling |
BGN | 975 | Bulgarian Lev |
CAD | 124 | Canadian Dollar |
CZK | 203 | Czech Koruna |
DKK | 208 | Danish Krone |
EUR | 978 | Euro |
HKD | 344 | Hong Kong Dollar |
HUF | 348 | Hungarian Forint |
INR | 356 | Indian Rupee |
ILS | 376 | Israeli New Shekel |
JPY | 392 | Japanese Yen |
KES | 404 | Kenyan Shilling |
KWD | 414 | Kuwaiti Dinar |
MAD | 504 | Moroccan Dirham |
NZD | 554 | New Zealand Dollar |
NOK | 578 | Norwegian Krone |
PLN | 985 | Polish Zloty |
QAR | 634 | Qatari Riyal |
OMR | 512 | Rial Omani |
SAR | 682 | Saudi Riyal |
SGD | 702 | Singapore Dollar |
ZAR | 710 | South African Rand |
SEK | 752 | Swedish Krona |
CHF | 756 | Swiss Franc |
THB | 764 | Thai Baht |
TRY | 949 | Turkish Lira |
AED | 784 | UAE Dirham |
USD | 840 | US Dollar |
Rates
Rates enable you to display the exchange rate for the currencies you wish to convert.
In the following excerpts, we discuss the options available in a bit more detail and provide examples for these concepts.
Trade Main Currency into Exchange Currency
In the example request below, we demonstrate how much we have to spend in the Main currency to buy a specific Exchange currency. 926.72GBP is used as the Main currency to calculate the rate into ourExchange currency - CHF. To get a Money Transfer rate using this method follow the steps below:
- Call the
POST - Display Rates from Main currency to Exchange currency.
endpoint. - Enter the
CcyCode
. The Exchange currency to acquire. - Enter the
sellccycode
. The Main currency being used to pay for the exchange. - Enter the
Amount
. The amount in the Main currency.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/rates/trade/sell' \
--header 'authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"CcyCode":"CHF",
"sellccycode": "GBP",
"Amount":926.72,
}'
RESPONSE
{
"Content": {
"Model": {
"IsEnhancedRate": false,
"BuyAmount": 1000.73,
"BuyCurrency": "CHF",
"BuyDesc": "Swiss Franc",
"BuySymbol": "CHF",
"SellAmount": 926.72,
"SellCurrency": "GBP",
"SellDesc": "British Pound Sterling",
"SellSymbol": "£",
"ExchangeRate": 1.0799,
"ChannelType": 38,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": "20231117.1",
"TokenStartDate": "2023-11-21T00:00:00",
"TokenEndDate": "2023-12-21T00:00:00",
"LoginTimestamp": "2023-12-06T11:41:23.3089019",
"ApiLoginType": 1,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Trade Exchange Currency into Main Currency
In the example request below, we demonstrate how, by entering 1000CHF as our Exchange currency, the conversion rate means we pay a total of 926.45GBP in our Main currency to execute the trade. To get a rate using this method, follow the steps below:
- Call the
POST - Display Rates from Exchange currency to Main currency.
endpoint. - Enter the
CcyCode
. The Exchange currency. - Enter the
Amount
. The target amount to purchase in the Exchange currency. - Enter the
SellCcyCode
. The Main currency to be used to execute the trade.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/rates/trade/buy' \
--header 'authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"CcyCode": "CHF",
"Amount": 1000,
"SellCcyCode": "GBP"
}'
RESPONSE
{
"Content": {
"Model": {
"IsEnhancedRate": false,
"BuyAmount": 1000.0,
"BuyCurrency": "CHF",
"BuyDesc": "Swiss Franc",
"BuySymbol": "CHF",
"SellAmount": 926.45,
"SellCurrency": "GBP",
"SellDesc": "British Pound Sterling",
"SellSymbol": "£",
"ExchangeRate": 1.0794,
"ChannelType": 38,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": "20231117.1",
"TokenStartDate": "2023-11-21T00:00:00",
"TokenEndDate": "2023-12-21T00:00:00",
"LoginTimestamp": "2023-12-06T11:41:23.3089019",
"ApiLoginType": 1,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Quotes
ChannelType
When creating a Money Transfer quote, there are two options available to process the request, described in the table below. Depending on the value set, the POST - Currency Balance IP
endpoint accepts two different payloads.
Name | Value | Description |
---|---|---|
Buy and Send | 0 | Credits funds to the account after purchasing a quote within the 5 minute allocation, and enables transfer of funds to be sent to a beneficiary on a specific date. |
Buy and Hold | 1 | Credits funds to the account after purchasing a quote within the 5 minute allocation. |
Trade Exchange Currency into Main Currency
When you wish to create a quote using this method, the input amount is the Exchange currency you wish to purchase, and the output is the amount to pay in the Main currency. E.g. To buy 1000CHF the cost is 926.72 GBP.*
To get a Money Transfer quote using this method:
- Call the
POST - Create a Quote by Trading an Exchange currency into a Main currency.
endpoint. - Enter the
CcyCode
. The Exchange currency to acquire. - Enter the
Amount
. The amount of Exchange currency to acquire. - Enter the
SellCcyCode
. The Main currency being used to pay for the exchange. - Enter the
ChannelType
. Buy and Send or Buy and Hold. - A successful response returns a
QuoteId
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api//quotes/trade/buy' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
--data '{
"CcyCode":"CHF",
"Amount": 1000,
"SellCcyCode": "GBP",
"ChannelType": 0
}'
RESPONSE
{
"Content": {
"Model": {
"QuoteId": 1369730,
"RequestedOn": "2023-12-06T11:55:12.6672363Z",
"ExpiresOn": "2023-12-06T12:00:12.6672363Z",
"IsEnhancedRate": false,
"BuyAmount": 1000.0,
"BuyCurrency": "CHF",
"BuyDesc": "Swiss Franc",
"BuySymbol": "CHF",
"SellAmount": 926.72,
"SellCurrency": "GBP",
"SellDesc": "British Pound Sterling",
"SellSymbol": "£",
"ExchangeRate": 1.0791,
"ChannelType": 37,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Trade Main Currency into Exchange Currency
Conversely, when you wish to create a quote to find out how much you have to spend in Main currency to get a particular Exchange currency, you can use this alternative method. E.g. Spend 926.72 GBP and receive 1000 CHF.*
To get a Money Transfer quote using this method:
- Call the
POST - Create a Quote by Trading a Main currency into an Exchange currency.
endpoint. - Enter the
CcyCode
. The Main currency being used to fund the exchange. - Enter the
Amount
. The Main currency amount to fund the exchange, - Enter the
SellCcyCode
. The Exchange currency to acquire. - Enter the
ChannelType
. Buy and Send or Buy and Hold. - A successful response returns a
QuoteId
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api//quotes/trade/sell' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
--data '{
"SellCcyCode": "GBP",
"Amount": 926.72,
"CcyCode":"CHF",
"ChannelType": 0
}'
RESPONSE
{
"Content": {
"Model": {
"QuoteId": 1369738,
"RequestedOn": "2023-12-06T12:13:05.9914492Z",
"ExpiresOn": "2023-12-06T12:18:05.9914492Z",
"IsEnhancedRate": false,
"BuyAmount": 1000.19,
"BuyCurrency": "CHF",
"BuyDesc": "Swiss Franc",
"BuySymbol": "CHF",
"SellAmount": 926.72,
"SellCurrency": "GBP",
"SellDesc": "British Pound Sterling",
"SellSymbol": "£",
"ExchangeRate": 1.0793,
"ChannelType": 37,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Execution
Payments for quotes can be made using a currency balance or via Bank Transfer.
Initiate a Payment Request for a Quote via Currency Balance or Bank Transfer
Quote Types
Quotes are executed depending on the QuoteType set. A quote can be bought and sent directly to a beneficiary or bought and held in the account. In the following sections we expand these concepts in a bit more detail, and demonstrate how these two options are carried out.
Option 1 - Buy and Send (0)
Buy and Send is selected when the ChannelType is set to 0:
- Call the
POST - Initiate a Payment Request via Currency Balance for Money Transfers.
orPOST - Initiate a Payment Request via Bank Transfer
endpoint depending on the payment method preference. - Enter the corresponding values for the request body below.
- Note that Beneficiaries within specific countries may need a purpose code.
- A successful response returns a
ShopOrderId
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/payments/currency-bank/international-payment' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
--data '{
"QuoteId": 1365679,
"BeneficiaryId": 12345,
"TransferAmount": 200.00,
"PaymentReference": "Studies",
"TransferReason":"1",
}'
RESPONSE
Note how the ShopOrderId
is created on line 4.
{
"Content": {
"Model": {
"ShopOrderId": "3f66386a-e866-47d5-83d3-d64a67d0e1a5",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Option 2 - Buy and Hold (1)
Buy and Hold is selected when the ChannelType is set to 1:
- Call the
POST - Initiate a Payment Request via Currency Balance.
endpoint. - Enter the corresponding values for the request body below.
- For
TransferAmount
enter0.00
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/payments/currency-bank/international-payment' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
--data '{
"QuoteId": 1365689,
"TransferAmount": 0.00,
"PaymentReference": "Studies",
"TransferReason":"1",
}'
RESPONSE
Note how the ShopOrderId
is created on line 4.
{
"Content": {
"Model": {
"ShopOrderId": "3aa8aa81-971e-469e-9847-dfdc5b48e57f",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Process a Payment Request
- To process a Money Transfer quote being paid via Currency Balance call
POST - Process a Currency Balance Payment Request
.- Alternatively, to process a Money Transfer quote being paid via Bank Transfer call
POST - Process a Bank Transfer Payment Request
.
- Alternatively, to process a Money Transfer quote being paid via Bank Transfer call
- Enter the
ShopOrderId
. - A successful response returns a
PaymentProcessId
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/payments/currency-bank/process' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
--data '{
"ShopOrderId":"3aa8aa81-971e-469e-9847-dfdc5b48e57f"
}'
RESPONSE
{
"Content": {
"Model": {
"PaymentProcessId": "3aa8aa81-971e-469e-9847-dfdc5b48e57f",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
Get a Payment Request Status Update
To find out the status of a specific load, using currency balance or bank transfer as the payment method, follow the steps below.
- For Currency Balance payments, call
POST - Display Quote Status for Currency Loads
endpoint.- For Bank Transfer payments, call
POST - Quote Status for Bank Transfers
- For Bank Transfer payments, call
- Enter the
ShopOrderId
.
REQUEST
curl --location 'https://caxapi-integration.azurewebsites.net/api/payments/currency-bank/status?shopOrderId=3aa8aa81-971e-469e-9847-dfdc5b48e57f' \
--header 'authorization: Bearer <access_token>' \
--header 'UserApiToken: <userapitoken>' \
--header 'Content-Type: application/json' \
RESPONSE
{
"Content": {
"Model": {
"PaymentStatus": "Success",
"TradeId": 282495,
"TransferId": 0,
"IsCardLoad": false,
"IsInternationalPayment": true,
"LoadDate": null,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"ExpectedResponses": [
"IsValid"
]
},
"AuthorisedClientModel": {
"ClientId": "<clientid>",
"ClientRef": "<clientref>",
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
},
"AuthorisedUserModel": {
"UserId": "<userid>",
"AppVersion": null,
"TokenStartDate": "2023-11-13T00:00:00",
"TokenEndDate": "2023-12-13T00:00:00",
"LoginTimestamp": "2023-12-06T11:05:59.255352",
"ApiLoginType": 0,
"ApiStatusCode": 100,
"ApiStatus": "IsValid",
"ApiStatusDescription": "Valid Operation"
}
}
*Rates given at the time of writing 05/12/23.\
Updated 9 months ago