✅ What is an OCT?
An Original Credit Transaction (OCT) allows funds to be pushed to a recipient’s Visa card account—reversing the typical flow of funds. This enables real-time or near-real-time payouts to end-users globally, as long as their issuing bank and region support inbound OCTs.
Unlike standard card payments (where the cardholder pays the merchant), OCTs allow merchants to initiate payments to consumers—perfect for use cases like payouts, refunds, commissions, winnings, or transfers.
🧾 OCT with Paynetics: Scope and Capabilities
Paynetics supports OCT functionality as part of our acquiring solution and only for approved merchant categories.
Supported Transaction Types (Use Cases)
Code | Use Case Description |
|---|---|
A | Account to Account – Same person transfers from one account to another |
F | Funds Disbursement – Loans, insurance payouts, salary advances, refunds, etc. |
P | Person to Person – Card-to-card transfers between different individuals |
W | Wallet Transfers – Pay-outs to digital or mobile wallets linked to a Visa card |
G | Gaming & Gambling – Winnings or balance withdrawals from licensed gambling operators |
C | Cryptocurrency – Fiat payout from a regulated crypto provider after liquidation |
Merchants can be approved for one or multiple use cases based on their MCC and regulatory footprint.
💡 Use Case Breakdown
1. Account to Account (A)
Funds moved between two accounts belonging to the same person across platforms or institutions.
📌 Example: A user transfers funds from a trading app to their own Visa debit card.
2. Funds Disbursement (F)
Bulk payouts initiated by a corporate or fintech for use cases like:
Salary advances
Loan disbursement
Cashback or affiliate rewards
📌 Typically used by payroll, lenders, or gig platforms.
3. Person to Person (P)
Card-to-card transfer between two individuals with distinct identities.
📌 Example: A user sends €50 to a friend’s Visa card.
4. Wallet Transfers (W)
Transfers into digital wallets or apps pre-staged for payouts.
📌 Example: A user transfers their funds from a merchant’s account into their Visa-linked wallet.
5. Gaming & Gambling (G)
Allows for winnings or refund payouts from legal, regulated gambling merchants.
📌 Example: A customer withdraws €200 from their online casino account.
6. Cryptocurrency (C)
Used for off-ramping from crypto holdings into fiat.
📌 Example: A user cashes out from a crypto platform to their Visa card (after conversion to fiat).
📌 Available only for licensed and approved partners with MCC 6051 or similar.
🌍 Visa OCT – Supported Countries by Use Case
Below is a simplified view of countries where Visa allows inbound OCT transactions, grouped by use case:
🟢 Account to Account / Funds Disbursement / P2P / Wallet Transfers
These use cases share broad support in the following countries:
Europe & UK: Austria, Germany, France, Italy, United Kingdom, Poland, Norway, Netherlands, Belgium, Spain
MENA: UAE, Saudi Arabia, Egypt, Israel, Morocco
Africa: South Africa, Kenya
Americas: Canada, Mexico, Argentina, Chile
APAC: Australia, Singapore, India, Malaysia, Philippines, South Korea, Hong Kong, Pakistan
Other: Ukraine, Uzbekistan
🟡 Gaming & Gambling
Austria, Germany, France, Italy, United Kingdom, Poland, Netherlands, Belgium, Spain
🟡 Cryptocurrency
Austria, Germany, France, Italy, United Kingdom, Poland, Netherlands, Belgium, Spain
⚠️ These use cases require explicit scheme and underwriting approval and may be blocked by some issuers or regulators.
🔁 OCT Money Flow Example
Here’s a standard Visa OCT transaction flow in the Paynetics setup:
📄 P2P Money Flow Example (simplified diagram from internal PDF):
Sender initiates transfer via wallet or API (Paynetics merchant)
Paynetics routes the transaction to Visa
Visa routes to the recipient’s issuer
Recipient sees funds posted to their eligible Visa card
⚙️ Integration & Technical Onboarding
Access via Paynetics Acquiring API
Pre-approved transaction codes used for classification (A, F, P, W, G, C)
No card pull involved—only push-to-card capabilities
❗Cardholder card number (PAN) must be securely tokenized or passed encrypted.
🔐 Compliance & Risk
All merchants are subject to underwriting, scheme registration, and risk checks
For gaming and crypto, issuer or Visa blocks may apply even in eligible countries
Approved merchants must fund their OCT account via SEPA / SEPA Instant / Faster Payments / BISERA
📈 Reporting & Settlement
Daily reconciliation available via SFTP
Configurable fee models: flat, % or blended
Settlement in supported currencies: EUR, GBP, BGN
📄 Final Notes
Visa OCT is a powerful tool for merchant disbursements and payouts—but success depends on clear use case mapping, scheme approval, and compliance onboarding.
The above list serves as a reference, not a guaranteed list of enabled BINs or schemes. Please validate live eligibility for sensitive use cases (e.g. crypto, gaming) before merchant onboarding.
Fields
The execute an OCT transfer use the POST /v1/oct endpoint of the Acquiring API. Access to the Acquiring API swagger is private. It will be provided to you upon request.
Below are the response fields for the use cases Gambling & Gaming & Funds disbursement. The fields for the specific use cases A2A and P2P are provided here: Push-to-card P2P A2A
Fields | Description |
amount | The amount of the OCT |
Data Type | Number, min 0.01 |
Required | Yes |
currency | The currency of the OCT |
Data Type | ISO 4217 Currency code, Accepted currencies GBP, EUR, USD, BGN |
Required | Yes |
merchant | The token of the merchant sending the OCT. |
Data Type | UUID |
Required | Yes |
balance | The token of the balance of the funding account of the merchant which will be used to send the OCT. The balance must be in the same currency as the currency of the OCT. If the currency of the balance is different than the currency of the OCT an error will be thrown. |
Data Type | UUID |
Required | Yes |
card | The token of the card to which the OCT will be sent to |
Data Type | UUID |
Required | Conditional: required only if no card number (PAN), card expiry date and cardholder name are not provided. You can either send funds to a card token or by specifying the card details. |
card_number | The PAN of the card to which the OCT will be sent to |
Data Type | STRING, length 16 |
Required | Conditional: required only if no card attribute provided |
card_expiration_month | The month on which the card to which the OCT will be sent to expires |
Data Type | STRING, “01” to “12” |
Required | Conditional: required only if no card attribute provided |
card_expiration_year | The year on which the card to which the OCT will be sent to expires |
Data Type | STRING, min current year |
Required | Conditional: required only if no card attribute provided |
cardholder_name | The emboss name of the card to which the OCT will be sent to |
Data Type | STRING, max 27 chars |
Required | Conditional: required only if no card attribute provided |
first_name | The first name of the recipient of the OCT |
Data Type | STRING |
Required | Yes |
last_name | The last name of the recipient of the OCT |
Data Type | STRING |
Required | Yes |
birthday | The birthday of the recipient of the OCT |
Data Type | ISO 8601 date |
Required | Yes |
nationality | The nationality of the recipient of the OCT |
Data Type | ISO 3166 (alpha-2), see list of supported country recepients |
Required | Yes |
reference | Reference field to be used for reconciliation, fill the unique id of the transaction in your system |
Data Type | STRING |
Required | Yes |
industry specific transaction | OCT identifier |
Data Type | STRING, possible values: “F” - Funds Disbursement “G” - Gaming&Gambling “C” - Cryptocurrency |
Required | Yes |
terminal | The terminal ID through which you are sending the OCT |
Data Type | STRING |
Required | Yes |
Response Parameters
code | The result of the opera ration, code 0 indicates success |
Data Type | Integer |
Required | Yes |
data.card_number | The PAN of the card to which the OCT will be sent to |
Data Type | STRING, length 16 |
Required | Yes |
data.amount | The amount of the OCT |
Data Type | Number, min 0.01 |
Required | Yes |
data.stan | What is this standing for |
Data Type | String |
Required | Yes |
data.auth_code | What is this standing for |
Data Type | String |
Required | Yes |
data.currency | The currency of the OCT |
Data Type | ISO 4217 Currency code, Accepted currencies GBP, EUR, USD, BGN |
Required | Conditional: required only if no card attribute provided |
data.transaction | What is this standing for |
Data Type | String |
Required | Yes |
data.card | The Paynetics internal token of the card to which the OCT is sent to. You can use this token instead of the card details (number, expiry month & year and cardholder names) |
Data Type | UUID |
Required | Yes |