Payouts with Webservices API

​  Last updated: 

  The following content assumes you have obtained the necessary PCI certification to process and submit sensitive cardholder data in the request to our Webservices API.
Read this article to learn more.

 

Payouts are used to credit funds to another bank account.

This page describes the requests your system needs to submit in order to process Payouts with Trust Payments and how to handle the responses returned. This includes descriptions of the required Sender/Payer and Recipient/Payee information.

Documentation for the following verticals are included to assist merchants in meeting Payout processing requirements:

  Your Merchant Category Code (MCC) is a four-digit number assigned to you by your acquirer. It is used to classify the business by the type of products or services it provides. If you are unsure of the value of your merchant category code, please contact our Support Team.

Gaming Payouts (MCC 7995)
The merchant is processing a payout of gambling winnings to their customer.

Person-to-Person Money Transfer Payouts (MCC 4829)
The merchant is processing a payout to complete a money transfer for their customer.

Crypto, Forex, & Securities Payouts (MCC 6051 & 6211)
The merchant is processing a payout of the proceeds of trades or contract for differences (CFD) to their customer.

Business Disbursement Payouts (All other MCCs)
The merchant is processing a payout to their customer for reasons not listed above (e.g. Insurance payout for a customer claim).

You may also come across these terms:


  • Payouts are also known as Credit Fund Transfers (CFT) or Original Credit Transfers (OCT).
  • Visa Direct — For processing payouts to Visa cards. Learn more.
  • Mastercard Gaming & Gambling Payments Program — Send gaming payouts to Mastercard cards. Learn more.
  • Mastercard MoneySend — Process non-gaming payouts to Mastercard cards. Learn more.

 

Requirements

You will need to have a CFT account associated with your Trust Payments site reference. If you are unsure if your site reference supports this, we recommend contacting your account manager or our Support Team for clarification.

 

Process Overview

To process a Payout, you will need to submit a Payout request using our Webservices API. Please refer to the below for code examples.

  All Payout requests require accounttypedescription=CFT and requesttypedescription=REFUND.


There are two ways to provide the recipient's card details:

  • Using fields pan and expirydate:
    • Submit the recipient's card number and expiry date directly in the request.
    • Use this approach when no prior transaction exists on our system for that card.
    • Recommended for merchants and partners that capture and include card information in Webservices API requests.
  • Using parenttransactionreference field:
    • Reference a previous transaction stored on our system.
    • The card details are retrieved automatically, so you do not need to include them in the request.
    • Recommended for merchants and partners that use Payment Pages, JavaScript Library & Shopping Cart Plugins to capture card details.

 

Gaming Payouts (MCC 7995)

The merchant is processing a payout of gambling winnings to their customer.

Gaming Payout Request using pan and expirydate
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingcountryiso2a": "GB",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "billingdob": "1990-01-01",
  "currencyiso3a": "GBP",
  "expirydate": "12/2030",
  "pan": "411111******1111",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Gaming Payout Request using parenttransactionreference
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingcountryiso2a": "GB",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "billingdob": "1990-01-01",
  "currencyiso3a": "GBP",
  "parenttransactionreference": "23-9-80001",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Gaming Payout Response
Python PHP Raw JSON Raw XML
{
'requestreference': 'Agv3epv31',
'version': '1.00',
'responses': [{
'accounttypedescription': 'CFT',
'acquirerresponsecode': '00',
'acquirerresponsemessage': 'Approved or completed Successfully',
'authcode': 'ABC123',
'baseamount': '1',
'chargedescription': 'Charge description',
'cryptocurrencyindicator': '0',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'debtrepayment': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'ISSUER NAME',
'issuercountryiso2a': 'GB',
'livestatus': '1',
'maskedpan': '411111######1111',
'merchantcategorycode': '7995',
'merchantcity': 'Test City',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '000104900099999',
'merchantzipcode': 'TR45 6ST',
'operatorname': 'webservices@merchant.com',
'parenttransactionreference': '60-102-99999999',
'paymenttypedescription': 'VISA',
'requesttypedescription': 'REFUND',
'retrievalreferencenumber': '334918601688',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2023-12-15',
'settlestatus': '100',
'stan': '601688',
'transactionreference': '60-70-99999999',
'transactionstartedtimestamp': '2023-12-15 18:00:42'
}]
}

Person-to-Person Money Transfer Payouts (MCC 4829)

