AFT Deployment and What I should I know

AFT Deployment and What I should I know

Account Funding Transaction

1. Overview

An Account Funding Transaction (AFT) is a card-pull transaction that moves funds from a cardholder's account to a third-party destination — such as a wallet, another card, or a prepaid account. Unlike a standard purchase, the merchant is pulling funds on behalf of the cardholder to fund a transfer.


Supported Products

AFT is first being implemented in PayHOST and will roll out to other PayGate products over time. The integration uses the standard PayHOST SOAP interface with no separate endpoint. The same CardPaymentRequest (or TokenPaymentRequest / WebPaymentRequest) structure is used, with additional MoneySend blocks appended to carry sender, receiver, and scheme-routing information.


Supported Acquirers

Acquirer

Status

Visa

Mastercard

Standard Bank (SBSA)

In Progress

BAI-based

TTI-based

Nedbank

In Progress

BAI-based

TTI-based

Absa

Planned

BAI-based

TTI-based

Visa uses a Business Application Identifier (BAI) to classify the transaction purpose. Mastercard uses a Transaction Type Identifier (TTI). Both are resolved by the terminal MCC and, the TransferType field in the request. The merchant never sets BAI or TTI directly.


 

 

 

2. Supported Request Types

AFT MoneySend fields can be included in four PayHOST request types. They are optional at schema level in all cases — the acquirer and terminal MCC determine whether they are required.

Request Type

MoneySendSensitive

MoneySendData

AccountOwnerDataSensitive

CardPaymentRequest

WebPaymentRequest

TokenPaymentRequest

The WSDL is bank-agnostic. All request types accept the MoneySend elements regardless of acquirer. Bank-specific mandatory field rules apply regardless of which request type is used.


3. How AFT Routing Works

PayGate resolves the correct Visa BAI or Mastercard TTI from two inputs: the terminal MCC configured on the merchant's PayGate account, and the TransferType field sent in the request. The merchant never sets BAI or TTI directly.

If the MCC and TransferType combination does not resolve to a valid BAI or TTI, the transaction falls through and is processed as a normal card transaction — no error is returned. It is therefore critical that both values are correct.

TransferType values

TransferType is sent inside MoneySendData > TranSpecificData. Valid values are:

Value

Description

P2P

Person-to-person transfer

OwnAccount

Cardholder transferring to their own account

AgentCashOut

Agent-assisted cash disbursement

PrepaidLoad

Loading funds onto a prepaid instrument

Wallet

Funding a digital wallet

LiquidAssets

Liquid asset purchase (e.g. cryptocurrency)

Disbursement

General disbursement

Payroll

Payroll payment

CreditCardBill

Credit card bill payment

MCC + TransferType → BAI/TTI resolution

The resolved scheme identifier depends on the acquirer. Each acquirer's routing table is covered in full in Section 5 (Bank-Specific Requirements).

Nedbank difference

For Nedbank, BAI is resolved from the terminal MCC alone — TransferType only affects MCC 4829 Visa (distinguishing AA from PP). For Mastercard, Nedbank always uses TTI F52 regardless of MCC or TransferType. PayGate also auto-injects TransactionPurpose for certain MCCs — this is covered in the Nedbank section.


4. Request Structure

An AFT request is a standard PayHOST payment request with three additional optional blocks placed after the core payment fields. The blocks and their order in the XML are:

SinglePaymentRequest
└── CardPaymentRequest (or WebPaymentRequest / TokenPaymentRequest)
    ├── Account
    ├── Customer
    ├── CardNumber / CardExpiryDate (or VaultId)
    ├── CVV
    ├── Order
    
    ├── MoneySendSensitive       ← sensitive card/account numbers (encrypted channel)
    ├── MoneySendData            ← sender, receiver, and transfer classification
    └── AccountOwnerDataSensitive ← cross-border Visa only
    

MoneySendSensitive

Carries the sender and receiver account/card numbers as tagged values. These are transmitted over the secure channel and not logged.

