Skip to main content

Create a Refund

Issue full or partial refunds for card and SPEI payments. Process returns, cancellations, and adjustments with a simple API call.
PayCash and CIE Cash Net do not support API refunds. Handle returns at merchant level. Card and SPEI support refunds via the API below.
The amount field is required on every refund request and is expressed in minor units (centavos) — e.g. 5000 refunds $50.00 MXN. There is no “omit for full refund” shorthand: to refund the full payment, pass the full amount.

Partial Refund

Refund part of the original payment amount:
Response:
The refund is processed asynchronously. The status in the response is the payment order status at the time of the request and may not yet reflect the refund — poll the payment order or subscribe to the payment.refund.success webhook to confirm the final PARTIALLY_REFUNDED / REFUNDED status.

Full Refund

Pass the full remaining amount to refund the payment completely:

Split-Tender Orders

If the payment order was created with allowPartials: true (multiple payments on one order), you must also pass the paymentId of the specific payment to refund:
If paymentId is omitted on a split-tender order, the API responds with a validation error listing the available payment IDs.

Refund Timeline

Card Refunds

Funds typically appear in the customer’s account within 5-10 business days. This is standard bank processing time and outside of Cheqpay’s control.
1

Refund Requested

You create a refund via the API.
2

Instant Processing

Cheqpay processes the refund immediately (status: COMPLETED).
3

Bank Processing

Card network and issuing bank process the refund (5-10 days).
4

Funds Available

Customer sees the refund in their account.

Multiple Partial Refunds

Issue multiple partial refunds up to the original payment amount:

Example

Refund Status

Refund progress is reflected in the payment order status:
Refunds are processed asynchronously — retrieve the payment order or listen for the payment.refund.success webhook to confirm completion. The 5-10 day delay for the customer to see the funds is on the banking side.

Important Rules

You can only refund payments that have been authorized or captured (order status COMPLETED or PARTIALLY_REFUNDED for further partial refunds). Pending or failed payments cannot be refunded.
Once processed, refunds cannot be cancelled or reversed. Make sure to verify the amount before refunding.
Total refunds cannot exceed the original payment amount. Attempting to over-refund will result in an error.
Processing fees are typically not refunded. You’ll still pay the original transaction fee even after issuing a refund.

Customer Notifications

Customers are automatically notified when refunds are processed (if notifications are enabled):
The notification includes:
  • Refund amount
  • Original payment reference
  • Estimated timeframe for funds to appear
  • Support contact information
Disable automatic notifications if you prefer to send refund notifications from your own system.

Refund Reasons

Always include a reason for tracking and reporting:
Common Reasons:
  • Customer requested refund
  • Order cancelled
  • Product returned
  • Duplicate payment
  • Item out of stock
  • Service not delivered
  • Quality issues

Error Handling

Payment Not Refundable

Refunding an order that is not in a refundable state returns a 400 with error code INVALID_OPERATION:

Refund Amount Exceeds Available

Attempting to refund more than the remaining refundable amount fails with a message indicating the refund amount exceeds the captured amount. Total successful refunds can never exceed the original captured amount.

Missing or Invalid Amount

Omitting amount, or sending a non-positive value, returns a 400 validation error — amount is always required, as an integer in minor units.

Testing Refunds

Sandbox Behavior

Refunds in sandbox process instantly (instead of 5-10 days in production):
1

Create Test Payment

Process a payment with a test card.
2

Issue Refund

Call the refund endpoint.
3

Instant Completion

Refund status immediately shows COMPLETED.

Test Scenarios

Best Practices

Integrate refunds into your order management system for seamless returns processing.
Define clear refund policies and timeframes. Communicate these to customers.
Monitor refund rates to identify issues with products, services, or payment experience.
Tell customers when to expect refunds in their account (5-10 days for cards).
Store refund reasons and details for accounting and dispute resolution.

Tracking Refunds

You can track refunds by retrieving the payment order (GET /v2/payment-orders/:id) and checking its status and refundedAmount, or by subscribing to the payment.refund.pending and payment.refund.success webhook events. Because refunds are processed asynchronously, allow a short delay before the order status reflects the refund.

Next Steps

View Payment Orders

Track payments eligible for refunds

Process Card Payments

Learn about payment processing

Error Handling

Handle refund errors gracefully

Best Practices

Learn refund workflow best practices