The merchant is processing a payout to complete a money transfer for their customer.

Person-to-Person Money Transfer Payout Request using pan and expirydate
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "cftsourceoffunds": "05",
  "currencyiso3a": "GBP",
  "customeraccountnumber": "999999",
  "customeraccountnumbertype": "ACCOUNT",
  "customerfirstname": "First",
  "customerlastname": "Last",
  "customerstreet": "123 Street",
  "customertown": "Town",
  "customercountryiso2a": "GB",
  "expirydate": "12/2030",
  "pan": "545454******5454",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C07"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Person-to-Person Money Transfer Payout Request using parenttransactionreference
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "cftsourceoffunds": "05",
  "currencyiso3a": "GBP",
  "customeraccountnumber": "999999",
  "customeraccountnumbertype": "ACCOUNT",
  "customerfirstname": "First",
  "customerlastname": "Last",
  "customerstreet": "123 Street",
  "customertown": "Town",
  "customercountryiso2a": "GB",
  "parenttransactionreference": "23-9-80001",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C07"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Person-to-Person Money Transfer Payout Response
Python PHP Raw JSON Raw XML
{
'requestreference': 'Agv3epv31',
'version': '1.00',
'responses': [{
'accounttypedescription': 'CFT',
'acquirerresponsecode': '00',
'acquirerresponsemessage': 'Approved or completed Successfully',
'authcode': 'ABC123',
'baseamount': '1',
'chargedescription': 'Charge description',
'cryptocurrencyindicator': '0',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'debtrepayment': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'ISSUER NAME',
'issuercountryiso2a': 'GB',
'livestatus': '1',
'maskedcustomeraccountnumber': '12345678',
'maskedpan': '545454######5454',
'merchantcategorycode': '6537',
'merchantcity': 'Test City',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '000123456789012',
'merchantzipcode': 'TR45 6ST',
'operatorname': 'webservices@merchant.com',
'parenttransactionreference': '60-102-99999999',
'paymenttypedescription': 'MASTERCARD',
'requesttypedescription': 'REFUND',
'retrievalreferencenumber': '334918601688',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2023-12-15',
'settlestatus': '10',
'stan': '601688',
'transactionreference': '60-70-99999999',
'transactionstartedtimestamp': '2023-12-15 18:00:42',
'transactiontypeindicator': 'C07'
}]
}

Crypto, Forex, & Securities Payouts (MCC 6051 & 6211)

The merchant is processing a payout of the proceeds of trades or contract for differences (CFD) to their customer. In this scenario, the sender and recipient are the customer.

Crypto, Forex, & Securities Payout Request using pan and expirydate
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "cftsourceoffunds": "05",
  "currencyiso3a": "GBP",
  "customeraccountnumber": "999999",
  "customeraccountnumbertype": "ACCOUNT",
  "customerfirstname": "First",
  "customerlastname": "Last",
  "customerstreet": "123 Street",
  "customertown": "Town",
  "customercountryiso2a": "GB",
  "expirydate": "12/2030",
  "pan": "545454******5454",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C52"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Crypto, Forex, & Securities Payout Request/Response using parenttransactionreference
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "cftsourceoffunds": "05",
  "currencyiso3a": "GBP",
  "customeraccountnumber": "999999",
  "customeraccountnumbertype": "ACCOUNT",
  "customerfirstname": "First",
  "customerlastname": "Last",
  "customerstreet": "123 Street",
  "customertown": "Town",
  "customercountryiso2a": "GB",
  "parenttransactionreference": "23-9-80001",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C52"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Crypto, Forex, & Securities Payout Response
Python PHP Raw JSON Raw XML
{
'requestreference': 'Agv3epv31',
'version': '1.00',
'responses': [{
'accounttypedescription': 'CFT',
'acquirerresponsecode': '00',
'acquirerresponsemessage': 'Approved or completed Successfully',
'authcode': 'ABC123',
'baseamount': '1',
'chargedescription': 'Charge description',
'cryptocurrencyindicator': '0',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'debtrepayment': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'ISSUER NAME',
'issuercountryiso2a': 'GB',
'livestatus': '1',
'maskedcustomeraccountnumber': '12345678',
'maskedpan': '545454######5454',
'merchantcategorycode': '6537',
'merchantcity': 'Test City',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '000123456789012',
'merchantzipcode': 'TR45 6ST',
'operatorname': 'webservices@merchant.com',
'parenttransactionreference': '60-102-99999999',
'paymenttypedescription': 'MASTERCARD',
'requesttypedescription': 'REFUND',
'retrievalreferencenumber': '334918601688',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2023-12-15',
'settlestatus': '10',
'stan': '601688',
'transactionreference': '60-70-99999999',
'transactionstartedtimestamp': '2023-12-15 18:00:42',
'transactiontypeindicator': 'C52'
}]
}

