Chargebacks
Chargebacks occur when a cardholder disputes a transaction with their bank. The bank reverses the payment and notifies TapTree. You can use the Chargebacks API to monitor, respond to, and manage chargebacks across your payments. Chargebacks are also visible as records within the Settlements API.
Discover the Chargebacks resource using Postman:
TapTree Postman CollectionChargebacks are only available in live mode. Test tokens will receive a
404 response, since chargebacks only occur on real transactions.
Chargeback lifecycle
A chargeback goes through a series of statuses from the moment it is received until it is resolved. Understanding the lifecycle helps you respond quickly and effectively.
Statuses
| Status | Description | Terminal? |
|---|---|---|
open | Chargeback received. Funds are withheld. You must respond before deadline_at. | No |
accepted | You accepted the chargeback. Funds are returned to the cardholder. | Yes |
disputed | You submitted evidence (representment). Awaiting card network decision. | No |
won | The card network ruled in your favor. Funds are returned to you. | Yes |
lost | The card network ruled against you. Funds are returned to the cardholder. | Yes |
Status flow
Key facts
Chargebacks require immediate attention. When you receive a chargeback webhook
(transactions.chargeback.open), you must respond before the deadline_at
timestamp. If no action is taken before the deadline, the chargeback is
automatically accepted.
- Each chargeback includes a
deadline_atfield — this is your hard cutoff. Deadlines are short, so act as soon as you receive the webhook. - Chargebacks incur processing fees regardless of whether you win or lose the dispute.
- If a dispute escalates to arbitration, the losing party pays the card network’s ruling fee — as of 2025, Visa charges $600 per ruling and Mastercard fees can exceed $500.
- Chargeback events are delivered to the
webhook_urlof the parent payment. See Webhooks for details.
Dispute process
When you dispute a chargeback, the process goes through up to three stages before a final decision is reached. TapTree reports the outcome as won or lost — the stages below happen between the card network and the issuing bank.
- Representment — You submit evidence to challenge the chargeback. The issuing bank reviews it and either accepts your evidence or upholds the chargeback.
- Pre-arbitration — If the issuer rejects your evidence, there is a second round where either party can accept liability or push the case further.
- Arbitration — Neither side concedes, so the card network (Visa or Mastercard) steps in as the final judge and makes a binding ruling. The losing party pays the network’s arbitration fee.
3D Secure and liability shift
3D Secure 2 verifies the cardholder’s identity before authorization. It supports risk-based frictionless authentication, so low-risk transactions can be approved without a challenge step — reducing fraud exposure with minimal checkout friction.
When a cardholder successfully authenticates with 3D Secure, fraud-related chargeback liability shifts from your business to the cardholder’s issuing bank. This applies to fraud reason codes only — for example Visa 10.1–10.5 and Mastercard 4837/4840/4849/4871.
3D Secure does not protect against non-fraud disputes such as "product not received", "not as described", or "credit not processed". Liability shift also does not apply when authentication fails, when enrollment status cannot be confirmed, for data-only 3DS flows, or for certain merchant-initiated and recurring transactions.
Endpoints
Retrieve a chargeback
Fetch details of a specific chargeback using its unique identifier.
List payment chargebacks
Retrieve all chargebacks for a specific payment.
The chargeback model
The chargeback model contains all the details related to a disputed transaction, including the reason, amount, deadline, acquirer information, and dispute status.
Core attributes
- Name
id- Type
- string
- Description
Unique identifier for the chargeback, prefixed with
cb_.
- Name
object- Type
- string
- Description
The object type. Always
chargeback.
- Name
payment_id- Type
- string
- Description
The ID of the original payment that was charged back, prefixed with
pay_.
- Name
status- Type
- string
- Description
Status of the chargeback.
Possible values:
openaccepteddisputedwonlost
- Name
reason- Type
- object
- Description
The chargeback reason from the card network.
- Name
amount- Type
- object
- Description
The chargeback amount.
- Name
deadline_at- Type
- datetime
- Description
The deadline to respond to the chargeback, in ISO 8601 format. After this deadline, the chargeback is automatically accepted.
- Name
acquirer- Type
- object
- Description
Information about the acquirer handling the chargeback.
- Name
dispute- Type
- object
- Description
Dispute information, if the chargeback has been disputed.
- Name
consumer_account_number- Type
- string
- Description
Masked card number of the consumer who initiated the chargeback.
- Name
created_at- Type
- datetime
- Description
Timestamp of when the chargeback was created, in ISO 8601 format.
- Name
updated_at- Type
- datetime
- Description
Timestamp of the last update.
- Name
links- Type
- object
- Description
Links related to the chargeback object.
Response object
{
"object": "chargeback",
"id": "cb_8ZkT3mN9pRw",
"payment_id": "pay_AzoSgo2h7mB",
"status": "open",
"reason": {
"code": "10.1",
"description": "EMV Liability Shift Counterfeit Fraud"
},
"amount": {
"value": "25.50",
"currency": "EUR"
},
"deadline_at": "2026-03-15T23:59:59.000Z",
"acquirer": {
"name": "TapTree Acquiring",
"reference": "ACQ-REF-7K9MX2P3",
"case_id": "CASE-A8N4R7"
},
"consumer_account_number": "5**************1",
"created_at": "2026-03-01T10:30:00.000Z",
"updated_at": "2026-03-01T10:30:00.000Z",
"links": {
"api": {
"href": "https://api.taptree.org/v1/chargebacks/cb_8ZkT3mN9pRw",
"type": "application/json"
},
"payment": {
"href": "https://api.taptree.org/v1/payments/pay_AzoSgo2h7mB",
"type": "application/json"
}
}
}
Retrieve a Chargeback
Fetch details of a specific chargeback using its unique identifier. The response includes the full chargeback details, reason, acquirer info, and dispute status.
Required parameters
- Name
id- Type
- string
- Description
The unique identifier of the chargeback to retrieve. In the endpoint URL, substitute
idwith the specific chargeback's ID, such ascb_8ZkT3mN9pRw.
Request
curl https://api.taptree.org/v1/chargebacks/cb_8ZkT3mN9pRw \
-H "Authorization: Bearer {token}"
Example response
{
"object": "chargeback",
"id": "cb_8ZkT3mN9pRw",
"payment_id": "pay_AzoSgo2h7mB",
"status": "open",
"reason": {
"code": "10.1",
"description": "EMV Liability Shift Counterfeit Fraud"
},
"amount": {
"value": "25.50",
"currency": "EUR"
},
"deadline_at": "2026-03-15T23:59:59.000Z",
"acquirer": {
"name": "TapTree Acquiring",
"reference": "ACQ-REF-7K9MX2P3",
"case_id": "CASE-A8N4R7"
},
"consumer_account_number": "5**************1",
"created_at": "2026-03-01T10:30:00.000Z",
"updated_at": "2026-03-01T10:30:00.000Z",
"links": {
"api": {
"href": "https://api.taptree.org/v1/chargebacks/cb_8ZkT3mN9pRw",
"type": "application/json"
},
"payment": {
"href": "https://api.taptree.org/v1/payments/pay_AzoSgo2h7mB",
"type": "application/json"
}
}
}
List all chargebacks
Retrieve a paginated list of all chargebacks for your acceptor. Chargebacks are ordered by creation date, newest first. Use limit, starting_after, and ending_before parameters for pagination.
Optional query parameters
- Name
limit- Type
- integer
- Optional
- optional
- Default
- default=10
- Description
Specify the maximum number of chargebacks to return in one response, up to 100.
||- Name
starting_after- Type
- string
- Optional
- optional
- Description
A chargeback
idfor cursor-based pagination. Returns chargebacks listed after the specified ID.Example: If the last chargeback
idyou accessed wascb_8ZkT3mN9pRw, usestarting_after=cb_8ZkT3mN9pRwto view chargebacks following it.
|- Name
ending_before- Type
- string
- Optional
- optional
- Description
A chargeback
idfor cursor-based pagination. Returns chargebacks listed before the specified ID.To view chargebacks preceding
cb_8ZkT3mN9pRw, includeending_before=cb_8ZkT3mN9pRwin your request.
|
Request
curl -G https://api.taptree.org/v1/chargebacks \
-H "Authorization: Bearer {token}" \
-d limit=20
Example response
{
"has_more": false,
"data": [
{
"object": "chargeback",
"id": "cb_8ZkT3mN9pRw",
"payment_id": "pay_AzoSgo2h7mB",
"status": "open",
"reason": {
"code": "10.1",
"description": "EMV Liability Shift Counterfeit Fraud"
},
"amount": {
"value": "25.50",
"currency": "EUR"
},
"deadline_at": "2026-03-15T23:59:59.000Z",
"created_at": "2026-03-01T10:30:00.000Z",
"links": {
"api": {
"href": "https://api.taptree.org/v1/chargebacks/cb_8ZkT3mN9pRw",
"type": "application/json"
}
}
}
]
}
List payment chargebacks
Retrieve all chargebacks for a specific payment. Use this to check if a particular payment has been charged back.
Required parameters
- Name
id- Type
- string
- Description
The payment ID (e.g.
pay_AzoSgo2h7mB).
Request
curl https://api.taptree.org/v1/payments/pay_AzoSgo2h7mB/chargebacks \
-H "Authorization: Bearer {token}"
Example response
{
"has_more": false,
"data": [
{
"object": "chargeback",
"id": "cb_8ZkT3mN9pRw",
"payment_id": "pay_AzoSgo2h7mB",
"status": "open",
"reason": {
"code": "10.1",
"description": "EMV Liability Shift Counterfeit Fraud"
},
"amount": {
"value": "25.50",
"currency": "EUR"
},
"deadline_at": "2026-03-15T23:59:59.000Z",
"created_at": "2026-03-01T10:30:00.000Z",
"links": {
"api": {
"href": "https://api.taptree.org/v1/chargebacks/cb_8ZkT3mN9pRw",
"type": "application/json"
}
}
}
]
}