<MoneySendSensitive>
    <MoneySendSensitiveData>
        <TagId>AccountNumberSender</TagId>
        <TagValue>4111111111111111</TagValue>
    </MoneySendSensitiveData>
    <MoneySendSensitiveData>
        <TagId>AccountNumberReceiver</TagId>
        <TagValue>4000000000000002</TagValue>
    </MoneySendSensitiveData>
</MoneySendSensitive>

Only two TagId values are valid: AccountNumberSender and AccountNumberReceiver. Both are mandatory for Nedbank. They are strongly recommended for SBSA and Absa.

MoneySendData

Carries transfer classification and full sender/receiver identity. The key sub-elements are:

MoneySendData
└── TranSpecificData
    ├── TransferType
    ├── PurposeOfPayment          (optional, merchant-supplied)
    ├── MoneyTransferSenderData
       ├── Reference
       ├── FundingSource
       └── Sender                ← AftPersonType (see below)
    └── MoneyTransferReceiverData
        ├── AccountNumberType     ← Nedbank only (must be WalletId)
        ├── AccountNumber         ← Nedbank only
        └── Receiver              ← AftPersonType (see below)

 

AftPersonType fields

Both Sender and Receiver use the same AftPersonType structure:

Field

Placement

Notes

FirstName

Direct child

Mandatory for SBSA sender and receiver

LastName

Direct child

Mandatory for SBSA sender and receiver

MiddleName

Direct child

Optional

DateOfBirth

Direct child

xs:date format (YYYY-MM-DD)

Nationality

Direct child

ISO 3166-1 alpha-3 country code

BirthCountry

Direct child

ISO 3166-1 alpha-3

Gender

Direct child

Mobile

Inside <Contact>

Email

Inside <Contact>

Telephone

Inside <Contact>

IdType

Inside <IdentificationInfo>

IdNumber

Inside <IdentificationInfo>

AddressLine, City, Country, State, Zip

Inside <Address>

Contact, IdentificationInfo, and Address are wrapper elements — placing their child fields directly under Sender or Receiver is invalid and will be rejected.

AccountOwnerDataSensitive

Required for SBSA cross-border Visa transactions only.

AccountOwnerDataSensitive
├── RecipientAddress
└── PrimaryAccount
    ├── FirstName   ← mandatory if block is present
    └── LastName    ← mandatory if block is present

5. Bank-Specific Requirements

5.1 Standard Bank (SBSA)

Visa — TransferType × MCC → BAI

TransferType

MCC 4829

MCC 6012

MCC 6051

MCC 6211

MCC 6538

MCC 6540

MCC 8931

P2P

PP

PP

OwnAccount

AA

AA

AA

PrepaidLoad

TU

TU

TU

Wallet

WT

LiquidAssets

LA

LA

LA

Disbursement

FD

FD

FD

FD

FD

FD

FD

Payroll

PD 

 

 

Mastercard — TransferType × MCC → TTI

TransferType

MCC 4829

MCC 6538

MCC 6540

P2P

F07

C07

F07

OwnAccount

F52

C52

F52

AgentCashOut

F53

C53

F53

CreditCardBill

F54

C54

PrepaidLoad

F64

Wallet

F61

A means that combination has no valid BAI or TTI at SBSA — the transaction falls through as a normal card transaction with no error.

SBSA Mandatory Fields

·       TransferType — must resolve to a valid BAI or TTI for the card type and MCC

·       Sender FirstName and LastName

·       Receiver FirstName and LastName

·       If AccountOwnerDataSensitive is included: PrimaryAccount/FirstName and PrimaryAccount/LastName are mandatory

AccountOwnerDataSensitive is required for cross-border Visa transactions only. It is not used for Mastercard.


5.2 Nedbank

Visa — MCC → BAI

MCC

Description

BAI

4829

Retail MoneySend

PP (default) or AA if TransferType=OwnAccount

6051

Cryptocurrency

LA

6211

Securities

AA

6540

Store Value / Wallet