Business Disbursement Payouts (All other MCCs)

The merchant is processing a payout to their customer for reasons not listed above (e.g. Insurance payout for a customer claim). In this scenario, the sender is the merchant or business sending the funds, and the recipient is the customer. When not provided in the request, the sender information is automatically sourced from Trust Payments.

Business Disbursement Payout Request using pan and expirydate
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingcountryiso2a": "GB",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "currencyiso3a": "GBP",
  "expirydate": "12/2030",
  "pan": "545454******5454",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C55"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Business Disbursement Payout Request/Response using parenttransactionreference
Python PHP cURL Raw JSON Raw XML
#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout= {
  "accounttypedescription": "CFT",
  "baseamount": "1",
  "billingcountryiso2a": "GB",
  "billingdob": "1990-12-02",
  "billingfirstname": "First",
  "billinglastname": "Last",
  "currencyiso3a": "GBP",
  "parenttransactionreference": "23-9-80001",
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "site12346",
  "transactiontypeindicator": "C55"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response

Replace <DOMAIN> with a supported domain. View full domain list.

Business Disbursement Payout Response
Python PHP Raw JSON Raw XML
{
'requestreference': 'Agv3epv31',
'version': '1.00',
'responses': [{
'accounttypedescription': 'CFT',
'acquirerresponsecode': '00',
'acquirerresponsemessage': 'Approved or completed Successfully',
'authcode': 'ABC123',
'baseamount': '1',
'chargedescription': 'Charge description',
'cryptocurrencyindicator': '0',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'debtrepayment': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'ISSUER NAME',
'issuercountryiso2a': 'GB',
'livestatus': '1',
'maskedcustomeraccountnumber': '12345678',
'maskedpan': '545454######5454',
'merchantcategorycode': '6537',
'merchantcity': 'Test City',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '000123456789012',
'merchantzipcode': 'TR45 6ST',
'operatorname': 'webservices@merchant.com',
'parenttransactionreference': '60-102-99999999',
'paymenttypedescription': 'MASTERCARD',
'requesttypedescription': 'REFUND',
'retrievalreferencenumber': '334918601688',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2023-12-15',
'settlestatus': '10',
'stan': '601688',
'transactionreference': '60-70-99999999',
'transactionstartedtimestamp': '2023-12-15 18:00:42',
'transactiontypeindicator': 'C55'
}]
}

 

Payout field specification

Payout request field specification

 
Field
Format Description

Essential fields

Required accounttypedescription
XPath: /operation/accounttypedescription
Alpha (20) Must be “CFT”.
Required baseamount
XPath: /billing/amount
Numeric (13) The refund amount in base units, with no commas or decimal points. e.g. £10.99 would be submitted as “1099” but ¥246 would be submitted as “246”.
Required currencyiso3a
XPath: /billing/amount/@currencycode
Alpha (3)

The currency that the transaction will be processed in.

View full list of available currencies.

Required requesttypedescriptions
XPath: /@type
Alphanumeric
& hyphens (25)
The request type required is “REFUND”.
Required sitereference
XPath: /operation/sitereference
Alphanumeric
& underscore (50)
A unique reference that identifies your account. You receive this when you first sign up with us.
Conditional expirydate
XPath: /billing/payment/expirydate
Date MM/YYYY

The card expiry date.


Required when pan is submitted.

Optional when parenttransactionreference is submitted.

Conditional pan
XPath: /billing/payment/pan
Numeric (12-19)

The customer's card number.


Required when parenttransactionreference is NOT submitted.

Conditional parenttransactionreference
XPath: /operation/parenttransactionreference
Alphanumeric
& hyphens (25)

Submit the transaction reference of a previous AUTH, ACCOUNTCHECK or Payout (CFT REFUND) request and we will retrieve the customer's card stored in our records and credit the funds to said card.

