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:

CurrencyCodeName
AUD36Australian Dollar
CAD124Canadian Dollar
EUR978Euro
GBP826British Pound Sterling
NZD554New Zealand Dollar
USD840US 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:

CurrencyCodeName
AUD36Australian Dollar
GBP826British Pound Sterling
BGN975Bulgarian Lev
CAD124Canadian Dollar
CZK203Czech Koruna
DKK208Danish Krone
EUR978Euro
HKD344Hong Kong Dollar
HUF348Hungarian Forint
INR356Indian Rupee
ILS376Israeli New Shekel
JPY392Japanese Yen
KES404Kenyan Shilling
KWD414Kuwaiti Dinar
MAD504Moroccan Dirham
NZD554New Zealand Dollar
NOK578Norwegian Krone
PLN985Polish Zloty
QAR634Qatari Riyal
OMR512Rial Omani
SAR682Saudi Riyal
SGD702Singapore Dollar
ZAR710South African Rand
SEK752Swedish Krona
CHF756Swiss Franc
THB764Thai Baht
TRY949Turkish Lira
AED784UAE Dirham
USD840US 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:

  1. Call the POST - Display Rates from Main currency to Exchange currency.endpoint.
  2. Enter the CcyCode. The Exchange currency to acquire.
  3. Enter the sellccycode. The Main currency being used to pay for the exchange.
  4. 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:

  1. Call the POST - Display Rates from Exchange currency to Main currency. endpoint.
  2. Enter the CcyCode. The Exchange currency.
  3. Enter the Amount. The target amount to purchase in the Exchange currency.
  4. 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.

NameValueDescription
Buy and Send0Credits 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 Hold1Credits 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:

  1. Call the POST - Create a Quote by Trading an Exchange currency into a Main currency. endpoint.
  2. Enter the CcyCode. The Exchange currency to acquire.
  3. Enter the Amount. The amount of Exchange currency to acquire.
  4. Enter the SellCcyCode. The Main currency being used to pay for the exchange.
  5. Enter the ChannelType. Buy and Send or Buy and Hold.
  6. 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:

  1. Call the POST - Create a Quote by Trading a Main currency into an Exchange currency. endpoint.
  2. Enter the CcyCode. The Main currency being used to fund the exchange.
  3. Enter the Amount. The Main currency amount to fund the exchange,
  4. Enter the SellCcyCode. The Exchange currency to acquire.
  5. Enter the ChannelType. Buy and Send or Buy and Hold.
  6. 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:

  1. Call the POST - Initiate a Payment Request via Currency Balance for Money Transfers. or POST - Initiate a Payment Request via Bank Transferendpoint depending on the payment method preference.
  2. Enter the corresponding values for the request body below.
    1. Note that Beneficiaries within specific countries may need a purpose code.
  3. 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:

  1. Call the POST - Initiate a Payment Request via Currency Balance. endpoint.
  2. Enter the corresponding values for the request body below.
  3. For TransferAmount enter 0.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

  1. To process a Money Transfer quote being paid via Currency Balance call POST - Process a Currency Balance Payment Request.
    1. Alternatively, to process a Money Transfer quote being paid via Bank Transfer call POST - Process a Bank Transfer Payment Request.
  2. Enter the ShopOrderId.
  3. 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.

  1. For Currency Balance payments, call POST - Display Quote Status for Currency Loads endpoint.
    1. For Bank Transfer payments, call POST - Quote Status for Bank Transfers
  2. 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.\