TabaPay Transaction API
This resource represents a Client's Transaction.
This resource represents a Client's Transaction.
openapi: 3.0.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:
transactionRetrieveResponse:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
referenceID:
$ref: '#/components/schemas/referenceID'
network:
type: string
description: '[Network](https://developers.tabapay.com/reference/networks#/)'
example: Visa
networkRC:
$ref: '#/components/schemas/networkRC'
status:
type: string
description: '[Resource Status](https://developers.tabapay.com/reference/resource-status#/)'
example: COMPLETED
originally:
type: string
description: Original [Resource Status](https://developers.tabapay.com/reference/resource-status#/)
example: COMPLETED
amount:
type: string
description: See how to [properly format an amount](/reference/data#how-to-specify-an-amount-value).
pattern: ^[0-9]*.?[0-9]{0,4}$
amountUSD:
type: string
description: 'Amount in USD if `currency` is not `840`.
See how to [properly format an amount](/reference/data#how-to-specify-an-amount-valuee).'
pattern: ^[0-9]*.[0-9]{0,2}$
fees:
type: object
description: Estimated Fees
required:
- interchange
- network
- tabapay
properties:
interchange:
type: string
description: Interchange Fees
network:
type: string
description: Network Fees
tabapay:
type: string
description: TabaPay Fees
reversalStatus:
type: string
description: Reversal [Status](https://developers.tabapay.com/reference/resource-status#/)
example: REVERSED
reversal:
type: object
description: Reversal
properties:
networkRC:
type: string
description: 'Void
[Network Response Code](https://developers.tabapay.com/reference/iso-network-codes#/)'
example: '00'
networkRC2:
type: string
description: 'Refund after failed Void
[Network Response Code](https://developers.tabapay.com/reference/iso-network-codes#/)
Present if Dual-Message Network'
example: '00'
error:
type: string
description: Internal Error Code. 1-8 characters.
reversalAmount:
type: string
description: Amount of the partial reversal. See how to [properly format an amount](/reference/data#how-to-specify-an-amount-value).
example: '0.06'
deleteRTPTransaction:
type: object
properties:
amount:
type: string
description: 'Partial Reversal Amount. See how to [properly format an amount](/reference/data#how-to-specify-an-amount-value).
*Optional. Use is only allowed if using query string `?response`. If omitted, the reversal will be for the original amount.'
pattern: ^[0-9]*.?[0-9]{0,4}$
fee:
type: string
description: 'The fee the participant charges for returning the funds. See how to [properly format an amount](/reference/data#how-to-specify-an-amount-value).
*Exclusively compatible with query string `response`. Optional, omit if no fee is incurred.'
pattern: ^[0-9]*.?[0-9]{0,4}$
reasonCode:
type: string
description: See valid Reason Codes for [`?request`](/reference/ach-rtp#rtprequest) and [`?response`](/reference/ach-rtp#/rtpresponse)
pattern: ^[A-Z0-9]{4}
network:
type: string
description: 'The payment-rails used to reimburse the original credit transfer
Acceptable values:
- `R`: RTP
- `A`: ACH Payment
- `W`: FedWire
- `C`: CHIPS
*Exclusively compatible with query string `response`. Required if `reasonCode` is `ACTC`, otherwise omit. If `network` is `R` (<<glossary:RTP>>), a credit transfer will be sent to reimburse the original transaction.'
pattern: ^[RAWC]$
reversalID:
type: string
description: 'The unique identifier of the transaction used to return the funds. Acceptable values:
- An **ACH** Trace Number
- A **FedWire** IMAD
- A **CHIPS** System Sequence Number (SSN)
*Exclusively compatible with query string `response`. Required if `reasonCode` is `ACTC` and `network` is `W`, `A`, or `C`, omit otherwise.'
createTransactionResponsePending:
type: object
properties:
SC:
$ref: '#/components/schemas/SC'
EC:
$ref: '#/components/schemas/EC'
transactionID:
type: string
example: TabaPay_TransactionID_
network:
type: string
example: Visa
networkRC:
$ref: '#/components/schemas/networkRC'
status:
type: string
description: '[Resource Status](https://developers.tabapay.com/reference/resource-status#/)'
example: PENDING
fees:
type: object
description: Estimated Fees
required:
- interchange
- network
- tabapay
properties:
interchange:
type: string
description: Interchange Fees
network:
type: string
description: Network Fees
tabapay:
type: string
description: TabaPay Fees
card:
type: object
description: Card Details
required:
- last4
properties:
last4:
type: string
description: Last 4 of Card Account Number (PAN)
expirationDate:
type: string
description: 'Expiration Date
YYYYMM Format
Optional.'
pullOptions:
type: object
description: 'Additional Pull Options
*Optional*'
properties:
securityCode:
type: string
pattern: ^[0-9]{3,4}$
description: '<<glossary:Security Code>>
Allowed only if using `sourceAccountID`'
recurring:
type: boolean
description: 'Recurring Pull Transaction
Set value to `true` if security code is *not* present
*Optional*'
recurringData:
type: object
description: Recurring payment details
required:
- initiator
- type
properties:
initial:
type: boolean
description: 'Indicates first or subsequent transaction
- `true` - first transaction in a series.
- `false` - following transactions in a series.
*Optional. Default value is `false`.'
initiator:
type: string
description: '<<glossary:MIT>>, or <<glossary:CIT>>
- `M` - Merchant Initiated Transaction.
- `C` - Customer Initiated Transaction.'
example:
- M
- C
pattern: ^[MC]$
type:
type: string
description: 'Indicates the type of MIT or CIT.
M or C Valid Values:
- `A` - AdHoc COF (Card on File).
- `S` - Subscription.
- `R` - Recurring payment.
M Only Valid Values:
- `U` - Resubmission.
- `P` - Partial Shipment.
- `D` - Delayed.
- `N` - No Show.
- `I` - Installment.
For more descriptions, refer to [CIT-MIT Indicators](https://developers.tabapay.com/docs/cit-mit-indicators)'
example:
- A
- U
id:
type: string
description: "Purchase ID\nLinks the original transaction (e.g. referenceID, order number, subscription ID).\n\n Limit to 25 max characters"
pattern: ^.{1,25}$
example: gsspeGzFgKJ8rTUkxlp0Qg
networkID:
type: string
description: Network Transaction ID from the proceeding <<glossary:CIT>>, or first transaction in the series.
example: '123456789102'
partial:
type: boolean
description: "Accept [Partial Authorizations](/docs/partial-authorizations#/) for `pull` payments. Valid Values:\n- `true` - Merchant accepts partial approvals.\n- `false` - Merchant does *not* accept partial approvals.\n\n*Optional.* Default value is `false`\n\n Request to enable at [TabaPay Support](https://tabapay.zendesk.com/hc/en-us/requests/new#/) or [help@tabapay.com](mailto:help@tabapay.com)"
expirationDate:
type: string
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$
description: 'Expiration Date/Time of Request for Payment (***<<glossary:RFP>>***)
Expiration Date in YYYY-MM-DDTHH:MM:SSZ format.
*Optional. Default is 24 hours from original <<glossary:RFP>>.*'
example: '2024-07-11T11:23:00Z'
3DSecure:
type: object
description: '[3D Secure](https://en.wikipedia.org/wiki/3-D_Secure) Values'
required:
- ECI
- UCAF
- version
properties:
ve
# --- 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