All fields that start with "billing" and "customer" will also be inherited from the parent request, if available. Inherited fields do not need to be included in this new Payout request (even if denoted as required in this specification), but you do still have the option to submit new billing and customer fields and this will override any inherited data.


Required when pan is NOT submitted.

Optional orderreference
XPath: /merchant/orderreference
Alphanumeric including
symbols (25)
We strongly recommend submitting a unique reference to identify each request submitted.

Fund transfer fields

Conditional cftsourceoffunds
XPath: /merchant/cftsourceoffunds
Numeric (2)

The source of funds for the Payout.
Submit one of the following:

"01" - Credit
"02" - Debit
"03" - Prepaid
"04" - Cash
"05" - Debit/ deposit account
"07" - Mobile Money Account


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL fund transfer fields are submitted or NONE.

Conditional customeraccountnumbertype
XPath: /customer/accountnumber/@type
Alpha (7)

Submit either “CARD” or “ACCOUNT”.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL fund transfer fields are submitted or NONE.

Conditional customeraccountnumber
XPath: /customer/accountnumber
Numeric (34) 

If customeraccountnumbertype is “ACCOUNT”, submit the sender's account number.

If customeraccountnumbertype is “CARD”, submit the sender's card number.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL fund transfer fields are submitted or NONE.

Conditional transactiontypeindicator
XPath: /merchant/transactiontypeindicator
Alphanumeric (3)

Specifies the Mastercard MoneySend Transaction Type - Supported values:

"C07" — Person-to-Person Transfer
"C52" — Crypto, Forex, & Securities
"C55" — Business Disbursement


Required for Mastercard MoneySend transactions.

Sender contact fields

Conditional customercountryiso2a
XPath: /customer/country
Alpha (2)

The sender's country in ISO2A format.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.

Conditional customercounty
XPath: /customer/county
Alphanumeric including
symbols (127)

The county for the sender's address.

For US and Canadian addresses, submit the two-character province code, e.g. for British Columbia, submit “BC”.


Required if BOTH conditions are met:
Mastercard MoneySend transfer
customercountryiso2a = Canada flag CA OR United States flag US


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.

Conditional customerfirstname
XPath: /customer/name/first
Alphanumeric including
symbols (127)

The sender's first name.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities Payouts 


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.

Conditional customerlastname
XPath: /customer/name/last
Alphanumeric including
symbols (127)

The sender's last name.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.

Conditional customermiddlename
XPath: /customer/name/middle
Alphanumeric including
symbols (127)

The customer’s middle name(s).


Required if BOTH of these conditions apply:
Visa Direct transfer
South Africa flag Card is issued in South Africa
AND for one of the following verticals:
Person-to-Person Transfer, OR;
Crypto, Forex, & Securities

For other verticals, this field is optional.

Conditional customerpremise
XPath: /customer/premise
Alphanumeric including
symbols (25)

The sender's property name/number.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.


The customerpremise field can be submitted in addition to / instead of customerstreet.

Conditional customerstreet
XPath: /customer/street
Alphanumeric including
symbols (127)

The sender's street name.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.


The customerstreet field can be submitted in addition to / instead of customerpremise.

Conditional customertown
XPath: /customer/town
Alphanumeric including
symbols (127)

The sender's town.


Required for: 
Person-to-Person Transfer 
Crypto, Forex, & Securities 


If Business Disbursement:
Either ALL sender contact fields are submitted or NONE.

Optional customerpostcode
XPath: /customer/postcode
Alphanumeric (25) The sender's postcode or ZIP code. This must be a valid postcode/ZIP code for the customercountryiso2a submitted.

Recipient contact fields

Required billingcountryiso2a
XPath: /billing/country
Alpha (2)

The country for the recipient's billing address. This will need to be in ISO2A format.

View full list of country codes.

Required billingdob
XPath: /billing/dob
Date YYYY-MM-DD The recipient's date of birth.
Required billingfirstname
XPath: /billing/name/first
Alphanumeric including
symbols (127)
The recipient's billing first name.
Required billinglastname
XPath: /billing/name/last
Alphanumeric including
symbols (127)
The recipient's billing last name.
Conditional billingcounty
XPath: /billing/county
Alphanumeric including
symbols (127)

The county for the recipient's billing address.

For US and Canadian addresses, submit the two-character province code, e.g. for British Columbia, submit “BC”.


Required if BOTH conditions are met:
Visa Direct transfer
Canada flag Card is issued in Canada


