Account Funding Transactions (AFT)

Account Funding Transaction

 

Description

An AFT is a card-based transaction where the card is used to fund another financial account.
Unlike a standard purchase, AFTs are not used to pay a merchant for goods but rather to "pull" funds from a card to fund other accounts.

Since Account Funding Transactions (AFTs) are not purchase transactions, they require additional data from the cardholder and are strictly scrutinised by the banks and as such use specific Merchant Category Codes (MCCs).
Note that Digital Wallets (Apple Pay, Samsung Pay and Google Pay) cannot be used for AFT's.

Action

Style

Document

Input (Literal)

The input of this method is the document element AuthorizeRequest or PaymentRequest having the structure defined by the following table.

 

ELEMENT

TYPE

SIZE(MAX)

DESCRIPTION

Amount
Required

long

The authorization amount in the lowest monetary unit.

OrderNumber
Required

string

50

The transaction order or reference number. 

Note: Only Alphanumeric characters i.e. [a..z], [A..Z], [0..9] are allowed. NO spaces or special characters are allowed.
The first 12 characters of this field will be sent to the acquirer/bank as the Retrieval Reference Number (RRN). Therefore the first 12 characters must be unique.
Duplicate RRN’s may cause transaction failures. 

PaymentService
Required

 

PaymentServiceType

For AFT's this will be CardNotPresentAFT

BussAppId
Required

string

For Visa - The Business Application Identifier.
For MasterCard - Payment Transaction Type Indicator.
This value will be provided to the merchant when the AFT service is enabled.

SenderFirstName
Required

string

50

The first name of the funds sender.

SenderLastName
Required

string

50

The last name of the funds sender.

ReceiverFirstName
Required

string

50

The first name of the funds receiver.

ReceiverLastName
Required

string

50

The last name of the funds receiver.

SenderAddress
Required

Address

The address of the funds sender.
For "Region" use the following:

  • EC
  • FS
  • GP
  • KZ
  • LP
  • MP
  • NW
  • NC
  • WC

ReceiverAddress
Required

Address

The address of the funds receiver.
For "Region" use the following:

  • EC
  • FS
  • GP
  • KZ
  • LP
  • MP
  • NW
  • NC
  • WC

PurposeOfPayment
Required

string 12

This tag will contain the purpose of payment code.
This value will be provided to the merchant when the AFT service is enabled.

CardAcceptorName
Required

string

40

The CardAcceptorName is the merchant name which will appear on the customer's bank statement.
Required CardAcceptorName format

MerchantCategoryCode
Required

string

4

Used when a merchant wishes to pass a unique MCC (MerchantCategoryCode) eg: 4829
This value will be provided to the merchant when the AFT service is enabled.

Sample Message

Request


Body

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.ecentricswitch.co.za/paymentgateway/v1">
    <soapenv:Header>
    <MessageHeader></MessageHeader>
    </soapenv:Header>
    <soapenv:Body>
<PaymentRequest>
<AuthCode></AuthCode>  
<MerchantID>XXXXXXXXXXXXXXXXXXX</MerchantID>
<MerchantCategoryCode>9311</MerchantCategoryCode>
<TransactionID>XXXXXX</TransactionID>
<Amount>222</Amount>
<CurrencyCode>ZAR</CurrencyCode>
<OrderNumber>AFTPayment132</OrderNumber>
<Card>
<CardholderName>AFT Test</CardholderName>
<CardNumber>4111111111111111</CardNumber>
<ExpiryMonth>01</ExpiryMonth>
<ExpiryYear>30</ExpiryYear>
<SecurityCode>123</SecurityCode>
</Card>
<PaymentService>CardNotPresentAFT</PaymentService>
<SenderFirstName>SenderFirstName</SenderFirstName>
<SenderLastName>SenderLastName</SenderLastName>
<SenderAddress>
    <AddressLine1>456 Street</AddressLine1>
    <AddressLine2></AddressLine2>
    <City>CapeTown</City>
    <Neighbourhood>Rondebosch</Neighbourhood>
    <PostCode>7700</PostCode>
    <Region>WC</Region>
    <CountryCode>710</CountryCode>
</SenderAddress>
<ReceiverFirstName>ReceiverFirstName</ReceiverFirstName>
<ReceiverLastName>ReceiverLastName</ReceiverLastName>
<ReceiverAddress>
    <AddressLine1>123 Street</AddressLine1>
    <AddressLine2></AddressLine2>
    <City>CapeTown</City>
    <Neighbourhood>Rondebosch</Neighbourhood>
    <PostCode>7700</PostCode>
    <Region>WC</Region>
    <CountryCode>710</CountryCode>
</ReceiverAddress>
<PurposeOfPayment>ISACCT</PurposeOfPayment>
<BussAppId>WT</BussAppId>
</PaymentRequest>
</soapenv:Body>
</soapenv:Envelope> 

Response

Body

<s:Envelope
	xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Header>
		<h:MessageHeader
			xmlns:h="http://www.ecentricswitch.co.za/paymentgateway/v1"
			xmlns="http://www.ecentricswitch.co.za/paymentgateway/v1"
			xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<MessageDateTime>2024-11-14T12:14:19.197</MessageDateTime>
			<MessageID>FCB16C75-21C1-495A-8E21-49A6CA1C83EE</MessageID>
			<Channel xsi:nil="true"/>
		</h:MessageHeader>
	</s:Header>
	<s:Body
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		<PaymentResponse xmlns="http://www.ecentricswitch.co.za/paymentgateway/v1">
			<TransactionID>d51a062c-8789-435c-9669-3f02440f4f37</TransactionID>
			<TransactionDateTime>2024-11-14T12:14:17.63</TransactionDateTime>
			<SaleReconID xsi:nil="true"/>
			<ReconID/>
			<AuthCode>609134</AuthCode>
			<TransactionStatus>Success</TransactionStatus>
			<ResponseDetail>
				<Source>Acquirer</Source>
				<Code>00</Code>
				<Description>Approved or completed successfully</Description>
				<ClientMessage>Approved.</ClientMessage>
			</ResponseDetail>
			<AuthAmount>222</AuthAmount>
		</PaymentResponse>
	</s:Body>
</s:Envelope>