m2pfintech
Platform

Product Overview

Full capabilities matrix, OCT and AFT deep-dives, eligibility, status check, balance check, and card tokenization

Capabilities Matrix

CapabilityVISA DirectMasterCard Send 2.0Description
OCT — Push Funds to CardCredit funds to a debit/credit/prepaid card in real-time
AFT — Pull Funds from CardDebit funds from a card (requires 3DS authentication)
Eligibility CheckVerify if a card can receive/send funds before transacting
Transaction Status CheckQuery network for final status of a submitted transaction
Transaction Reversal✅ (AFT only)Reverse a pull transaction within the reversal window
Cross-Border TransfersMulti-currency international transfers
Card TokenizationPCI-compliant tokenization to avoid raw PAN handling
Message Level Encryption✅ (V2 APIs)✅ (JWE)Handled transparently by the platform

Unified API

The platform exposes unified API endpoints that automatically route to the appropriate network (Visa or Mastercard) based on the card BIN or explicit networkType parameter. Partners do not need to call different endpoints for different networks.


OCT (Push to Card)

What is OCT?

An Original Credit Transaction (OCT) pushes funds from the acquirer (sponsor bank / partner) to a recipient's card account. The recipient sees the credit on their card statement. Primary use cases:

  • Disbursements (payroll, insurance, lending)
  • P2P transfers
  • Credit card bill payments
  • Cross-border remittances
  • Merchant refunds

Business Application IDs

Each OCT must carry a Business Application ID (BAI) that identifies the use case to the network. This determines applicable rules, limits, and fee programs.

CodeNameWhen to Use
AAAccount to AccountDefault — generic credit to card. Internal transfers at the same institution.
CPCard Bill PaymentPaying a credit card bill. Recipient is the credit card being paid.
PPPerson to PersonP2P money transfer between individuals.
FDFunds DisbursementCorporate/institutional disbursement — payroll, insurance, marketplace payouts.
MDMerchant DisbursementMerchant-initiated disbursement — refunds, loyalty cashback.
TUTop UpLoading/reloading a prepaid card or PPI.
GDGovernment DisbursementGovernment-to-citizen transfers — subsidies, tax refunds.
LOLoan/CashbackLoan disbursement directly to a borrower's card.
MPMerchant PaymentmVisa face-to-face QR merchant payment.
COCash OutmVisa agent cash-out.
CICash InmVisa agent cash-in.

Choosing the Right BAI

ScenarioRecommended BAINetworkNotes
Company paying employee salary to their debit cardFDVisa / MastercardFunds Disbursement
Customer paying their credit card billCPVisaCard Bill Payment — specific to credit card bill pay
Individual sending money to a friend's cardPPVisa / MastercardPerson to Person
Insurance company paying claim to policyholderFDVisa / MastercardFunds Disbursement
E-commerce marketplace paying sellerMDVisa / MastercardMerchant Disbursement
Government paying subsidy to citizenGDVisaGovernment Disbursement
Loading a prepaid wallet/cardTUVisaTop Up — for prepaid instruments
NBFC disbursing loan amount to borrower's cardLOVisaLoan Disbursement
Cross-border remittance to family memberPP or FDVisa / MastercardP2P or Funds Disbursement depending on originator type
QR code payment at merchantMPVisa (mVisa)Merchant Payment

OCT Transaction Flow

Cross-Border OCT

For cross-border use cases, the platform supports:

  • Multi-currency: Transaction currency set based on the recipient's country code via CurrencyCode mapping.
  • Visa FX Rates: Visa performs currency conversion using their published exchange rates.
  • Sender/Recipient Information: Additional sender details (address, country, state, postal code) required for cross-border compliance.

AFT (Pull from Card)

What is AFT?

An Account Funding Transaction (AFT) pulls (debits) funds from a sender's card account. Used when a partner needs to fund an account (PPI, wallet, bank account) using the customer's card.

3DS Required

AFT always requires 3D Secure (3DS) authentication because the cardholder must authorize the debit from their card. The CAVV (Cardholder Authentication Verification Value) obtained from 3DS must be passed in the AFT request. Only supported on VISA Direct.

AFT Use Cases

Use CaseDescription3DS Required
PPI LoadingPPI issuer pulls funds from customer's debit/credit card to load their prepaid instrument
Wallet Top-UpDigital wallet pulls funds from linked card
Account FundingFund a bank/investment account by debiting a card

AFT with 3DS Authentication Flow

Payer-Payee Structure in AFT

AFT uses a nested block structure for clear separation between payer (customer) and payee (partner):