Required if BOTH conditions are met:
Mastercard MoneySend transfer
billingcountryiso2a = Canada flag CA OR United States flag US

Conditional billingmiddlename
XPath: /billing/name/middle
Alphanumeric including
symbols (127)

The customer’s billing middle name(s).


Required if BOTH of these conditions apply:
Visa Direct transfer
South Africa flag Card is issued in South Africa
AND for one of the following verticals:
Person-to-Person Transfer, OR;
Crypto, Forex, & Securities

For other verticals, this field is optional.

Conditional billingstreet
XPath: /billing/street
Alphanumeric including
symbols (127)

The street entered for the recipient's billing address.


Required if Visa Direct transfer AND
Card issued in Australia flag AU / Canada flag CA / New Zealand flag NZ

Conditional billingtown
XPath: /billing/town
Alphanumeric including
symbols (127)

The town entered for the recipient's billing address.


Required if Visa Direct transfer AND
Card issued in Australia flag AU / Canada flag CA / New Zealand flag NZ

Optional billingpostcode
XPath: /billing/postcode
Alphanumeric (25) The billing postcode or ZIP code. This must be a valid postcode/ZIP code for the billingcountryiso2a submitted.
Optional billingpremise
XPath: /billing/premise
Alphanumeric including
symbols (25)
The property name/number for the recipient's billing address.

 

Payout response field specification

  Field Format Description
Returned accounttypedescription
XPath: /operation/accounttypedescription
Alpha (20) “CFT” is returned in the response.
Returned baseamount
XPath: /billing/amount
Numeric (13) The refund amount in base units, with no commas or decimal points. e.g. £10.99 would be submitted as “1099” but ¥246 would be submitted as “246”.
Returned chargedescription
XPath: /merchant/chargedescription
Alphanumeric including spaces and special characters (25)

The charge description is a field that we provide to the acquiring bank during a transaction. It is a basic description of the transaction that is shown on the customer’s bank statement.

Learn more about charge description.

Returned cryptocurrencyindicator
XPath: /operation/cryptocurrencyindicator
Numeric (1)

Indicates if transaction is flagged as a purchase of cryptocurrency:

  • 1 – Transaction is flagged as cryptocurrency purchase.
  • 0 – Transaction is not flagged as cryptocurrency purchase.
Returned currencyiso3a
XPath: /billing/amount/@currencycode
Alpha (3)

The currency of the transaction.

View full list of available currencies.

Returned dccenabled
XPath: /billing/dcc/@enabled
Numeric (1)

Indicates if your account is configured for DCC:

  • 1 – Yes
  • 0 – No
Returned debtrepayment
XPath: /merchant/debtrepayment
Numeric (1)

Indicates if transaction is flagged as debt repayment:

  • 1 – Transaction is flagged as debt repayment.
  • 0 – Transaction is not flagged as debt repayment.
Returned errorcode
XPath: /error/code
Numeric (1-5)

The error code should be used to determine if the request was successful or not.

  • 0 - Transaction was successful.
  • 60042 - Insufficient funds (merchant).
  • 60044 - Recipient screening failed.
  • 70000 - Transaction declined.

View full list of errorcode and message values.

Returned errormessage
XPath: /error/message
Alphanumeric (255)

This provides a brief explanation as to the cause of the error.

For successful transactions, this is returned as “Ok”.

View full list of errorcode and message values.

Returned issuer
XPath: /billing/payment/issuer
Alphanumeric (255) The customer’s card issuer.
Returned issuercountryiso2a
XPath: /billing/payment/issuercountry
Alpha (2)

The country for the customer’s card issuer.
This will be in ISO2A format.

View full list of country codes.

Returned livestatus
XPath: /live
Numeric (1)
  • 0 – Transaction processed using a test account.
  • 1 – Transaction processed using a live account.
Returned maskedpan
XPath: /billing/payment/pan
Alphanumeric including “#” (12-19)

If tokenisedpayment is not returned:
The maskedpan field represents the customer’s card number.

If tokenisedpayment is returned with value 1:
The maskedpan field represents the customer’s unique token number used to perform the transaction. The value of maskedpan field is masked in the response. Most of the number is intentionally obscured by “#” characters, e.g. 411111######0211.