TU

7995

Gambling

WT

Mastercard — All MCCs → TTI

Nedbank always resolves TTI as F52 regardless of MCC or TransferType.

Auto-injected fields

PayGate automatically injects TransactionPurpose for the following MCCs — do not include this field in the request:

MCC

Auto-injected value

6051 (Cryptocurrency)

11

6211 (Securities)

16

Nedbank Mandatory Fields

·       AccountNumberType=WalletId in MoneyTransferReceiverData

·       AccountNumber in MoneyTransferReceiverData

·       Both MoneySendSensitive tags (AccountNumberSender and AccountNumberReceiver)

·       Reference in MoneyTransferSenderData — must be 12 characters in the format: Y(1) + JulianDate(3) + HHmmss(6) + Seq(2) e.g. 624175100101


5.3 Absa (Planned — spec only)

TransferType → BAI/TTI mapping has not yet been implemented for Absa. The tables below reflect BAI and TTI categories from the Absa spec. Cells marked TBC will be confirmed during implementation.

Visa — TransferType × MCC → BAI

TransferType

MCC 4829

MCC 6051

MCC 6211

MCC 6540

MCC 8931

P2P

PP

OwnAccount

AA

AA

PrepaidLoad

TU

TU

Wallet

WT

LiquidAssets

TBC

LA

LA

TBC

Disbursement

FD

FD

FD

FD

FD

Payroll

PD

AgentCashOut

TBC

CreditCardBill

TBC

Mastercard — TransferType × MCC → TTI

TransferType

MCC 4829

MCC 6538

MCC 6540

P2P

F07

C07

F07

OwnAccount

F52

C52

F52

AgentCashOut

F53

C53

F53

CreditCardBill

F54

C54

PrepaidLoad

F64

Wallet

F61

Disbursement

F55

C55

TBC

Absa Mandatory Fields (from spec)

·       TransferType — must resolve to a valid BAI or TTI for the card type and MCC

·       Sender FirstName and LastName

·       Receiver FirstName and LastName


6. Funding Source

FundingSource is sent inside MoneyTransferSenderData and identifies the type of account or instrument being debited. Valid values come from the FundingSourceType enum in the schema.

The internal mapping to scheme codes differs between Visa and Mastercard:

FundingSource value

Visa

Mastercard

Credit

01

01

Debit

Prepaid

DepositAccount

05

04

MobileMoneyAccount

05

Cash

04

06

A means the value is defined in the schema but is not currently mapped for that scheme. Sending an unmapped value will result in no funding source code being set on the transaction.

Debit and Prepaid are accepted by the schema but are not yet mapped in the current implementation for either scheme. Use DepositAccount for bank-account-funded transactions.


7. Common Mistakes

Mistake

Effect

TransferType not sent (SBSA / Absa)

Processed as a normal card transaction — no error returned

Terminal MCC not configured for AFT

BAI/TTI cannot be resolved — processed as a normal card transaction

TransferType + MCC combination has no valid BAI or TTI

Processed as a normal card transaction — no error returned

Sender FirstName or LastName missing

Processed as a normal card transaction — no error returned

Receiver FirstName or LastName missing

Processed as a normal card transaction — no error returned

Nedbank AccountNumberType missing or not WalletId

Processed as a normal card transaction

Nedbank AccountNumber missing from MoneyTransferReceiverData

Processed as a normal card transaction

Nedbank MoneySendSensitive block missing or incomplete

Processed as a normal card transaction

Nedbank MCC 4829 Visa without TransferType, or TransferType=OwnAccount when sender ≠ receiver

Wrong BAI resolved (AA instead of PP) — processed but misclassified

Mobile, Email, or Telephone placed outside <Contact>

Processed as a normal card transaction

IdType or IdNumber placed outside <IdentificationInfo>

Processed as a normal card transaction

AccountOwnerDataSensitive sent without PrimaryAccount/FirstName and LastName

Processed as a normal card transaction

AccountOwnerDataSensitive sent on a Mastercard transaction (SBSA)