BlockRoleContains
payerCustomer whose card is debitedcardNumber, expiryDate, name, email, phone, address
payeePartner/PPI receiving fundscardNumber (account), name
transactionTransaction detailsamount, currency, externalTransactionId, description
authentication3DS authentication proofcavv, eci, threeDsToken, method

Internal Visa API Mapping

The platform automatically maps the nested structure to Visa's flat AFT API:

Partner FieldMaps To Visa Field
payer.cardNumbersenderPrimaryAccountNumber
payer.expiryDatesenderCardExpiryDate
payer.namesenderName
payer.address.*senderAddress, senderCity, etc.
authentication.cavvcavv or tavv
payee.cardNumberrecipientPrimaryAccountNumber
payee.namerecipientNamecardAcceptor.name

AFT Configuration Defaults

ParameterValueSource
MCC6540 (default)visa.aft.pull.mcc config
Account Type10visa.aft.pull.account.type config
POS Data Code10visa.aft.pull.pos.data.code config
POS Condition Code59 (Electronic Commerce)visa.aft.pull.pos.condition.code config
Reversal Window24 hours (default)the platform reversal window setting config

Eligibility Check

Purpose

Before initiating any OCT or AFT, it is strongly recommended (and in some cases mandatory) to verify that the destination/source card is eligible for the transaction type on the respective network.

What Eligibility Returns

FieldDescription
eligibleBoolean — whether the card can participate
cardTypeD (Debit), C (Credit), P (Prepaid)
issuerNameName of the card issuing bank
issuerCountryCountry of the issuer
currencyCodeAccount statement currency
pushEligibleWhether OCT (push) is allowed
pullEligibleWhether AFT (pull) is allowed
moneyTransferPushFundsDomesticDomestic push funds eligibility
moneyTransferFastFundsDomesticFast Funds availability (< 30 seconds)
accountFundingTransactionDomParticipantAFT domestic eligibility (Visa)
accountFundingTransactionXbParticipantAFT cross-border eligibility (Visa)

Eligibility by Network

API: Funds Transfer Attributes Inquiry

Key Parameters: PAN, Acquirer Country Code, Acquiring BIN

Returns pushEligible, pullEligible, additionalDetails with AFT participant flags and money transfer capability flags. Card type returns full strings: DEBIT, CREDIT, PREPAID.

API: Transfer Eligibility

Key Parameters: Recipient Account URI (pan:<number>), Payment Type, Acquiring ICA, Transfer Acceptor ID

Returns fundsAvailability, card type with legacy short codes (D, C, P). paymentType (BAI) is set internally based on business configuration — it is not a direct API request parameter.


Transaction Status Check

Why Status Check is Needed

When a transaction results in a timeout or receives a PENDING status, the partner must query the network to determine the final outcome before taking any action.

Always check on timeout

If the response actionCode is 91, 92, or 96, or shortMessage is RESOURCE_ERROR, you must call the Status Check API. Do not assume success or failure.

Status Check by Network

API: Transaction Query API

Key Lookup Fields: Acquiring BIN, STAN, RRN, Transaction date range

API: Payment Search API

Key Lookup Fields: Payment Reference (transaction ID from original request)

Possible Status Outcomes

StatusMeaningAction
APPROVEDTransaction was successfulCredit the recipient (OCT) or confirm debit (AFT)
DECLINEDTransaction was rejectedDo not process. Return failure to partner.
PENDINGTransaction is still processingRetry status check after some time

Auto-Status Resolution

The platform supports configurable auto-status polling:

  • Max fetch limit: Configurable via max.txn.fetch.from.network business custom field
  • Auto-failure timeout: If a transaction remains in PENDING beyond a configurable time limit (network.fetch.txn.max.failure.time), it is automatically marked as DECLINED

Balance Check (Prefunded Partners)

Prefunding Model

Some partners operate on a prefunded model where they deposit funds into a pool account managed by the sponsor bank. Before authorizing an OCT, the system checks if the partner's pool has sufficient balance.

The balance check is performed by the pool balance checker in the CardPay Core module.


Card Tokenization

Overview

For PCI DSS compliance, the platform provides a card tokenization service that allows partners to:

  1. Capture card details via a secure widget (React/JS) without exposing raw PAN to partner systems
  2. Receive a short-lived token representing the card
  3. Use the token in subsequent API calls (Eligibility Check, OCT, AFT)

Token Characteristics

PropertyValue
Token TTL15 minutes (default)
UsageSingle-use (consumed on first successful transaction)
StorageEncrypted in Redis cache (Auth Service service)

Token Types

ValueMeaning
"01"M2P-generated card token (PCI DSS tokenized by M2P)
"02"Network-generated card token (e.g., Visa VTS / Mastercard MDES)
"03"Clear card number — partner is PCI DSS certified

On this page