Returned merchantnumber
XPath: /merchant/merchantnumber
Alphanumeric (32) The merchant number that was used to process the transaction. Provided by the acquiring bank.
Returned operatorname
XPath: /merchant/operatorname
Alphanumeric (255) The value of this field contains the name of the user that processed the request.
Returned paymenttypedescription
XPath: /billing/payment/@type
Alpha (20) Payment method (e.g. “VISA” or “MASTERCARD”).
Returned requesttypedescription
XPath: /@type
Alpha (20) “REFUND” is returned in the response.
Returned securityresponseaddress
XPath: /security/address
Numeric (1)

The result of AVS checks.

Learn more about AVS and security code checks.

Returned securityresponsepostcode
XPath: /security/postcode
Numeric (1)

The result of AVS checks.

Learn more about AVS and security code checks.

Returned securityresponsesecuritycode
XPath: /security/securitycode
Numeric (1)

The result of Security Code Checks.

Learn more about AVS and security code checks.

Returned settleduedate
XPath: /settlement/settleduedate
Date YYYY-MM-DD The date on which the transaction will be settled.
Returned settlestatus
XPath: /settlement/settlestatus
Numeric (3)

A numeric value used to indicate the progress of settlement regarding this transaction.

Learn more about settlement.

Returned transactionreference
XPath: /transactionreference
Alphanumeric including
hyphens (25)
A unique reference for the transaction assigned by Trust Payments. You will need this reference to perform a refund or update the transaction.
Returned transactionstartedtimestamp
XPath: /timestamp
Date time YYYY-MM-DD hh:mm:ss The time the transaction was processed.
Conditional acquireradvicecode
XPath: /acquireradvicecode
 Numeric (1)

A numeric value returned following a repeat payment request, indicating if further payments can be processed.

Mapping:

  • 0 – No action required.
  • 1 – New account information available.
  • 2 – Cannot approve at this time.
  • 4 – Do not process further recurring transactions.
  • 8 – Payment blocked by card scheme.

This will vary depending on your acquiring bank. Please contact your bank for further information.

Conditional acquirerresponsecode
XPath: /acquirerresponsecode
Alphanumeric (255)

Used by your acquirer to indicate the outcome of the request.

This will vary depending on your acquiring bank. Please contact your bank for further information.

Conditional acquirerresponsemessage
XPath: /acquirerresponsemessage
Alphanumeric (255)

Used by your acquirer to indicate the outcome of the request.

This will vary depending on your acquiring bank. Please contact your bank for further information.

Conditional authcode
XPath: /authcode
Alphanumeric (255)

The authorisation code provided by the issuing bank. This will differ depending on which bank you use.

Only returned if the transaction is authorised.

Conditional customeraccountnumbertype
XPath: /customer/accountnumber/@type
Alpha (7)

Either “CARD” or “ACCOUNT”.

When the customeraccountnumber value submitted in the request is a card number, this field will be populated with "CARD" in the response.

Conditional errordata
XPath: /error/data
Alphanumeric (255)

Additional information to help troubleshoot the error.

Only returned if there has been an error.

Conditional maskedcustomeraccountnumber
XPath: /customer/accountnumber
Numeric (34)

If account number type is “ACCOUNT”, the account number of the sender.
If account number type is “CARD”, the card number of the sender.

