Create a Refund
Issue full or partial refunds for card and SPEI payments. Process returns, cancellations, and adjustments with a simple API call.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: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 withallowPartials: true (multiple payments on one order), you must also pass the paymentId of the specific payment to refund:
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:Important Rules
Only Paid Payments
Only Paid Payments
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.Refunds Are Final
Refunds Are Final
Once processed, refunds cannot be cancelled or reversed. Make sure to verify the amount before refunding.
Maximum Refund Amount
Maximum Refund Amount
Total refunds cannot exceed the original payment amount. Attempting to over-refund will result in an error.
Processing Fees
Processing Fees
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):- Refund amount
- Original payment reference
- Estimated timeframe for funds to appear
- Support contact information
Refund Reasons
Always include a reason for tracking and reporting:- 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 a400 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
Omittingamount, 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
Automate Refund Workflows
Automate Refund Workflows
Integrate refunds into your order management system for seamless returns processing.
Set Refund Policies
Set Refund Policies
Define clear refund policies and timeframes. Communicate these to customers.
Track Refund Metrics
Track Refund Metrics
Monitor refund rates to identify issues with products, services, or payment experience.
Provide Clear Communication
Provide Clear Communication
Tell customers when to expect refunds in their account (5-10 days for cards).
Keep Records
Keep Records
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