Block is ignored — only applies to cross-border Visa

AccountNumberType or AccountNumber included in SBSA or Absa requests

Fields are not required and will be ignored

FundingSource set to Debit or Prepaid

Not currently mapped — no funding source code set on transaction


8. Test Scenarios

All examples show only the AFT-relevant blocks. Standard fields — Account, Customer, CardNumber, CardExpiryDate, CVV, Redirect, and Order — are omitted and remain unchanged from a regular card transaction.


SBSA — Scenario 1: P2P Domestic (Visa, BAI=PP, MCC 4829)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>4000000000000002</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>P2P</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>SBSA-P2P-DOM-001</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <DateOfBirth>1985-06-15</DateOfBirth>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                                <Address>
                                    <AddressLine>123 Main Street</AddressLine>
                                    <City>Cape Town</City>
                                    <Country>ZAF</Country>
                                    <State>WC</State>
                                    <Zip>8001</Zip>
                                </Address>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <Receiver>
                                <FirstName>Jane</FirstName>
                                <LastName>Receiver</LastName>
                                <Nationality>ZAF</Nationality>
                                <Address>
                                    <AddressLine>456 Oak Avenue</AddressLine>
                                    <City>Johannesburg</City>
                                    <Country>ZAF</Country>
                                </Address>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SBSA — Scenario 2: P2P Cross-border (Visa, BAI=PP, MCC 4829 + AOD)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>4000000000000002</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>P2P</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>SBSA-P2P-XB-001</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <DateOfBirth>1985-06-15</DateOfBirth>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                                <Address>
                                    <AddressLine>123 Main Street</AddressLine>
                                    <City>Cape Town</City>
                                    <Country>ZAF</Country>
                                    <State>WC</State>
                                    <Zip>8001</Zip>
                                </Address>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <Receiver>
                                <FirstName>Thabo</FirstName>
                                <LastName>Molefe</LastName>
                                <Nationality>BWA</Nationality>
                                <Address>
                                    <AddressLine>45 Khama Crescent</AddressLine>
                                    <City>Gaborone</City>
                                    <Country>BWA</Country>
                                </Address>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
                <AccountOwnerDataSensitive>
                    <RecipientAddress>
                        <AddressLine>45 Khama Crescent</AddressLine>
                        <City>Gaborone</City>
                        <Country>BWA</Country>
                    </RecipientAddress>
                    <PrimaryAccount>
                        <FirstName>John</FirstName>
                        <LastName>Sender</LastName>
                        <Nationality>ZAF</Nationality>
                        <BirthCountry>ZAF</BirthCountry>
                    </PrimaryAccount>
                </AccountOwnerDataSensitive>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SBSA — Scenario 3: Own Account A2A (Mastercard, TTI=F52, MCC 4829)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>5200000000000007</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>5200000000000007</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>OwnAccount</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>SBSA-OWN-DOM-001</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <Receiver>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SBSA — Scenario 4: Prepaid Load (Mastercard, TTI=F64, MCC 4829)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>5200000000000007</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>5200000000000114</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>PrepaidLoad</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>SBSA-PL-DOM-001</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <Receiver>
                                <FirstName>Jane</FirstName>
                                <LastName>Receiver</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SBSA — Scenario 5: Liquid Assets (Visa, BAI=LA, MCC 6051)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>4000000000000002</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>LiquidAssets</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>SBSA-LA-DOM-001</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <Receiver>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nedbank — Scenario 1: Store Value Wallet (Visa, BAI=TU, MCC 6540)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>WALLET-ZAF-001234</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>PrepaidLoad</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>624175100101</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <DateOfBirth>1985-06-15</DateOfBirth>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                                <Address>
                                    <AddressLine>123 Main Street</AddressLine>
                                    <City>Cape Town</City>
                                    <Country>ZAF</Country>
                                    <State>WC</State>
                                    <Zip>8001</Zip>
                                </Address>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <AccountNumberType>WalletId</AccountNumberType>
                            <AccountNumber>WALLET-ZAF-001234</AccountNumber>
                            <Receiver>
                                <FirstName>Jane</FirstName>
                                <LastName>Receiver</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nedbank — Scenario 2: Gambling (Mastercard, TTI=F52, MCC 7995)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>5200000000000007</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>WALLET-GMB-001234</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <MoneyTransferSenderData>
                            <Reference>624175100102</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <AccountNumberType>WalletId</AccountNumberType>
                            <AccountNumber>WALLET-GMB-001234</AccountNumber>
                            <Receiver>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nedbank — Scenario 3: Cryptocurrency (Mastercard, TTI=F52, MCC 6051)