When the customeraccountnumber value submitted in the request is a card number, this will be masked (e.g. “559139######0504”) in the response, when displayed in Portal and returned in URL notification(s) (if enabled).

Returned if submitted in the request.

Conditional merchantcategorycode
XPath: /merchant/merchantcategorycode
Alphanumeric (255)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional merchantcity
XPath: /merchant/merchantcity
Alphanumeric (127)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional merchantcountryiso2a
XPath: /merchant/merchantcountryiso2a
Alpha (2)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional merchantname
XPath: /merchant/merchantname
Alphanumeric (255)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional merchantstatecode
XPath: /merchant/merchantstatecode
Alphanumeric (127)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional merchantzipcode
XPath: /merchant/merchantzipcode
Alphanumeric (10)

These are details associated with the account used to process the transaction. To amend these fields, please contact our Support Team.

Values returned depends on your account configuration.

Conditional orderreference
XPath: /merchant/orderreference
Alphanumeric including
symbols (25)

Your unique order reference that can be stored on the Trust Payments system.

This field is returned if submitted in the request or inherited from a parent.

Conditional parenttransactionreference
XPath: /operation/parenttransactionreference
Alphanumeric
& hyphens (25)

The transactionreference of a previous request, from which key details have been inherited.

This field is returned if submitted in the request.

Conditional retrievalreferencenumber
XPath: /other/retrievalreferencenumber
Alphanumeric (255)

An ISO term. This is used to reference the source transaction.

This will vary depending on your acquiring bank.

Conditional stan
XPath: /other/stan
ISO 8583

The STAN (System Trace Audit Number) associated with the transaction. This follows the ISO 8583 standard.

This field is returned if available.

Conditional tokenisedpayment
XPath: /billing/payment/pan/@tokenised
Numeric (1)

If this field is returned with value 1, this indicates the transaction was processed using a token.

This field is returned if payment was performed using a token.

Conditional tokentype
XPath: /billing/payment/pan/@tokentype
Alphanumeric (50)

Used to identify the type of token used for this payment (e.g. “VISATOKEN”).

This field is returned if payment was performed using a token.

Conditional transactiontypeindicator
XPath: /merchant/transactiontypeindicator
Alphanumeric (3)

"C07" — Person-to-Person Transfer
"C52" — Crypto, Forex, & Securities
"C55" — Business Disbursement

Returned if submitted in the request.

Conditional walletdisplayname
XPath: /billing/payment/wallet/displayname
Alphanumeric (255)

This normally contains the last four digits of the customer’s card number (e.g. “1111”).

This field is returned if payment was performed using a wallet.

Conditional walletsource
XPath: /billing/payment/wallet/source
Alphanumeric (20)

Used to identify the type of wallet used for this payment (e.g. “APPLEPAY”).

This field is returned if payment was performed using a wallet.

 

Payout settlement

The settlement flow depends on the protocol being used to perform the Payout.

Mastercard MoneySend

While the funds are typically transferred to the recipient in less than 30 minutes, MoneySend payouts will initially have settlestatus=10. A batch process runs on a daily basis, updating the settlestatus of successful transfers to 100.

Visa Direct

Transfers processed via Visa Direct are typically transferred to the recipient in less than 30 minutes. The settlestatus of the transfer is immediately set to 100.

Mastercard Gaming and Gambling Payments Program and everything else

Payouts that are processed via the Mastercard Gaming and Gambling Payments Program, or anything outside of the above, will follow the same settlement flow as a standard e-commerce AUTH or REFUND request:

  • If the Payout request is successful, settlestatus=0
  • Settlement is performed in batches on a daily basis, after which Payouts are updated to settlestatus=100 to indicate successful settlement.
  • The transfer will normally complete within 24 hours.

 

Additional notes

Politically Exposed Persons (PEP) or Sanction Screening

Requests to process Payouts where Trust Payments performs PEP or sanction screening on the recipient are subject to strict requirements. The following fields must be submitted in the Payout request:

  Failure to submit may result in returning of 60044 "Recipient screening failed" error.

  • billingcountryiso2a
  • billingdob
  • billingfirstname
  • billinglastname

 

Testing guidance

When testing, you can use the following test card details:

  • Visa card "4111 1111 1111 1111" or Mastercard "5100 0000 0000 0511".
  • Set expiry date to any valid date in the future.
  • Use security code “123”.

You can also send different baseamount values to affect the outcome of the request:

  • baseamount 70000 returns a declined response from the test bank.
  • baseamount 60010 returns a bank system error from the test bank.
  • baseamount 1050 returns an authorised response from the test bank.

  Please generate and submit your own placeholder sender/recipient name, address, date of birth and/or account number etc. when testing.

 

FAQ

​

Why has my Payout request been declined?

Payouts are sent to the card issuer for authorisation, and a decline response (error code 70000) indicates that the card issuer has chosen to decline the request. Trust Payments is unable to provide specific reasons for the decline, as this decision is made by the card issuer directly. We recommend contacting your card issuer to find out why the payout was declined.

What is a business application identifier?

A business application identifier (BAI) is a unique reference code assigned to your business within the Trust Payments platform, used specifically for Visa Direct payouts and account funding transactions. A specific BAI is assigned based on your merchant type. For more information, contact our Support Team.

What is a transaction type indicator?

A transaction type indicator (TTI) is a required value included in Mastercard Moneysend payout and funding transaction requests, which specifies the type of transaction being processed. For more information, contact our Support Team.

Was this article helpful?
0 out of 0 found this helpful