Account Funding Transactions (AFT)

  Last updated: 

 

  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).

  Scroll down for further info

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 MCC 4829 must process all AUTH requests as Account Funding Transactions (AFT).

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.

Payment Pages (MCC 4829)

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.

JavaScript Library (MCC 4829)

The following payload example includes the fields required for merchants with MCC 4829:

JS Library payload
{
"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}}"
}
Android SDK / iOS SDK (MCC 4829)

The following payload example includes the fields required for merchants with MCC 4829:

Mobile SDK payload
{
"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}}"
}
Webservices API (MCC 4829)

The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 4829:

Python PHP cURL Raw JSON Raw XML
#!/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

Replace <DOMAIN> with a supported domain. Click here for a full list.

MCC 6540

  Merchants classified with MCC 6540 must process all AUTH requests as Account Funding Transactions (AFT).

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.

Payment Pages (MCC 6540)

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.

JavaScript Library (MCC 6540)

The following payload example includes the fields required for merchants with MCC 6540:

JS Library payload
{
"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}}"
}
Android SDK / iOS SDK (MCC 6540)

The following payload example includes the fields required for merchants with MCC 6540:

Mobile SDK payload
{
"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}}"
}
Webservices API (MCC 6540)

The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6540:

Python PHP cURL Raw JSON Raw XML
#!/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

Replace <DOMAIN> with a supported domain. Click here for a full list.

MCC 6211

  Merchants classified with MCC 6211 must process all AUTH requests as Account Funding Transactions (AFT).

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.

Payment Pages (MCC 6211)

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.

JavaScript Library (MCC 6211)

The following payload example includes the fields required for merchants with MCC 6211:

JS Library payload
{
"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}}"
}
Android SDK / iOS SDK (MCC 6211)

The following payload example includes the fields required for merchants with MCC 6211:

Mobile SDK payload
{
"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}}"
}
Webservices API (MCC 6211)

The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6211:

Python PHP cURL Raw JSON Raw XML
#!/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

Replace <DOMAIN> with a supported domain. Click here for a full list.

MCC 6051

  Merchants classified with MCC 6051 may process AUTH requests as Account Funding Transactions (AFT). All cryptocurrency purchases must be processed as Account Funding Transactions (AFT).

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.

Payment Pages (MCC 6051)

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.

JavaScript Library (MCC 6051)

The following payload example includes the fields required for merchants with MCC 6051:

JS Library payload
{
"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}}"
}
Android SDK / iOS SDK (MCC 6051)

The following payload example includes the fields required for merchants with MCC 6051:

Mobile SDK payload
{
"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}}"
}
Webservices API (MCC 6051)

The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6051:

Python PHP cURL Raw JSON Raw XML
#!/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

Replace <DOMAIN> with a supported domain. Click here for a full list.

MCC 6012

  Merchants classified with MCC 6012 may process AUTH requests as Account Funding Transactions (AFT).

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.

Payment Pages (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.

JavaScript Library (MCC 6012)

The following payload example includes the fields required for merchants with MCC 6012:

JS Library payload
{
"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}}"
}
Android SDK / iOS SDK (MCC 6012)

The following payload example includes the fields required for merchants with MCC 6012:

Mobile SDK payload
{
"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}}"
}
Webservices API (MCC 6012)

The following AUTH request example includes the fields mandated by Visa and Mastercard for merchants with category code 6012:

Python PHP cURL Raw JSON Raw XML
#!/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

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
required23.png   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:

  • MCC 4829
    • Submit F07 - General Person-to-Person Transfer
  • MCC 6540
    • Submit either F61 - Transfer to Own Staged Digital Wallet Account
    • Or F64 - Transfer to Own Debit or Prepaid Account
  • MCC 6211
    • Submit F52 - General Transfer to Own Account
  • MCC 6051
    • Submit F52 - General Transfer to Own Account
  • MCC 6012
    • Mastercard does not mandate flagging of Account Funding Transactions for MCC 6012.
required23.png   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.

Click here for a full list of country codes.

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.

conditional23.png 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).

required23.png   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.
If account number type is “CARD”, the card 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.

conditional23.png   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).

conditional23.png   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.

  For further information on handling error codes, click here for guidance.
  If you need further assistance, please contact integrationsupport@trustpayments.com.

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.

  If changes are deployed to production before the live site reference has been configured, this will result in failed transactions.

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.

  Learn more

Merchant Initiated Transactions (MIT)

Submit ad-hoc requests to process a transaction from previously stored card details without cardholder interaction.

  Learn more

Recurring payments

Process repeat transactions from previously stored card details.

  Learn more

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