Visa Direct
The use of a AFT (Account Funding Transaction) is not required to conduct a OCT (Original Credit Transaction) and the use of a OCT is not required to conduct a AFT.
When implementing AFTs for VISA you must populate data tag 12 in AdditionalData.
Transaction Type
For AFT use the appropriate transaction type. See Transaction types.
AFT (Account Funding Transaction/Pull Funds)
AFT is a transaction used to "pull" funds from a card account.
MCC codes
There are 6 MCC codes that are supported to AFT.
| MCC | Description |
|---|---|
| 4829 | Non-Financial Institution Wire Transfer Money Orders |
| 6211 | Brokerage |
| 6012 | Financial Institutions – Merchandise and Services |
| 6540 | Non-Financial Institutions – Stored Value Card Purchase/Load |
| 6051 | Non-Financial Institutions – Foreign Currency, Non-Fiat Currency (example, Crypto-currency), Money Orders (not Money Transfer), Account Funding (not Stored Value Load), Travelers Cheques, and Debt Repayment |
| 8931 | Accounting, Auditing, and Bookkeeping services including Payroll |
| 7995 | Gambling and online casinos |
Business Application Identifier (BAI)
The BAI will be added to additional data tag 12 subfield 02.
Allowed BAI's for MCC's in AFT
| Type | BAI | 4829 | 6211 | 6012 | 6540 | 6051 | 8931 | 7995 |
|---|---|---|---|---|---|---|---|---|
| Account-to-Account | AA | X | X | X | ||||
| Financial Institution-offered Bank-Initiated P2P Money Transfer | BI | X | ||||||
| Funds Transfer | FT | X | X | X | X | X | X | |
| Person-to-person | PP | X | X | |||||
| Funds Disbursement | FD | X | X | X | X | X | ||
| Merchant Payment | MP | X | ||||||
| Payroll Disbursement | PD | X | X | |||||
| Prepaid card load or top-up | TU | X | X | X | ||||
| Liquid assets | LA | X | X | X |
Extra information about BAI and MCC
For Funds Disbursement, BAI = FD, any MCC associated to the merchant can be used.
Fields
For Visa Direct AFT there are 2 subelements which all have subfields. These subelements will be added to additional data tag 12. Then there is the information of the Account Owner which is added to tag 13.
| Subelement | Description |
|---|---|
| 01 | Recipient/Sender Data |
| 02 | BAI/IsCrossBorder/Purpose of Payment |
All subelements and subfields are TLV (Tag-Length-Value) parameters.
Tag (subelement or subfield) defined as alphanumerical, two characters long.
Length is defined as a three numerical characters, i.e possible values 001-999.
Value is defined as the format is given in the tables for subfields (Mandatory subfields, Conditional subfields, Optional subfields).
Subfields
X = Mandatory
C = Conditional
O = Optional
| Parameter | Tag | Subelement | Subfield | Domestic | CrossBorder |
|---|---|---|---|---|---|
| Sender Reference Number Format: ans...16 |
12 | 01 | 01 | C | C |
| Sender Account Number Format: ans...34 |
12 | 01 | 02 | C | C |
| Sender Name Format: ans...30 |
12 | 01 | 03 | X | X |
| Sender Address Format: ans...35 |
12 | 01 | 04 | O | X |
| Sender City Format: ans...25 |
12 | 01 | 05 | O | X |
| Sender State Format: an 2 |
12 | 01 | 06 | O | O |
| Sender Country Format: an 3 |
12 | 01 | 07 | O | X |
| Sender Postal Code Format: an...10 |
12 | 01 | 10 | O | O |
| Recipient Name Format: an...30 |
12 | 01 | 0A | X | X |
| Recipient City Format: an...25 |
12 | 01 | 0C | O | O |
| Recipient Country Format: an...25 |
12 | 01 | 0D | O | O |
| Business Application Identifier (BAI) Format: an...25 |
12 | 02 | 01 | X | X |
| Cross-Border Transaction Format: n 1 |
12 | 02 | 02 | X | X |
| Purpose of Payment Format: an 6 |
12 | 02 | 03 | C | C |
| Source of Funds Format: an 2 |
12 | 02 | 08 | O | O |
| Account Reference Code Format: n 2 |
13 | 80 | - | O | O |
| Account Owner City Name Format: ans...25 |
13 | 8B | - | O | O |
| Account Owner Country Code Format: a 3 |
13 | 8E | - | O | O |
| Account Owner Address Format: ans...50 |
13 | 86 | - | O | O |
| Account Owner Postal Code Format: ans...16 |
13 | 8A | - | O | O |
| Account Owner Country Subdivision Code Major Format: ans...3 |
13 | 8D | - | O | O |
| Account Owner Nationality Format: a 3 |
13 | 8F | - | O | O |
| Account Owner Country of Birth Format: a 3 |
13 | 90 | - | O | O |
| Account Owner Occupation Format: ans...35 |
13 | 91 | - | O | O |
| Account Owner Date of Birth Format: n 8 |
13 | 92 | - | X | X |
| Account Owner email address personal Format: ans...99 |
13 | 97 | - | O | O |
Additional Information for Subfields
When identifying a country (Sender Country, Recipient Country) use the numeric Country Code as seen from VISA ISO Country Codes
Subfield 02 in Subelement 02 is number that tells if the transaction will be cross-border or not.
- 0 = that the transaction is not a Cross-Border Transaction, meaning a Domestic transaction.
- 1 = that the transaction is a Cross-Border Transaction.
Sender Reference Number (subelement 01 - subfield 01)
The Sender Reference Number inclusion is conditional if the sender’s account number is not available or not applicable to the transaction. Otherwise it is optional for Domestic and Cross-Border Money and Non-money Transfer AFTs.
Sender Account Number (sublelement 01 - subfield 02)
The Sender Account Number is Mandatory for Europe intra-EEA cross-border. Else it is conditional if their is no sender reference number.
Account Reference Code (Tag 80) and sender or recipient name
When Field 56, Dataset 05 (Account Owner data) is present on a Visa AFT, Tag 80 (Account Reference Code) is required so Visa can identify whether the data refers to the sender or the recipient.
Additional local rules may apply:
- South Africa: Required for cross-border AFT transactions.
- Colombia: Mandatory for domestic AFT transactions.
Purpose of Payment (subelement 02 - subfield 03)
This field contains a code that describes the purpose of payment to classify and report the nature and purpose of the transaction.
The following countries must send the Purpose of Payment: Argentina, Bangladesh, Chile, Colombia, Egypt, India and Saudi Arabia. Other countries have the option to send the code.
Purpose of Payment Standardized Codes List
| Code Description | Code to be Used |
|---|---|
| Account management | ISACCT |
| Transaction is the payment of allowance | ISALLW |
| Settlement of annuity | ISANNI |
| Unemployment disability benefit | ISBENE |
| Business expenses | ISBEXP |
| Bonus payment | ISBONU |
| Bus transport related business | ISBUSB |
| Cash management transfer | ISCASH |
| Payment of cable TV bill | ISCBTV |
| Government institute issued related to cash compensation, helplessness, and disability | ISCCHD |
| Credit card payment | ISCCRD |
| Payment of credit card bill | ISCDBL |
| Payment for charity reasons | ISCHAR |
| Collection payment | ISCOLL |
| Commercial payment | ISCOMC |
| Commission | ISCOMM |
| Compensation relating to interest loss/value date adjustment and can include fees | ISCOMP |
| Payment of copyright | ISCPYR |
| Related to a debit card payment | ISDCRD |
| Payment of a deposit | ISDEPT |
| Payment of dividend | ISDIVD |
| Payment of study/tuition fees | ISEDUC |
| Payment of electricity bill | ISELEC |
| Energies | ISENRG |
| General fees | ISFEES |
| Payment for ferry related business | ISFERB |
| Foreign exchange | ISFREX |
| Payment of gas bill | ISGASB |
| Compensation to unemployed persons during insolvency procedures | ISGFRP |
| Government payment | ISGOVT |
| Health insurance | ISHLTI |
| Reimbursement of credit card payment | ISICCP |
| Reimbursement of debit card payment | ISIDCP |
| Payment of car insurance premium | ISINPC |
| Transaction is related to the payment of an insurance claim | ISINSC |
| Installment | ISINSM |
| Insurance premium | ISINSU |
| Payment of mutual funds, investment products and shares | ISINVS |
| Intra company payment | ISINTC |
| Interest | ISINTE |
| Income tax | ISINTX |
| Investment | ISINVS |
| Labor insurance | ISLBRI |
| License fee | ISLICF |
| Life insurance | ISLIFI |
| Loan | ISLOAN |
| Medical services | ISMDCS |
| Mobile P2B payment | ISMP2B |
| Mobile P2P payment | ISMP2P |
| Mobile top up | ISMTUP |
| Transaction is related to a payment of other telecom related bill | ISOTLC |
| Payroll | ISPAYR |
| Contribution to pension fund | ISPEFC |
| Pension payment | ISPENS |
| Payment of telephone bill | ISPHON |
| Property insurance | ISPPTI |
| Transaction is for general rental/lease | ISRELG |
| The payment of rent | ISRENT |
| Payment for railway transport related business | ISRLWY |
| Royalties | ISROYA |
| Salary payment | ISSALA |
| Payment to savings/retirement account | ISSAVG |
| Securities | ISSECU |
| Social security benefit | ISSSBE |
| Study | ISSTDY |
| Subscription | ISSUBS |
| Supplier payment | ISSUPP |
| Refund of a tax payment or obligation | ISTAXR |
| Tax payment | ISTAXS |
| Transaction is related to a payment of telecommunications related bill | ISTBIL |
| Trade services operation | ISTRAD |
| Treasury payment | ISTREA |
| Payment for travel | ISTRPT |
| Utility bill payment | ISUBIL |
| Value added tax payment | ISVATX |
| With holding | ISWHLD |
| Payment of water bill | ISWTER |
| Not otherwise specified | ISNOWS |
| Other | ISOTHR |
Payment facilitator address fields
The following parameters should be provided when doing cross-border AFT's. PaymentFacilitatorStreetAddress PaymentFacilitatorCityName PaymentFacilitatorStateProvinceCode PaymentFacilitatorPostalCode PaymentFacilitatorCountryCode
Cross-border AFT/OCT regional data requirements
Visa enforces AML data requirements on cross-border AFT and OCT transactions destined for specific countries. When a mandatory field is missing, Visa returns decline code 64 (Transaction does not fulfill AML requirement).
Destined for New Zealand
MerchantStreet (Acceptor Street Address, ISO 34.02.CO) is mandatory.
Destined for Saudi Arabia
Purpose of Payment (additional data tag 12, subelement 02, subfield 03) is mandatory. Send one of the standardized codes listed above.
Destined for Australia or New Zealand
When Account Owner data (additional data tag 13) is present and Tag 80 (Account Reference Code) = 06, the Account Owner Address (tag 86) is mandatory.
North America specification
When implementing AFTs for VISA to and from North America you must populate data tag 13 in AdditionalData.
This is information of the Account Owner for the AFT.
| Description | Subfield | Format |
|---|---|---|
| Account Owner City Name | 8B | ans ...25 |
| Account Owner Country Code | 8E | a 3 |
| Account Owner Address | 86 | ans ...50 |
| Account Owner Postal Code | 8A | ans ...16 |
| Account Owner Country Subdivision Code Major | 8D | ans ...3 |
For all transactions to and from Canada the following must be populated: Account Owner City Name, Account Owner Country Code, Account Owner Address, Account Owner Postal Code.
If the Account Owner Country Code is CAN or USA the Account Owner Country Subdivision Code Major must be populated as well.
An example of Country Subdivision Code Major.
In Canada for Ontario the subdivision code is ON.
In USA for Florida the subdivision code is FL.
Example of legal Tag 13.
Canada : 8B007Toronto8E003CAN86012MainStreet 18A0031058D002ON.
USA : 8E003USA8D002FL.
Account Identifier
When implementing AFTs for VISA for extra information, you can populate data tag 14 in AdditionalData.
This is information of the Account Identifier for the AFT.
| Description | Subfield | Format |
|---|---|---|
| Account Identifier Value | 83 | ans ...34 |
| Account Identifier Type Code | 84 | an 2 |
The Account Identifier Value contains the account identifier value of the recipient. And will be sent recipient issuer.
The Account Identifier Type Code contains the account identifier type. The following are the 9 options possible to send in:
- 00 (Other)
- 01 (RTN + Bank Account)
- 02 (IBAN)
- 03 (Card Account)
- 04 (Email)
- 05 (Phone Number)
- 06 (Bank account number (BAN) + Bank Identification Сode (BIC))
- 07 (Wallet ID)
- 08 (Social Network ID)
Examples
This is a correct string for additional data tag 12 for a AFT transaction
121350110102016411111111111111103011Jon Jonsson04013Laugarvegur 105009Reykjavik070033520A019Gunna Gunnarsdottir0202401002FD02001103006ISACCT
Lets break it down to understand it better.
additionalDataTag12 = 121350110102016411111111111111103011Jon Jonsson04013Laugarvegur 105009Reykjavik070033520A019Gunna Gunnarsdottir0202401002FD02001103006ISACCT
12 135
01 101
02 016 4111111111111111
03 011 Jon Jonsson
04 013 Laugarvegur 1
05 009 Reykjavik
07 003 352
0A 019 Gunna Gunnarsdottir
02 024
01 002 FD
02 001 1
03 006 ISACCT
Code Example
// Subelement 01
var senderAccountNumber = "4111111111111111";
var senderName = "Jon Jonsson";
var senderAddress = "Laugarvegur 1";
var senderCity = "Reykjavik";
var senderCountry = "352";
var recipientName = "Gunna Gunnarsdottir";
var subelement01 = "02" + senderAccountNumber.Length.ToString("000") + senderAccountNumber
+ "03" + senderName.Length.ToString("000") + senderName
+ "04" + senderAddress.Length.ToString("000") + senderAddress
+ "05" + senderCity.Length.ToString("000") + senderCity
+ "07" + senderCountry.Length.ToString("000") + senderCountry
+ "0A" + recipientName.Length.ToString("000") + recipientName;
//Subelement 02
var bai = "FD";
var isDomestic = "1";
var pop = "ISACCT";
var subelement02 = "01" + bai.Length.ToString("000") + bai
+ "02" + isDomestic.Length.ToString("000") + isDomestic
+ "03" + pop.Length.ToString("000") + pop;
//Additional data tag 12
var additonalDataTag12 = "01" + subelement01.Length.ToString("000") + subelement01 +"02" + subelement02.Length.ToString("000") + subelement02;
additonalDataTag12 = "12" + additonalDataTag12.Length.ToString("000") + additonalDataTag12;