PayGate auto-injects TransactionPurpose=11 for MCC 6051 — do not include it in the request.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>5200000000000007</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>WALLET-CRYPTO-001</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <MoneyTransferSenderData>
                            <Reference>624175100103</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <AccountNumberType>WalletId</AccountNumberType>
                            <AccountNumber>WALLET-CRYPTO-001</AccountNumber>
                            <Receiver>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nedbank — Scenario 4: Retail MoneySend — P2P (Visa, BAI=PP, MCC 4829)

Any TransferType value other than OwnAccount resolves BAI=PP for MCC 4829.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>WALLET-RECV-001</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>P2P</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>624175100104</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <AccountNumberType>WalletId</AccountNumberType>
                            <AccountNumber>WALLET-RECV-001</AccountNumber>
                            <Receiver>
                                <FirstName>Jane</FirstName>
                                <LastName>Receiver</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Nedbank — Scenario 5: Retail MoneySend — Own Account (Visa, BAI=AA, MCC 4829)

TransferType=OwnAccount is required to resolve BAI=AA on MCC 4829.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <SinglePaymentRequest xmlns="http://www.paygate.co.za/PayHOST">
            <CardPaymentRequest>
                <MoneySendSensitive>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberSender</TagId>
                        <TagValue>4111111111111111</TagValue>
                    </MoneySendSensitiveData>
                    <MoneySendSensitiveData>
                        <TagId>AccountNumberReceiver</TagId>
                        <TagValue>WALLET-OWN-001234</TagValue>
                    </MoneySendSensitiveData>
                </MoneySendSensitive>
                <MoneySendData>
                    <TranSpecificData>
                        <TransferType>OwnAccount</TransferType>
                        <MoneyTransferSenderData>
                            <Reference>624175100105</Reference>
                            <FundingSource>DepositAccount</FundingSource>
                            <Sender>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Contact>
                                    <Mobile>+27821234567</Mobile>
                                    <Email>john.sender@example.com</Email>
                                </Contact>
                                <Nationality>ZAF</Nationality>
                                <IdentificationInfo>
                                    <IdType>NationalId</IdType>
                                    <IdNumber>8506155123456</IdNumber>
                                </IdentificationInfo>
                            </Sender>
                        </MoneyTransferSenderData>
                        <MoneyTransferReceiverData>
                            <AccountNumberType>WalletId</AccountNumberType>
                            <AccountNumber>WALLET-OWN-001234</AccountNumber>
                            <Receiver>
                                <FirstName>John</FirstName>
                                <LastName>Sender</LastName>
                                <Nationality>ZAF</Nationality>
                            </Receiver>
                        </MoneyTransferReceiverData>
                    </TranSpecificData>
                </MoneySendData>
            </CardPaymentRequest>
        </SinglePaymentRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope> 


    • Related Articles

    • Why don't you support a certain shopping cart?

      While we would like to support as many shopping cart and ecommerce systems as possible, it is not feasible for us to support them all. We do however, provide all the necessary information and sample code on our site to integrate with Payfast which ...
    • Whitelisting IP addresses

      As part of our ongoing efforts to enhance stability, resilience and overall customer experience, by 31 July 2025 we will have migrated our Payment API from an on-premises environment to Amazon Web Services (AWS). This transition will result in a ...