# Handle chargebacks Building with an AI agent? Start at https://docs.payme.io/agents.md ## Prerequisites - Sales created with a sale_callback_url that handles sale-chargeback and sale-chargeback-refund ## Related - [Callback types reference](/payments/getting-started/callback-types) - [Understand the sale lifecycle](/payments/codes-statuses/sale-lifecycle) - [Sale Statuses](/payments/codes-statuses/sale-statuses) - [Refund a sale](/payments/post-sale-actions/post-refund-sale) - [List transactions](/payments/query-apis/post-get-transactions) - [Reconcile sales and withdrawals](/accepting-payments/reporting/reconcile-sales-and-withdrawals) - [How 3D Secure works on PayMe](/accepting-payments/3d-secure/how-3d-secure-works) - [Accept PayPal payments](/accepting-payments/payment-methods/paypal) A chargeback is a payment that the buyer's card issuer (or bank) takes back after the buyer disputes it. The issuer decides the case. PayMe and the acquirer pass the dispute, your evidence and the decision between the issuer and the seller. This page explains how you learn about a chargeback, what happens to the money, how to respond, and how the case ends. ## How you learn about a chargeback **Callback.** PayMe sends a `sale-chargeback` callback to the sale's `sale_callback_url`, and to your partner's sale callback URL if PayMe has set one. The sale's status changes: | `sale_status` | Meaning | |---|---| | `chargeback` | The whole payment was charged back. | | `partial-chargeback` | Part of the payment was charged back. | On top of the usual [sale callback fields](/payments/getting-started/callbacks#sale-callback-payload), the callback carries: | Field | Description | |---|---| | `inquiry_number`, `inquiry_code` | The references of the chargeback case. Quote them when you contact PayMe about it. | | `card_last_four_digits` | The last four digits of the card that was charged back. | | `vas_3ds_exists` | `1` when the seller's account has the 3D Secure service. It doesn't say whether this payment went through 3D Secure: for that, see `sale_3ds` in the same callback. | `payme_transaction_id` and `payme_transaction_total` in this callback describe the original payment, not the chargeback. Read the charged-back amount from `get-transactions`; see [What happens to the money](#what-happens-to-the-money). As with any callback, confirm the sale with [`get-sales`](/payments/query-apis/post-get-sales) before you act on it. **Email.** PayMe also emails the seller about the chargeback, with the details of the sale and how to respond. There's no API call to respond to a chargeback. To find charged-back sales, call `get-sales` with `"sale_status": ["chargeback", "partial-chargeback"]`. ## What happens to the money For a seller whose sales are paid out from the PayMe balance: - PayMe takes the charged-back amount from the seller's PayMe balance. - A chargeback handling fee may also apply under the seller's agreement. PayMe charges it from the balance separately, and partners get a [`charge-complete` callback](/payments/getting-started/callback-types#seller-balance) for it. If the chargeback is later reversed, the fee isn't returned automatically. - If the chargeback is reversed in the seller's favor, PayMe adds the amount back to the balance. For a seller paid directly by the card companies, the chargeback amount isn't taken from a PayMe balance: it is settled between the seller and the card company. PayMe still sends the callbacks. Each chargeback, and each reversal, is its own row in [`get-transactions`](/payments/query-apis/post-get-transactions). To list them for a period: `POST https://sandbox.payme.io/api/get-transactions` (production: `https://live.payme.io/api/get-transactions`) ```json { "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567", "transaction_status": ["chargeback", "partial-chargeback", "chargeback-refund", "partial-chargeback-refund"], "transaction_created_min": "2026-10-01 00:00:00", "transaction_created_max": "2026-10-31 23:59:59", "page": 1, "page_size": 500 } ``` A chargeback row in the response (other fields omitted): ```json { "sale_payme_id": "SALEDEMO-XXXXXXXX-XXXXXXXX-XXXXXXXX", "transaction_id": "order-1001", "transaction_created_at": "2026-10-14 09:12:40", "sale_status": "chargeback", "transaction_status": "chargeback", "transaction_action": "Chargeback", "sale_currency": "ILS", "transaction_price": 9000, "sale_is_3ds": false } ``` | Row | `transaction_status` | `transaction_action` | Effect on the balance | |---|---|---|---| | Chargeback | `chargeback`, `partial-chargeback` | `Chargeback`, `Partial Chargeback` | Subtract `transaction_price` | | Reversal | `chargeback-refund`, `partial-chargeback-refund` | `Chargeback Refund`, `Partial Chargeback Refund` | Add `transaction_price` | `transaction_price` is positive on every row, so apply the sign yourself. `transaction_comment` holds the chargeback reason. To match chargebacks against withdrawals, see [Reconcile sales and withdrawals](/accepting-payments/reporting/reconcile-sales-and-withdrawals). ## Respond to a chargeback The card issuer decides from the evidence it receives. To contest a chargeback: 1. Reply the way the email from PayMe describes, within the deadline stated in the email. PayMe passes what you send to the card company. 2. Send what shows that the buyer ordered and received what they paid for: for example the invoice or receipt, the order details, proof of delivery, and your messages with the buyer. You can also contact the buyer. If the buyer withdraws the dispute with their card issuer, the chargeback can be reversed. ## How the case ends - **In the seller's favor.** PayMe sends a `sale-chargeback-refund` callback and adds a `chargeback-refund` or `partial-chargeback-refund` row in `get-transactions`. The callback carries the standard sale fields only. Read the sale's `sale_status` from the callback, or with `get-sales`, rather than assuming a value. - **In the buyer's favor.** PayMe sends no further callback. The sale stays `chargeback` or `partial-chargeback`, and the money stays with the buyer. ## You can't refund a charged-back sale [`refund-sale`](/payments/post-sale-actions/post-refund-sale) works only on `completed` and `partial-refund` sales. On a sale in `chargeback` or `partial-chargeback` it fails with HTTP 500 and error `305`, with the sale's status in `status_additional_info`: ```json { "status_code": 1, "status_error_details": "Cannot perform action due to an incorrect status", "status_additional_info": "chargeback", "status_error_code": 305, "session": "Ab12Cd34" } ``` The chargeback already returns the money to the buyer, so don't refund them in another way as well. ## Reduce chargebacks - **Use 3D Secure.** It confirms that the buyer is the cardholder. It doesn't stop a buyer from disputing for other reasons, such as an order that never arrived. Charges on a saved card (`buyer_key`) and subscription charges run without it. See [How 3D Secure works](/accepting-payments/3d-secure/how-3d-secure-works). - **Refund when a buyer asks.** Once a chargeback opens, you can no longer refund the sale. - **Keep your evidence.** Store order details, receipts, delivery confirmations and messages with the buyer, so you can respond in time. ## Test your chargeback handling [Test Cards and Payment Methods](/payments/getting-started/test-cards-and-payment-methods) lists a SEPA test account, `DE35370400440532013002`, whose sale completes and then moves to `chargeback`. You can use it if SEPA is active on your sandbox account (SEPA sales are in `EUR`). Otherwise, ask PayMe how to test chargebacks. PayPal disputes don't go through PayMe; see [Accept PayPal payments](/accepting-payments/payment-methods/paypal#disputes).