Before flagging a transaction as an AFT, your account must be enabled and registered for AFTs
Any attempt to flag a transaction as an AFT using a site reference that is not registered and enabled will result in an invalid field error (errorcode = 30000).An Account Funding Transaction (AFT) is any transaction where a card account is debited to fund another account. The account being funded could be an account held by the cardholder with the merchant (e.g. a trading account, prepaid account or digital wallet) or another person or entity (e.g. money transfer). The account being funded may be a card account or a deposit account.
Visa and Mastercard require Sender/Payer and Recipient/Payee information, including details of the account being funded, to be provided in all Account Funding Transactions.
This page specifies the field names Trust Payments solutions use to flag a transaction as an Account Funding Transaction (AFT) and provide the required Sender/Payer and Recipient/Payee information. Example requests for each Trust Payments solution are included to assist merchants in meeting Account Funding Transaction processing requirements.
About Merchant Category Codes (MCC)
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.
The examples below are specific to the Merchant Category Code (MCC) and use case of the merchant concerned. Please check your MCC with our support team and use the examples provided to ensure you populate the correct information in your requests.
MCC 4829
Merchants classified with this MCC allow customers to transfer funds via an electronic funds transfer / wire transfer / remittance to a named entity. For this MCC, Visa and Mastercard mandate that these transactions are flagged accordingly, and that additional sender and recipient information is included in the request.
The following is an example of a POST to Payment Pages that includes the fields required for merchants with MCC 4829:
<html>
<body>
<!-- HTML form POST instruction and endpoint information -->
<form method="POST" action="https://payments.securetrading.net/process/payments/details">
<!-- End of HTML form POST instruction and endpoint information -->
<!-- sitereference; stprofile; and version information -->
<input type="hidden" name="sitereference" value="{{site_reference}}">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<!-- End of sitereference; stprofile; and version information -->
<!-- Account funding flagging - NEW FIELDS -->
<input type="hidden" name="accountfunding" value="1">
<input type="hidden" name="transactiontypeindicator" value="F07">
<!-- End of Account funding flagging -->
<!-- Sender information -->
<input type="hidden" name="billingdob" value="2001-01-01">
<input type="hidden" name="billingfirstname" value="Jay">
<input type="hidden" name="billinglastname" value="Doe">
<input type="hidden" name="billingpremise" value="No 789">
<input type="hidden" name="billingstreet" value="Test Street">
<input type="hidden" name="billingtown" value="Bangor">
<input type="hidden" name="billingcounty" value="Gwynedd">
<input type="hidden" name="billingpostcode" value="TR45 6ST">
<input type="hidden" name="billingcountryiso2a " value="GB">
<!-- End of sender information -->
<!-- Recipient information -->
<input type="hidden" name="customerfirstname" value="John">
<input type="hidden" name="customerlastname" value="Smith">
<input type="hidden" name="customercountryiso2a" value="GB">
<input type="hidden" name="customeraccountnumber" value="12345678">
<input type="hidden" name="customeraccountnumbertype" value="ACCOUNT">
<!-- End of recipient information -->
<!-- Amount and currency information -->
<input type="hidden" name="currencyiso3a" value="GBP">
<input type="hidden" name="mainamount" value="100.00">
<!-- End of Amount and currency information -->
<!-- HTML submit Pay button information -->
<input type="submit" value="Pay">
<!-- End of HTML submit Pay button information -->
</form>
</body>
</html>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
The following payload example includes the fields required for merchants with MCC 4829:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F07"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following payload example includes the fields required for merchants with MCC 4829:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"billingcounty":"Gwynedd",
"billingcountryiso2a":"GB",
"baseamount":"1050",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener",
"transactiontypeindicator":"F07"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 4829:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "{{wsapi_username}}"
stconfig.password = "{{wsapi_password}}"
st = securetrading.Api(stconfig)
auth = {
"accountfunding": "1", #New field for AFT
"accounttypedescription": "MOTO",
"baseamount": "1050",
"billingcountryiso2a": "GB",
"billingcounty": "Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname": "Jay",
"billinglastname": "Doe",
"billingpremise": "No 789",
"billingstreet": "Test Street",
"billingtown": "Bangor",
"currencyiso3a": "GBP",
"customeraccountnumber": "123456789",
"customeraccountnumbertype": "ACCOUNT",
"customercountryiso2a": "GB",
"customerfirstname": "John",
"customerlastname": "Smith",
"expirydate": "01/35",
"pan": "4111111111111111",
"securitycode": "123",
"requesttypedescriptions": ["AUTH"],
"sitereference": "{{site_reference}}",
"transactiontypeindicator": "F07" #New field for AFT
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => '{{wsapi_username}}',
'password' => '{{wsapi_password}}',
);
$requestData = array(
'accountfunding' => '1', /*New field for AFT*/
'accounttypedescription' => 'MOTO',
'baseamount' => '1050',
'billingcountryiso2a' => 'GB',
'billingcounty' => 'Gwynedd',
'billingdob' => '2001-01-01',
'billingfirstname' => 'Jay',
'billinglastname' => 'Doe',
'billingpremise' => 'No 789',
'billingstreet' => 'Test Street',
'billingtown' => 'Bangor',
'currencyiso3a' => 'GBP',
'customeraccountnumber' => '123456789',
'customeraccountnumbertype' => 'ACCOUNT',
'customercountryiso2a' => 'GB',
'customerfirstname' => 'John',
'customerlastname' => 'Smith',
'expirydate' => '01/35',
'pan' => '4111111111111111',
'securitycode' => '123',
'requesttypedescriptions' => array('AUTH'),
'sitereference' => '{{site_reference}}',
'transactiontypeindicator' => 'F07' /*New field for AFT*/
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user {{wsapi_username}}:{{wsapi_password}} <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"{{wsapi_username}}",
"version": "1.00",
"request": [{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F07"
}]
}'
{
"alias":"{{wsapi_username}}",
"version":"1.00",
"request":[{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F07"
}]
}
<requestblock version="3.67">
<alias>{{wsapi_username}}</alias>
<request type="AUTH">
<billing>
<amount currencycode="GBP">1050</amount>
<country>GB</country>
<county>Gwynedd</county>
<dob>2001-01-01</dob>
<name>
<first>Jay</first>
<last>Doe</last>
</name>
<payment>
<pan>4111111111111111</pan>
<expirydate>01/35</expirydate>
<securitycode>123</securitycode>
</payment>
<premise>No 789</premise>
<street>Test Street</street>
<town>Bangor</town>
</billing>
<customer>
<accountnumber type="ACCOUNT">12345678</accountnumber>
<country>GB</country>
<name>
<first>John</first>
<last>Smith</last>
</name>
</customer>
<merchant>
<accountfunding>1</accountfunding>
<transactiontypeindicator>F07</transactiontypeindicator>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>{{site_reference}}</sitereference>
</operation>
</request>
</requestblock>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
MCC 6540
This MCC must be used by Merchants whose primary business is the sale of and/or any subsequent reloads of stored value cards/accounts (including Visa Prepaid Cards) occurring at non-financial institutions. For this MCC, Visa and Mastercard mandate that these transactions are flagged accordingly, and that additional sender and recipient information is included in the request.
The following is an example of a POST to Payment Pages that includes the fields required for merchants with MCC 6540:
<html>
<body>
<!-- HTML form POST instruction and endpoint information -->
<form method="POST" action="https://payments.securetrading.net/process/payments/details">
<!-- End of HTML form POST instruction and endpoint information -->
<!-- sitereference; stprofile; and version information -->
<input type="hidden" name="sitereference" value="{{site_reference}}">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<!-- End of sitereference; stprofile; and version information -->
<!-- Account funding flagging - NEW FIELDS -->
<input type="hidden" name="accountfunding" value="1">
<input type="hidden" name="transactiontypeindicator" value="F61">
<!-- End of Account funding flagging -->
<!-- Sender information -->
<input type="hidden" name="billingdob" value="2001-01-01">
<input type="hidden" name="billingfirstname" value="Jay">
<input type="hidden" name="billinglastname" value="Doe">
<input type="hidden" name="billingpremise" value="No 789">
<input type="hidden" name="billingstreet" value="Test Street">
<input type="hidden" name="billingtown" value="Bangor">
<input type="hidden" name="billingcounty" value="Gwynedd">
<input type="hidden" name="billingpostcode" value="TR45 6ST">
<input type="hidden" name="billingcountryiso2a " value="GB">
<!-- End of sender information -->
<!-- Recipient information -->
<input type="hidden" name="customerfirstname" value="John">
<input type="hidden" name="customerlastname" value="Smith">
<input type="hidden" name="customercountryiso2a" value="GB">
<input type="hidden" name="customeraccountnumber" value="12345678">
<input type="hidden" name="customeraccountnumbertype" value="ACCOUNT">
<!-- End of recipient information -->
<!-- Amount and currency information -->
<input type="hidden" name="currencyiso3a" value="GBP">
<input type="hidden" name="mainamount" value="100.00">
<!-- End of Amount and currency information -->
<!-- HTML submit Pay button information -->
<input type="submit" value="Pay">
<!-- End of HTML submit Pay button information -->
</form>
</body>
</html>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
The following payload example includes the fields required for merchants with MCC 6540:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F61"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following payload example includes the fields required for merchants with MCC 6540:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"billingcounty":"Gwynedd",
"billingcountryiso2a":"GB",
"baseamount":"1050",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener",
"transactiontypeindicator":"F61"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6540:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "{{wsapi_username}}"
stconfig.password = "{{wsapi_password}}"
st = securetrading.Api(stconfig)
auth = {
"accountfunding": "1", #New field for AFT
"accounttypedescription": "MOTO",
"baseamount": "1050",
"billingcountryiso2a": "GB",
"billingcounty": "Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname": "Jay",
"billinglastname": "Doe",
"billingpremise": "No 789",
"billingstreet": "Test Street",
"billingtown": "Bangor",
"currencyiso3a": "GBP",
"customeraccountnumber": "123456789",
"customeraccountnumbertype": "ACCOUNT",
"customercountryiso2a": "GB",
"customerfirstname": "John",
"customerlastname": "Smith",
"expirydate": "01/35",
"pan": "4111111111111111",
"securitycode": "123",
"requesttypedescriptions": ["AUTH"],
"sitereference": "{{site_reference}}",
"transactiontypeindicator": "F61" #New field for AFT
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => '{{wsapi_username}}',
'password' => '{{wsapi_password}}',
);
$requestData = array(
'accountfunding' => '1', /*New field for AFT*/
'accounttypedescription' => 'MOTO',
'baseamount' => '1050',
'billingcountryiso2a' => 'GB',
'billingcounty' => 'Gwynedd',
'billingdob' => '2001-01-01',
'billingfirstname' => 'Jay',
'billinglastname' => 'Doe',
'billingpremise' => 'No 789',
'billingstreet' => 'Test Street',
'billingtown' => 'Bangor',
'currencyiso3a' => 'GBP',
'customeraccountnumber' => '123456789',
'customeraccountnumbertype' => 'ACCOUNT',
'customercountryiso2a' => 'GB',
'customerfirstname' => 'John',
'customerlastname' => 'Smith',
'expirydate' => '01/35',
'pan' => '4111111111111111',
'securitycode' => '123',
'requesttypedescriptions' => array('AUTH'),
'sitereference' => '{{site_reference}}',
'transactiontypeindicator' => 'F61' /*New field for AFT*/
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user {{wsapi_username}}:{{wsapi_password}} <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"{{wsapi_username}}",
"version": "1.00",
"request": [{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F61"
}]
}'
{
"alias":"{{wsapi_username}}",
"version":"1.00",
"request":[{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F61"
}]
}
<requestblock version="3.67">
<alias>{{wsapi_username}}</alias>
<request type="AUTH">
<billing>
<amount currencycode="GBP">1050</amount>
<country>GB</country>
<county>Gwynedd</county>
<dob>2001-01-01</dob>
<name>
<first>Jay</first>
<last>Doe</last>
</name>
<payment>
<pan>4111111111111111</pan>
<expirydate>01/35</expirydate>
<securitycode>123</securitycode>
</payment>
<premise>No 789</premise>
<street>Test Street</street>
<town>Bangor</town>
</billing>
<customer>
<accountnumber type="ACCOUNT">12345678</accountnumber>
<country>GB</country>
<name>
<first>John</first>
<last>Smith</last>
</name>
</customer>
<merchant>
<accountfunding>1</accountfunding>
<transactiontypeindicator>F61</transactiontypeindicator>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>{{site_reference}}</sitereference>
</operation>
</request>
</requestblock>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
MCC 6211
Merchants classified with this MCC are licensed, in all jurisdictions they sell into to buy, sell and broker securities, stocks, bonds, commodities, and mutual funds. For this MCC, Visa mandate that these transactions are flagged accordingly, and that additional sender and recipient information is included in the request. Mastercard is scheduled to mandate the same requirements from August 2025.
The following is an example of a POST to Payment Pages that includes the fields required for merchants with MCC 6211:
<html>
<body>
<!-- HTML form POST instruction and endpoint information -->
<form method="POST" action="https://payments.securetrading.net/process/payments/details">
<!-- End of HTML form POST instruction and endpoint information -->
<!-- sitereference; stprofile; and version information -->
<input type="hidden" name="sitereference" value="{{site_reference}}">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<!-- End of sitereference; stprofile; and version information -->
<!-- Account funding flagging - NEW FIELDS -->
<input type="hidden" name="accountfunding" value="1">
<input type="hidden" name="transactiontypeindicator" value="F52">
<!-- End of Account funding flagging -->
<!-- Sender information -->
<input type="hidden" name="billingdob" value="2001-01-01">
<input type="hidden" name="billingfirstname" value="Jay">
<input type="hidden" name="billinglastname" value="Doe">
<input type="hidden" name="billingpremise" value="No 789">
<input type="hidden" name="billingstreet" value="Test Street">
<input type="hidden" name="billingtown" value="Bangor">
<input type="hidden" name="billingcounty" value="Gwynedd">
<input type="hidden" name="billingpostcode" value="TR45 6ST">
<input type="hidden" name="billingcountryiso2a " value="GB">
<!-- End of sender information -->
<!-- Recipient information -->
<input type="hidden" name="customerfirstname" value="John">
<input type="hidden" name="customerlastname" value="Smith">
<input type="hidden" name="customercountryiso2a" value="GB">
<input type="hidden" name="customeraccountnumber" value="12345678">
<input type="hidden" name="customeraccountnumbertype" value="ACCOUNT">
<!-- End of recipient information -->
<!-- Amount and currency information -->
<input type="hidden" name="currencyiso3a" value="GBP">
<input type="hidden" name="mainamount" value="100.00">
<!-- End of Amount and currency information -->
<!-- HTML submit Pay button information -->
<input type="submit" value="Pay">
<!-- End of HTML submit Pay button information -->
</form>
</body>
</html>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
The following payload example includes the fields required for merchants with MCC 6211:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F52"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following payload example includes the fields required for merchants with MCC 6211:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"billingcounty":"Gwynedd",
"billingcountryiso2a":"GB",
"baseamount":"1050",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener",
"transactiontypeindicator":"F52"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6211:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "{{wsapi_username}}"
stconfig.password = "{{wsapi_password}}"
st = securetrading.Api(stconfig)
auth = {
"accountfunding": "1", #New field for AFT
"accounttypedescription": "MOTO",
"baseamount": "1050",
"billingcountryiso2a": "GB",
"billingcounty": "Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname": "Jay",
"billinglastname": "Doe",
"billingpremise": "No 789",
"billingstreet": "Test Street",
"billingtown": "Bangor",
"currencyiso3a": "GBP",
"customeraccountnumber": "123456789",
"customeraccountnumbertype": "ACCOUNT",
"customercountryiso2a": "GB",
"customerfirstname": "John",
"customerlastname": "Smith",
"expirydate": "01/35",
"pan": "4111111111111111",
"securitycode": "123",
"requesttypedescriptions": ["AUTH"],
"sitereference": "{{site_reference}}",
"transactiontypeindicator": "F52" #New field for AFT
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => '{{wsapi_username}}',
'password' => '{{wsapi_password}}',
);
$requestData = array(
'accountfunding' => '1', /*New field for AFT*/
'accounttypedescription' => 'MOTO',
'baseamount' => '1050',
'billingcountryiso2a' => 'GB',
'billingcounty' => 'Gwynedd',
'billingdob' => '2001-01-01',
'billingfirstname' => 'Jay',
'billinglastname' => 'Doe',
'billingpremise' => 'No 789',
'billingstreet' => 'Test Street',
'billingtown' => 'Bangor',
'currencyiso3a' => 'GBP',
'customeraccountnumber' => '123456789',
'customeraccountnumbertype' => 'ACCOUNT',
'customercountryiso2a' => 'GB',
'customerfirstname' => 'John',
'customerlastname' => 'Smith',
'expirydate' => '01/35',
'pan' => '4111111111111111',
'securitycode' => '123',
'requesttypedescriptions' => array('AUTH'),
'sitereference' => '{{site_reference}}',
'transactiontypeindicator' => 'F52' /*New field for AFT*/
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user {{wsapi_username}}:{{wsapi_password}} <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"{{wsapi_username}}",
"version": "1.00",
"request": [{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator": "F52"
}]
}'
{
"alias":"{{wsapi_username}}",
"version":"1.00",
"request":[{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator": "F52"
}]
}
<requestblock version="3.67">
<alias>{{wsapi_username}}</alias>
<request type="AUTH">
<billing>
<amount currencycode="GBP">1050</amount>
<country>GB</country>
<county>Gwynedd</county>
<dob>2001-01-01</dob>
<name>
<first>Jay</first>
<last>Doe</last>
</name>
<payment>
<pan>4111111111111111</pan>
<expirydate>01/35</expirydate>
<securitycode>123</securitycode>
</payment>
<premise>No 789</premise>
<street>Test Street</street>
<town>Bangor</town>
</billing>
<customer>
<accountnumber type="ACCOUNT">12345678</accountnumber>
<country>GB</country>
<name>
<first>John</first>
<last>Smith</last>
</name>
</customer>
<merchant>
<accountfunding>1</accountfunding>
<transactiontypeindicator>F52</transactiontypeindicator>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>{{site_reference}}</sitereference>
</operation>
</request>
</requestblock>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
MCC 6051
This MCC is used for the funding of an account (excluding prepaid card loads), the purchase of foreign currency, liquid and cryptocurrency assets (for example: cryptocurrency), money orders, or travellers' cheques that occurs at non-financial institutions such as currency exchanges or money order (a negotiable paper-based remittance – not a money transfer) merchants.
This MCC must also be used for the repayment of a loan or debt if the entity that holds the debt is not a financial institution.
A merchant that sells liquid and cryptocurrency assets such as cryptocurrency must include all required data in the authorisation request and clearing record. All other transactions at the same merchant location must use the appropriate MCC for those transactions.
For this MCC, Visa mandate that these transactions are flagged accordingly, and that additional sender and recipient information is included in the request. Mastercard is scheduled to mandate the same requirements from August 2025.
The following is an example of a POST to Payment Pages that includes the fields required for merchants with MCC 6051:
<html>
<body>
<!-- HTML form POST instruction and endpoint information -->
<form method="POST" action="https://payments.securetrading.net/process/payments/details">
<!-- End of HTML form POST instruction and endpoint information -->
<!-- sitereference; stprofile; and version information -->
<input type="hidden" name="sitereference" value="{{site_reference}}">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<!-- End of sitereference; stprofile; and version information -->
<!-- Account funding flagging - NEW FIELDS -->
<input type="hidden" name="accountfunding" value="1">
<input type="hidden" name="transactiontypeindicator" value="F52">
<!-- End of Account funding flagging -->
<!-- Sender information -->
<input type="hidden" name="billingdob" value="2001-01-01">
<input type="hidden" name="billingfirstname" value="Jay">
<input type="hidden" name="billinglastname" value="Doe">
<input type="hidden" name="billingpremise" value="No 789">
<input type="hidden" name="billingstreet" value="Test Street">
<input type="hidden" name="billingtown" value="Bangor">
<input type="hidden" name="billingcounty" value="Gwynedd">
<input type="hidden" name="billingpostcode" value="TR45 6ST">
<input type="hidden" name="billingcountryiso2a " value="GB">
<!-- End of sender information -->
<!-- Recipient information -->
<input type="hidden" name="customerfirstname" value="John">
<input type="hidden" name="customerlastname" value="Smith">
<input type="hidden" name="customercountryiso2a" value="GB">
<input type="hidden" name="customeraccountnumber" value="12345678">
<input type="hidden" name="customeraccountnumbertype" value="ACCOUNT">
<!-- End of recipient information -->
<!-- Amount and currency information -->
<input type="hidden" name="currencyiso3a" value="GBP">
<input type="hidden" name="mainamount" value="100.00">
<!-- End of Amount and currency information -->
<!-- HTML submit Pay button information -->
<input type="submit" value="Pay">
<!-- End of HTML submit Pay button information -->
</form>
</body>
</html>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
The following payload example includes the fields required for merchants with MCC 6051:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F52"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following payload example includes the fields required for merchants with MCC 6051:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"billingcounty":"Gwynedd",
"billingcountryiso2a":"GB",
"baseamount":"1050",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener",
"transactiontypeindicator":"F52"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6051:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "{{wsapi_username}}"
stconfig.password = "{{wsapi_password}}"
st = securetrading.Api(stconfig)
auth = {
"accountfunding": "1", #New field for AFT
"accounttypedescription": "MOTO",
"baseamount": "1050",
"billingcountryiso2a": "GB",
"billingcounty": "Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname": "Jay",
"billinglastname": "Doe",
"billingpremise": "No 789",
"billingstreet": "Test Street",
"billingtown": "Bangor",
"currencyiso3a": "GBP",
"customeraccountnumber": "123456789",
"customeraccountnumbertype": "ACCOUNT",
"customercountryiso2a": "GB",
"customerfirstname": "John",
"customerlastname": "Smith",
"expirydate": "01/35",
"pan": "4111111111111111",
"securitycode": "123",
"requesttypedescriptions": ["AUTH"],
"sitereference": "{{site_reference}}",
"transactiontypeindicator": "F52" #New field for AFT
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => '{{wsapi_username}}',
'password' => '{{wsapi_password}}',
);
$requestData = array(
'accountfunding' => '1', /*New field for AFT*/
'accounttypedescription' => 'MOTO',
'baseamount' => '1050',
'billingcountryiso2a' => 'GB',
'billingcounty' => 'Gwynedd',
'billingdob' => '2001-01-01',
'billingfirstname' => 'Jay',
'billinglastname' => 'Doe',
'billingpremise' => 'No 789',
'billingstreet' => 'Test Street',
'billingtown' => 'Bangor',
'currencyiso3a' => 'GBP',
'customeraccountnumber' => '123456789',
'customeraccountnumbertype' => 'ACCOUNT',
'customercountryiso2a' => 'GB',
'customerfirstname' => 'John',
'customerlastname' => 'Smith',
'expirydate' => '01/35',
'pan' => '4111111111111111',
'securitycode' => '123',
'requesttypedescriptions' => array('AUTH'),
'sitereference' => '{{site_reference}}',
'transactiontypeindicator' => 'F52' /*New field for AFT*/
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user {{wsapi_username}}:{{wsapi_password}} <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"{{wsapi_username}}",
"version": "1.00",
"request": [{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F52"
}]
}'
{
"alias":"{{wsapi_username}}",
"version":"1.00",
"request":[{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}",
"transactiontypeindicator":"F52"
}]
}
<requestblock version="3.67">
<alias>{{wsapi_username}}</alias>
<request type="AUTH">
<billing>
<amount currencycode="GBP">1050</amount>
<country>GB</country>
<county>Gwynedd</county>
<dob>2001-01-01</dob>
<name>
<first>Jay</first>
<last>Doe</last>
</name>
<payment>
<pan>4111111111111111</pan>
<expirydate>01/35</expirydate>
<securitycode>123</securitycode>
</payment>
<premise>No 789</premise>
<street>Test Street</street>
<town>Bangor</town>
</billing>
<customer>
<accountnumber type="ACCOUNT">12345678</accountnumber>
<country>GB</country>
<name>
<first>John</first>
<last>Smith</last>
</name>
</customer>
<merchant>
<accountfunding>1</accountfunding>
<transactiontypeindicator>F52</transactiontypeindicator>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>{{site_reference}}</sitereference>
</operation>
</request>
</requestblock>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
MCC 6012
This MCC is used by financial institutions for the purchase of merchandise or services or the repayment of loans and debts.
“Financial institution” includes banks, savings and loans, thrifts, and credit unions. For example: the purchase of checks, other financial products, or promotional merchandise, deposits, the funding of an account, the purchase or reload of a stored value card, the purchase of foreign currency, liquid assets, money orders (a negotiable paper-based remittance – not a money transfer), travellers' cheques, and loan fees or financial counselling service fees.
This MCC is also used for the repayment of a debt, loan, or credit card balance by a cardholder to the financial institution.
For this MCC, Visa mandate that these transactions are flagged accordingly, and that additional sender and recipient information is included in the request. Mastercard does not mandate the flagging of Account Funding Transactions for MCC 6012.
The following is an example of a POST to Payment Pages that includes the fields required for merchants with MCC 6012:
<html>
<body>
<!-- HTML form POST instruction and endpoint information -->
<form method="POST" action="https://payments.securetrading.net/process/payments/details">
<!-- End of HTML form POST instruction and endpoint information -->
<!-- sitereference; stprofile; and version information -->
<input type="hidden" name="sitereference" value="{{site_reference}}">
<input type="hidden" name="stprofile" value="default">
<input type="hidden" name="version" value="2">
<!-- End of sitereference; stprofile; and version information -->
<!-- Account funding flagging - NEW FIELD -->
<input type="hidden" name="accountfunding" value="1">
<!-- End of Account funding flagging -->
<!-- Sender information -->
<input type="hidden" name="billingdob" value="2001-01-01">
<input type="hidden" name="billingfirstname" value="Jay">
<input type="hidden" name="billinglastname" value="Doe">
<input type="hidden" name="billingpremise" value="No 789">
<input type="hidden" name="billingstreet" value="Test Street">
<input type="hidden" name="billingtown" value="Bangor">
<input type="hidden" name="billingcounty" value="Gwynedd">
<input type="hidden" name="billingpostcode" value="TR45 6ST">
<input type="hidden" name="billingcountryiso2a " value="GB">
<!-- End of sender information -->
<!-- Recipient information -->
<input type="hidden" name="customerfirstname" value="John">
<input type="hidden" name="customerlastname" value="Smith">
<input type="hidden" name="customercountryiso2a" value="GB">
<input type="hidden" name="customeraccountnumber" value="12345678">
<input type="hidden" name="customeraccountnumbertype" value="ACCOUNT">
<!-- End of recipient information -->
<!-- Amount and currency information -->
<input type="hidden" name="currencyiso3a" value="GBP">
<input type="hidden" name="mainamount" value="100.00">
<!-- End of Amount and currency information -->
<!-- HTML submit Pay button information -->
<input type="submit" value="Pay">
<!-- End of HTML submit Pay button information -->
</form>
</body>
</html>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
The following payload example includes the fields required for merchants with MCC 6012:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following payload example includes the fields required for merchants with MCC 6012:
{
"payload":{
"accountfunding":"1",
"accounttypedescription":"ECOM",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"billingcounty":"Gwynedd",
"billingcountryiso2a":"GB",
"baseamount":"1050",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"requesttypedescriptions":["THREEDQUERY","AUTH"],
"sitereference":"{{site_reference}}",
"termurl":"https://payments.securetrading.net/process/payments/mobilesdklistener"
},
"iat":1559033849,
"iss":"{{jwt_username}}"
}
The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6012:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "{{wsapi_username}}"
stconfig.password = "{{wsapi_password}}"
st = securetrading.Api(stconfig)
auth = {
"accountfunding": "1", #New field for AFT
"accounttypedescription": "MOTO",
"baseamount": "1050",
"billingcountryiso2a": "GB",
"billingcounty": "Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname": "Jay",
"billinglastname": "Doe",
"billingpremise": "No 789",
"billingstreet": "Test Street",
"billingtown": "Bangor",
"currencyiso3a": "GBP",
"customeraccountnumber": "123456789",
"customeraccountnumbertype": "ACCOUNT",
"customercountryiso2a": "GB",
"customerfirstname": "John",
"customerlastname": "Smith",
"expirydate": "01/35",
"pan": "4111111111111111",
"securitycode": "123",
"requesttypedescriptions": ["AUTH"],
"sitereference": "{{site_reference}}"
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => '{{wsapi_username}}',
'password' => '{{wsapi_password}}',
);
$requestData = array(
'accountfunding' => '1', /*New field for AFT*/
'accounttypedescription' => 'MOTO',
'baseamount' => '1050',
'billingcountryiso2a' => 'GB',
'billingcounty' => 'Gwynedd',
'billingdob' => '2001-01-01',
'billingfirstname' => 'Jay',
'billinglastname' => 'Doe',
'billingpremise' => 'No 789',
'billingstreet' => 'Test Street',
'billingtown' => 'Bangor',
'currencyiso3a' => 'GBP',
'customeraccountnumber' => '123456789',
'customeraccountnumbertype' => 'ACCOUNT',
'customercountryiso2a' => 'GB',
'customerfirstname' => 'John',
'customerlastname' => 'Smith',
'expirydate' => '01/35',
'pan' => '4111111111111111',
'securitycode' => '123',
'requesttypedescriptions' => array('AUTH'),
'sitereference' => '{{site_reference}}'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user {{wsapi_username}}:{{wsapi_password}} <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"{{wsapi_username}}",
"version": "1.00",
"request": [{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}"
}]
}'
{
"alias":"{{wsapi_username}}",
"version":"1.00",
"request":[{
"accountfunding":"1",
"accounttypedescription":"MOTO",
"baseamount":"1050",
"billingcountryiso2a":"GB",
"billingcounty":"Gwynedd",
"billingdob":"2001-01-01",
"billingfirstname":"Jay",
"billinglastname":"Doe",
"billingpremise":"No 789",
"billingstreet":"Test Street",
"billingtown":"Bangor",
"currencyiso3a":"GBP",
"customeraccountnumber":"123456789",
"customeraccountnumbertype":"ACCOUNT",
"customercountryiso2a":"GB",
"customerfirstname":"John",
"customerlastname":"Smith",
"expirydate":"01/35",
"pan":"4111111111111111",
"securitycode":"123",
"requesttypedescriptions":["AUTH"],
"sitereference":"{{site_reference}}"
}]
}
<requestblock version="3.67">
<alias>{{wsapi_username}}</alias>
<request type="AUTH">
<billing>
<amount currencycode="GBP">1050</amount>
<country>GB</country>
<county>Gwynedd</county>
<dob>2001-01-01</dob>
<name>
<first>Jay</first>
<last>Doe</last>
</name>
<payment>
<pan>4111111111111111</pan>
<expirydate>01/35</expirydate>
<securitycode>123</securitycode>
</payment>
<premise>No 789</premise>
<street>Test Street</street>
<town>Bangor</town>
</billing>
<customer>
<accountnumber type="ACCOUNT">12345678</accountnumber>
<country>GB</country>
<name>
<first>John</first>
<last>Smith</last>
</name>
</customer>
<merchant>
<accountfunding>1</accountfunding>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<sitereference>{{site_reference}}</sitereference>
</operation>
</request>
</requestblock>
Replace <DOMAIN>
with a supported domain. Click here for a full list.
Field specification
The fields required in an Account Funding Transaction (AFT) authorisation request are the same as a standard AUTH request, except with the following differences:
Field | Format | Description | ||
Account funding fields These new fields are required to facilitate Account Funding Transactions (AFT). |
||||
| accountfunding XPath: /merchant/accountfunding |
Numeric (1) |
Submit 1 to indicate the transaction is an Account Funding Transaction (AFT). |
|
| transactiontypeindicator XPath: /merchant/transactiontypeindicator |
Alphanumeric (3) |
Submit the value below that corresponds to your MCC:
|
|
Sender fields For Account Funding Transaction (AFT) AUTH requests, fields prefixed with "billing" represent data associated with the sender of funds. |
||||
| billingcountryiso2a XPath: /billing/country |
Alpha (2) |
The country for the sender's address. This will need to be in ISO2A format. |
|
| billingdob XPath: /billing/dob |
Date YYYY-MM-DD |
The sender's date of birth. |
|
| billingfirstname XPath: /billing/name/first |
Alphanumeric including symbols (127) |
The sender's first name. |
|
| billinglastname XPath: /billing/name/last |
Alphanumeric including symbols (127) |
The sender's last name. |
|
| billingpremise XPath: /billing/premise |
Alphanumeric including symbols (25) |
The house number or first line of the sender's address. |
|
| billingstreet XPath: /billing/street |
Alphanumeric including symbols (127) |
The street entered for the sender's address. |
|
| billingtown XPath: /billing/town |
Alphanumeric including symbols (127) |
The town entered for the sender's address. |
|
| billingcounty XPath: /billing/county |
Alphanumeric including symbols (127) |
The county entered for the sender's address. For US and Canadian addresses, submit the two-character state or province code, e.g. for British Columbia, submit “BC”. Required where the sender country (billingcountryiso2a) is "US" (United States) or "CA" (Canada). |
|
Recipient fields For Account Funding Transaction (AFT) AUTH requests, fields prefixed with "customer" represent data associated with the recipient of funds. |
||||
| customeraccountnumber XPath: /customer/accountnumber |
Numeric (20) |
If account number type is “ACCOUNT”, the account number of the recipient. 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). |
|
| customeraccountnumbertype XPath: /customer/accountnumber/@type |
Alpha (7) |
Either “CARD” or “ACCOUNT”. When the customeraccountnumber value submitted in the request is a card number, the customeraccountnumbertype value in the response, when displayed in Portal and returned in URL notification(s) (if enabled) will be: "CARD". |
|
| customercountryiso2a XPath: /customer/country |
Alpha (2) |
The recipient's country. This will need to be in ISO2A format. Click here for a full list of country codes. Required where the recipient country (customercountryiso2a) is "CA" (Canada). |
|
| customerfirstname XPath: /customer/name/first |
Alphanumeric including symbols (127) |
The recipient's first name. |
|
| customerlastname XPath: /customer/name/last |
Alphanumeric including symbols (127) |
The recipient's last name. |
|
customercounty XPath: /customer/county |
Alphanumeric including symbols (127) |
The recipient's county. For US and Canadian addresses, submit the two-character state or province code, e.g. for British Columbia, submit “BC”. Required where the recipient country (customercountryiso2a) is "CA" (Canada). |
||
customerpremise XPath: /customer/premise |
Alphanumeric including symbols (25) |
The recipient's property name/number. Required where the recipient country (customercountryiso2a) is "CA" (Canada). |
||
customerstreet XPath: /customer/street |
Alphanumeric including symbols (127) |
The recipient's street name. Required where the recipient country (customercountryiso2a) is "CA" (Canada). |
||
customertown XPath: /customer/town |
Alphanumeric including symbols (127) |
The recipient's town. Required where the recipient country (customercountryiso2a) is "CA" (Canada). |
||
customermiddlename XPath: /customer/name/middle |
Alphanumeric including symbols (127) |
The recipient's middle name. Required where the recipient country (customercountryiso2a) is "ZA" (South Africa). |
FAQ
What is a funding transaction?
A funding transaction is similar to a regular purchase, but instead of buying goods or services, funds are transferred between two accounts. Examples may include topping up a prepaid card or funding a digital wallet or peer-to-peer payment account. Funding transactions are also used for buying high-risk securities and cryptocurrencies.
Are AFT and MoneySend funding subject to the same velocity limits and sanction screening as OCT (Original Credit Transfer) and CFT (Cardholder Funds Transfer)?
Yes. There are velocity limits and Anti-Money Laundering (AML) checks performed on AFT and MoneySend funding. This is to protect the payments landscape against money laundering, sanctions violations and other financial crimes.
Do merchants need to perform registration with the card schemes?
Yes. This can be done on your behalf by Trust Payments. However, Mastercard require more details to register P2P merchants than is required for non-P2P merchants. Before they can initiate compliant MoneySend funding transactions, P2P merchants need to submit their AML policy to complete the registration process with Mastercard. If you have questions related to the registration process, please contact your account manager or our Support Team.
What is the difference between P2P and non-P2P?
- Non-P2P is when the cardholder uses their card to top up a balance on a merchant held account that is either on file at the merchant or entered at the POI (Point of Interaction). Only when the account is topped up can they use that account to transact or initiate payments to other cardholders or accounts.
- P2P is where there is no balance required and the funds are pulled directly from the card on file to move to the recipient party.
Why have I received errorcode "30000" in the response?
If the errorcode is “30000”, this indicates a field error.
If you look at the errordata field returned, this typically contains the name of the field that was deemed invalid. You will need to retry the request, ensuring all required fields have been submitted, and that all submitted field values follow our specification.
How do merchants test these changes?
Testing is now available to merchants using their test site reference. Our integration teams are on hand to support merchants implementing these changes.
When the changes are ready for release to the production environment, please contact integrationsupport@trustpayments.com so the live site reference can be configured accordingly.
When can merchants deploy these changes?
Merchants can deploy these changes to their live site reference(s) once they have successfully tested them on their test site reference(s).
Please contact integrationsupport@trustpayments.com when you are ready to deploy these changes to your live site reference(s).
What happens if merchants fail to make the required changes?
These requirements are driven by card scheme rules. If the required changes are not completed, the card schemes may mandate that all non-compliant transactions are rejected.
Related articles
AUTH Specification
This article provides code examples and field specification for standard authorisation requests.
Merchant Initiated Transactions (MIT)
Submit ad-hoc requests to process a transaction from previously stored card details without cardholder interaction.