TabaPay Transaction API
This resource represents a Client's Transaction.
This resource represents a Client's Transaction.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tabapay-transaction-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: TabaPay APIs 3D Secure Transaction API
description: TabaPay Resource and Service Operations
version: 1.0.0
license:
name: All rights reserved
servers:
- url: https://{FQDN}:{PORT}
description: TabaPay APIs
variables:
FQDN:
default: FQDN
description: Contact [TabaPay Support](https://tabapay.zendesk.com/hc/en-us/requests/new) for the Fully Qualified Domain Name you should be using.
PORT:
default: PORT
description: Ensure you have the capability to access the PORT TabaPay specifies in your credentials file.
security:
- bearerAuth: []
tags:
- name: Transaction
description: This resource represents a Client's Transaction.
paths:
/v1/clients/{ClientID}/transactions/{TransactionID}:
patch:
tags:
- Transaction
summary: Capture Transaction
description: Captures the Authorized Transaction.
operationId: transactionCapture
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/TransactionID'
requestBody:
required: false
content:
application/json:
schema:
type: object
additionalProperties: false
responses:
'200':
description: The Transaction is Captured.
content:
application/json:
schema:
$ref: '#/components/schemas/transactionCaptureResponse'
examples:
Completed:
value:
SC: 200
EC: '0'
status: CAPTURED
delete:
tags:
- Transaction
summary: Delete Transaction
description: "Tries to request a reverse of a previous Pull Transaction.\n Note: Delete Transaction is NOT eligible to be used for an <<glossary:ACH>> Transaction."
operationId: transactionDelete
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/TransactionID'
- $ref: '#/components/parameters/reversal'
- $ref: '#/components/parameters/void'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/deleteTransaction'
required: false
responses:
'200':
description: A Request for a Reversal of the previous Transaction is successful.
content:
application/json:
schema:
$ref: '#/components/schemas/transactionReversed'
examples:
Transaction Reversed:
value:
SC: 200
EC: '0'
status: COMPLETED
reversal:
networkRC: '00'
Dual Message Network:
value:
SC: 200
EC: '0'
status: COMPLETED
reversal:
networkRC: '21'
networkRC2: '00'
'207':
description: One or more Failures occurred while processing the Request.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECStatus'
example:
SC: 207
EC: Internal Error Code
status: UNKNOWN
get:
tags:
- Transaction
summary: Retrieve Transaction
description: 'Retrieves the Transaction.
In circumstances where you fail to receive a transactionID from us, you can do a [retrieve via referenceID](https://developers.tabapay.com/reference/retrieve-via-referenceid). *(Allowed only up to 24 hours after original request)*'
operationId: transactionRetrieve
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/TransactionID'
responses:
'200':
description: The Transaction is retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/transactionRetrieveResponse'
examples:
Retrieve Completed Transaction:
value:
SC: 200
EC: '0'
referenceID: '1'
network: Visa
networkRC: '00'
status: COMPLETED
approvalCode: '000000'
amount: '0.10'
fees:
interchange: '0.50'
network: '0.50'
tabapay: '0.25'
Auth & Capture:
value:
SC: 200
EC: '0'
referenceID: 1kdev22334
network: Visa
networkRC: '00'
networkID: '2026030423552107102'
status: CAPTURED
approvalCode: '235521'
amount: '3.50'
last4: '1111'
Reversal/Void:
value:
SC: 200
EC: '0'
referenceID: 1kdev072925
network: MasterCard
networkRC: '00'
networkID: '2025073118562721941'
status: COMPLETED
approvalCode: '185627'
amount: '3.00'
last4: '8210'
reversalStatus: REVERSED
reversal:
networkRC: '00'
reversals:
- reversalStatus: REVERSED
networkRC: '00'
reversalAmount: '3.00'
Multiple Reversals:
value:
SC: 200
EC: '0'
referenceID: '20250804162555'
network: Visa
networkRC: '00'
networkID: '521623174049'
status: COMPLETED
approvalCode: '174049'
amount: '0.90'
last4: '1111'
reversalStatus: REVERSED
reversal:
networkRC: '00'
reversalAmount: '0.09'
reversals:
- reversalStatus: REVERSED
networkRC: '00'
reversalAmount: '0.09'
- reversalStatus: REVERSED
networkRC: '00'
reversalAmount: '0.02'
- reversalStatus: REVERSED
networkRC: '00'
reversalAmount: '0.06'
'421':
description: Too late to Retrieve Transaction by ReferenceID. Use TransactionID.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 421
EC: InternalErrorCode
EM: ReferenceID
/v1/clients/{ClientID}/transactions:
post:
tags:
- Transaction
summary: Create Transaction
description: 'Creates a Transaction.
In circumstances where you fail to receive a transactionID from us, you can do a [retrieve via referenceID](https://developers.tabapay.com/reference/retrieve-via-referenceid). *(Allowed only up to 24 hours after original request)*'
operationId: transactionCreate
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/authorize'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/createTransaction'
examples:
Push Using AccountIDs:
value:
referenceID: '1'
type: push
accounts:
sourceAccountID: SettlementAccountID_22
destinationAccountID: TabaPay_AccountID_22-c
amount: '0.25'
Pull Using AccountIDs:
value:
referenceID: '1'
type: pull
accounts:
sourceAccountID: TabaPay_AccountID_22-c
destinationAccountID: SettlementAccountID_22
amount: '0.25'
Pull using Card Info:
value:
referenceID: '5'
type: pull
accounts:
sourceAccount:
card:
accountNumber: '4111111111111111'
expirationDate: '202708'
securityCode: '232'
owner:
name:
first: Test
last: Name
address:
line: 123 Street
city: San Francisco
state: CA
zipcode: '94103'
country: '840'
destinationAccountID: TabaPay_AccountID_22-c
amount: '0.25'
Pull using RSA Key:
value:
referenceID: '6'
type: pull
accounts:
sourceAccount:
card:
keyID: TabaPay_22_CharacterID
data: mNxVazaXkJL7JNH0BiHGaohgO5azjxTq-2fBP8eaf-6-Bv_Ev3aRruvxazWcrYg59tvT94oNoHSqWBAG3DRiEuFKvJpJ6Y-6BoBO895WniiP9pwpWXsFQbpkmwLSQu0MDdvYFeTqweMKmUKn_NVzfzOvytBnjGA2Fz_sWxlJ7kC4zSYOnCNZWh03bLVB0CdfbXDHUePO0gbHpDc3H7N2tII4dpAVRgA9NOudBGaFxCgU5KcOy84ovxGsFvi6YNBeCCd4CVVuyhpLOzjdRovb9P5_f5kC1Rh8hEu8f_hY44TiK7M7Nbba6FfJmLHhvosqbCwM8GerhE-HvbQc7OAOlQ
owner:
name:
first: Test
last: Name
address:
line: 123 Street
city: San Francisco
state: CA
zipcode: '94103'
country: '840'
destinationAccountID: TabaPay_AccountID_22-c
amount: '0.25'
Pull using iFrame Token:
value:
referenceID: '7'
type: pull
accounts:
sourceAccount:
card:
token: 80di7pLqLIAjagqBIjdUeyGvos1Yjs-tzIgnHbXUwObg-vR48OumErarFEypJg6ghQwoYNFaV_zv3LKogdGOfKylpZHl7HG4rPEe2LyzY1vBdzEBm1UubBAAeo_iKvnrMwObBTRMxbsvlJVwsFpJZ879wp0jnO8sYCXop3yp0w5LaqlQoyfbSloxOi5ZkX9jOCxfuKWf4uXcvWiBCeYtIr78_rldk5SvjMpp4u2eBN6gAcnjczMxIYIJD_zrI1zGYRq8SJwhVdYr2C8VYbkgoHnT1JDyDdwspVtQ1NP9vesNdEF_1qc_9MpogQeM-O3G09WWivDchJscJbbTZnjU6BaQ
owner:
name:
first: Test
last: Name
address:
line: 123 Street
city: San Francisco
state: CA
zipcode: '94103'
country: '840'
destinationAccountID: TabaPay_AccountID_22-c
amount: '0.25'
Pull with Visa Card:
value:
accounts:
sourceAccount:
card:
accountNumber: '4000001240000000'
expirationDate: '202708'
securityCode: '232'
owner:
name:
first: Test
last: Name
destinationAccountID: goQUGYYEiApnc6wC0iBDZQ
referenceID: 1kdevt01142024
type: pull
amount: '0.25'
Pull with MC Card:
value:
accounts:
sourceAccount:
card:
accountNumber: '5200828282828210'
expirationDate: '202708'
securityCode: '999'
owner:
name:
first: Test
last: Name
destinationAccountID: goQUGYYEiApnc6wC0iBDZQ
referenceID: 1kdevt02142024
type: pull
amount: '0.25'
ACH API Push (Credit):
value:
referenceID: 15_chars8910121
type: push
accounts:
sourceAccountID: Nkd2UKfhVcQW6AJAvmhv4v
destinationAccount:
bank:
routingNumber: '123456789'
accountNumber: '123456789'
accountType: C
owner:
name:
first: Receiver
middle: Name
amount: '2.00'
achOptions: S
achEntryType: PPD
memo: Corresponding PUSH Transaction
RTP Push:
value:
referenceID: myUniqueRefID3
corresponding:
name:
first: Ultimate
last: Debtor
type: push
accounts:
sourceAccountID: '*redacted*'
destinationAccount:
bank:
accountNumber: '111111111'
routingNumber: '011001234'
accountType: C
owner:
name:
first: CreditorFirstName
last: CreditorLastName
achOptions: R
amount: '100.00'
Visa MIT:
value:
accounts:
sourceAccountID: gqghgkVdQRDUZrwadoUk78
destinationAccountID: FuXx8zMqjKHL4CZ6jiTcaN
pullOptions:
recurringData:
initiator: M
type: S
id: hqMZ-UEE2YEiYOj6HPxEXQ
networkID: '407903181027'
recurring: true
referenceID: 1kdev082124
type: pull
amount: '3.00'
MC MIT:
value:
accounts:
sourceAccountID: sQv2gEG4ocY71h3dg0CGIx
destinationAccountID: SN4h2RmBJAYLff8Yr9weFh
pullOptions:
recurringData:
initiator: M
type: S
networkID: '2024082620550593291'
recurring: true
referenceID: 1kdev082124
type: pull
amount: '3.00'
required: true
responses:
'200':
description: A Transaction is created and processing is completed.
content:
application/json:
schema:
$ref: '#/components/schemas/createTransactionResponse'
examples:
Completed:
value:
SC: 200
EC: '0'
transactionID: TabaPay_TransactionID_
network: Visa
networkID: '123454646545645'
networkRC: '00'
status: COMPLETED
approvalCode: '000000'
Partial Approval:
value:
SC: 200
EC: '0'
transactionID: TabaPay_TransactionID_
network: Visa
networkID: '123454646545645'
networkRC: '00'
partialAmount: '0.01'
status: PARTIAL_COMPLETED
approvalCode: '000000'
Visa Enriched TP Shield Attributes:
value:
SC: 200
EC: '0'
transactionID: TabaPay_TransactionID_
network: Visa
networkID: '123454646545645'
networkRC: '00'
status: COMPLETED
approvalCode: '000000'
additional:
codeUCAF: '2'
codeACI: U
codeECI: '05'
par: V0010056422073825495104907179
MC Downgrade - Enriched TP Shield Attributes:
value:
SC: 200
EC: '0'
transactionID: TabaPay_TransactionID_
network: MasterCard
networkID: '123454646545645'
networkRC: '00'
status: COMPLETED
approvalCode: '000000'
additional:
codeUCAF: '2'
par: '5001005642207382549510767179'
MC MAC - Enriched TP Shield Attributes:
value:
SC: 200
EC: '0'
transactionID: TabaPay_TransactionID_
network: MasterCard
networkID: '123454646545645'
networkRC: '00'
status: ERROR
approvalCode: '000000'
additional:
par: '5001005642207382549510767179'
codeMAC: '02'
RTP:
value:
SC: 200
EC: '0'
transactionID: A0oH0E4EiWloxnwr75liQg
networkID: 5BABCD1111111111
network: RTP
networkRC: '000'
status: COMPLETED
Real Time Monitoring - Rejected:
value:
SC: 200
EC: '0'
transactionID: Bts65zXOrnK5XjoQG64z08
network: Visa
networkRC: ZB
status: ERROR
additional:
par: V41111111114589CED5703G232F79
RTM:
status: REJECTED
ruleIDs:
- uniqueruleID123
card:
last4: '4242'
expirationDate: '209910'
nameFI: Simple Bank
'201':
description: A Transaction is created, but the transaction is waiting to be processed (batch).
content:
application/json:
schema:
$ref: '#/components/schemas/createTransactionResponsePending'
examples:
Pending:
value:
SC: 201
EC: '0'
transactionID: TabaPay_TransactionID_
network: CreditCards
status: Pending
ACH Batch:
value:
SC: 201
EC: '0'
transactionID: BhAatYvE0SvZYcnEGwb4nB
network: ACH
status: BATCH
'207':
description: One or more Failures occurred while processing the Request.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECTxnIDStatus'
example:
SC: 207
EC: InternalErrorCode
status: UNKNOWN
transactionID: ''
'429':
description: Over your Daily (24-hour rolling) Approximation Limit.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCECEM'
example:
SC: 429
EC: InternalErrorCode
EM: Limit
/v2/clients/{ClientID}/transactions/rtp/{RTPNetworkID}:
delete:
tags:
- Transaction
summary: Delete RTP Transaction
description: 'If using`?request`: Requests a return of a previously sent RTP push transaction.
If using `?response`: Responds to a request of a previously received Request for Return of Funds (for a previously received RTP transaction).'
operationId: transactionRTPDelete
parameters:
- $ref: '#/components/parameters/ClientID'
- $ref: '#/components/parameters/RTPNetworkID'
- $ref: '#/components/parameters/RTPRequest'
- $ref: '#/components/parameters/RTPResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/deleteRTPTransaction'
required: true
responses:
'200':
description: A response to a request for return of funds was accepted (and if applicable, the reimbursement was accepted).
content:
application/json:
schema:
$ref: '#/components/schemas/transactionRTPDeleteResponse'
examples:
RTP Response to Reversal Request:
value:
SC: 200
EC: '0'
status: COMPLETED
networkRC: '000'
networkID: M20220808103100195T1BSCA20000003002
reimbursement:
networkRC: '000'
networkID: 20220808101115315T1BSCAH20000003001
'202':
description: A request for return of funds was accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/transactionRTPDeleteRequest'
examples:
RTP Reversal Request:
value:
SC: 202
EC: '0'
status: ACCEPTED
networkRC: '000'
networkID: M20220808103100195T1BSCA20000003002
'207':
description: One or more Failures occurred while processing the Request.
content:
application/json:
schema:
$ref: '#/components/schemas/apiResponseSCEC'
example:
SC: 207
EC: Internal Error Code
components:
schemas:
referenceID:
type: string
format: string
description: 1-15 character unique [referenceID](https://developers.tabapay.com/docs/glossary#reference-id). Used for [Retrieve via ReferenceID](https://developers.tabapay.com/reference/retrieve-via-referenceid) in case of an HTTP timeout, or any scenario where you fail to get a response body. *Not case sensitive*
pattern: ^[a-zA-Z0-9_-]{1,15}$
owner:
type: object
required:
- name
description: Owner Details
properties:
name:
$ref: '#/components/schemas/name'
address:
type: object
description: 'Address.
*All fields optional.* However, if you''re planning on using AVS in [QueryCard](https://developers.tabapay.com/reference/cardquery#/), provide an accurate `zipcode` at the minimum. And, if you can, provide an accurate `line1` value as well.'
properties:
line1:
$ref: '#/components/schemas/line1'
line2:
type: string
description: Address Line 2
pattern: ^[ a-zA-Z0-9._-]+$
city:
$ref: '#/components/schemas/city'
state:
$ref: '#/components/schemas/state'
zipcode:
$ref: '#/components/schemas/zipcode'
country:
$ref: '#/components/schemas/country'
phone:
type: object
required:
- number
description: Phone *object*
properties:
countryCode:
type: string
description: '1-3 digit Country Calling Code
*Optional.* Default is `1`.'
pattern: ^[0-9]{3}$
example: '1'
number:
type: string
description: 'Phone Number.
For phone numbers with `countryCode` equal to `1` (or blank), provide a 10-digit phone number. For all `countryCodes`, other than `1`, a 4-14 digit phone number is accepted.'
pattern: ^[0-9]{4,14}$
example: '5555555555'
currency:
type: string
description: '[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 3-Digit [Currency Code](https://developers.tabapay.com/reference/currency-numbers#/).
*Optional. Default is `840`*'
pattern: ^[0-9]{3}$
example: '840'
processor:
type: object
required:
- name
- token
description: 'Tokenized Card Payment Data From an Issuing Processor
Incompatible with all other card objects and fields'
properties:
name:
type: string
pattern: ^[0-9A-Za-z]+$
description: 'Processor Name
Currently supported `name`s are:
- `Galileo`
- `Q2`'
token:
type: string
pattern: ^[0-9]+$
description: 'Token from issuing processor
- `Galileo` integrations use a CAD (preferred) or PRN
- `Q2` integrations use a CardID'
customerID:
type: string
pattern: ^[0-9]+$
description: 'Customer Identifier.
Required if `name` is `Q2`, omit otherwise.'
softDescriptor:
type: object
required:
- name
- address
description: 'Soft Descriptor.
***Card Network Mandates for Soft Descriptor:*** To avoid fines or to avoid declines, when providing `zipCode` and `state`, please ensure they match i.e. `zipCode` must correspond to the `state` values.
*Optional*'
properties:
name:
type: string
description: 'Name.
*To set the company name in ACH transactions, use this field (the first 16 characters will be used).*'
pattern: ^[ a-zA-Z0-9_-]+$
address:
type: object
required:
- line1
- city
- state
- county
- zipcode
- country
properties:
line1:
type: string
description: Address Line 1
pattern: ^[ a-zA-Z0-9._-]+$
line2:
type: string
description: 'Address Line 2
*Optional*'
pattern: ^[ a-zA-Z0-9._-]+$
city:
type: string
description: City
pattern: ^[ a-zA-Z0-9_-]+$
county:
type: string
description: 3-character County Code
pattern: ^[ a-zA-Z0-9_-]{3}$
state:
type: string
description: 'State Code
[State Code](https://developers.tabapay.com/reference/us-state-codes) must be a valid 2-character code if `country` is [840](https://developers.tabapay.com/reference/country-codes) or [Canadian 2-char code](https://developers.tabapay.com/reference/canadian-province-codes#/) if [124](https://developers.tabapay.com/reference/country-codes#/).'
pattern: ^[ a-zA-Z0-9_-]+$
zipcode:
type: string
description: 'Zip Code
If `country` is `840`, `zipcode` must be 5 or 9 digits.
If country is `124`, `zipcode` must be in the *A1A 1A1* format.
Zip codes from other countries will not be checked.'
pattern: ^[ a-zA-Z0-9_-]+$
country:
type: string
description: '[Country Code](https://developers.tabapay.com/reference/country-codes#/)
*Optional. Default is `840`*'
pattern: ^[0-9]{3}$
example: '840'
phone:
type: object
required:
- number
description: Phone *object*
properties:
countryCode:
type: string
description: '1-3 digit Country Calling Code
*Optional.* Default is `1`.'
pattern: ^[0-9]{3}$
example: '1'
number:
type: string
description: 'Phone Number.
For phone numbers with `countryCode` equal to `1` (or blank), provide a 10-digit phone number. For all `countryCodes`, other than `1`, a 4-14 digit phone number is accepted.'
pattern: ^[0-9]{4,14}$
example: '5555555555'
mcc:
type: string
description: 'MCC
For American Express Bill Pay Provider program:
- Merchant''s/Seller''s MCC (4-digits)
*Note: This is not the processing MCC. This is for reporting purposes only (Amex Bill Pay Provider)*'
email:
type: string
description: 'Email Address
For American Express Bill Pay Provider program:
- Seller Email Address (max of 40 characters)'
apiResponseSCECTxnIDStatus:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
transactionID:
$ref: '#/components/schemas/transactionID'
status:
type: string
ofacValue:
type: string
description: 'OFAC Value from [Query OFAC](https://developers.tabapay.com/reference/ofacquery#/)
*Optional*'
pattern: ^[a-zA-Z0-9_-]+$
device:
type: object
description: 'Card Data
- From a [Secure Device](https://developers.tabapay.com/docs/card-present-transactions)
- From a [GooglePay PaymentMethodToken](https://developers.tabapay.com/reference/googlepay#/y)
Incompatible with any other `card` object(s) or field(s)'
required:
- id
- blob
properties:
id:
type: string
description: 'Either a:
- TabaPay-assigned device ID
- [GooglePay|gatewayMerchantId](https://developers.tabapay.com/reference/googlepay#/)'
blob:
$ref: '#/components/schemas/blob'
EC:
type: string
description: Internal Error Code. This is used to help TabaPay team members trace an error.
tokeniFrame:
type: string
pattern: ^[A-Za-z0-9_+=-]{344}$
format: byte
description: 'Card Token (from the [PCI-compliant iFrame](https://developers.tabapay.com/reference/browser-sdk#/basic-custom-iframe))
Incompatible with any other `card` field.'
createTransaction:
type: object
required:
- referenceID
- type
- amount
- accounts
properties:
referenceID:
$ref: '#/components/schemas/referenceID'
correspondingID:
$ref: '#/components/schemas/correspondingID'
corresponding:
$ref: '#/components/schemas/corresponding'
type:
type: string
pattern: ^(?:push|pull)$
description: "4-character Transaction Type\n\n `push` and `pull` are the only valid values. This is used to verify that your Source and Destination Accounts are valid"
accounts:
type: object
description: Accounts
properties:
sourceAccountID:
$ref: '#/components/schemas/sourceAccountID'
sourceAccount:
$ref: '#/components/schemas/sourceAccount'
destinationAccountID:
$ref: '#/components/schemas/destinationAccountID'
destinationAccount:
$ref: '#/components/schemas/destinationAccount'
currency:
$ref: '#/components/schemas/currency'
amount:
$ref: '#/components/schemas/amount'
ofacValue:
$ref: '#/components/schemas/ofacValue'
avsID:
type: string
descr
# --- truncated at 32 KB (81 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tabapay/refs/heads/main/openapi/tabapay-transaction-api-openapi.yml