Overview
Waffo Pancake uses a refund ticket system. Merchants issue refunds from the Dashboard or through the API, and each refund creates a ticket that moves through a defined lifecycle.Business Rules
These rules are enforced by the API and cannot be overridden.
- One-time products can be refunded by the merchant at any time after payment — there is no refund time limit. The refund amount can’t exceed the order amount or your account’s current withdrawable balance.
- Subscriptions are refunded through refund tickets too, one payment at a time. A refund does not cancel the subscription; cancel it separately to stop future charges.
- Partial refunds are supported by providing a custom
amount(as a display format string, e.g., “15.00”) when creating a ticket.
Refund Ticket Statuses
Every refund ticket moves through the following lifecycle:pending
Refund ticket created, awaiting review.
approved
Refund approved. Merchant-initiated refunds are approved automatically on submission; requests buyers submit in the portal are reviewed by the platform.
rejected
Refund ticket rejected.
processing
Refund is being processed by the payment provider.
succeeded
Refund completed successfully.
failed
Refund processing failed.
Arrival time, and what “processing” means. Card refunds are handled by the buyer’s issuing bank and typically arrive within 3–10 business days (no later than 14); WeChat Pay refunds arrive immediately. A ticket in
processing is at the payment-provider / bank stage — Waffo does not run an internal finance review on top of it.Creating a Refund Ticket
Refund tickets are created by calling the API with API Key authentication.Endpoint
Request Body
string
required
The ID of the payment to refund (UUID v4).
string
required
A description of why the refund is being requested.
string
Amount to refund as a display format string (e.g., “15.00”). Omit for a full refund.
Response
string
The unique ID of the created refund ticket.
string
Initial status of the ticket. Always
pending on creation.string
The refund amount as a display format string.
Example
The cURL tab uses API Key authentication — the three signature headers, not a Bearer token. See API Key Authentication for howX-Signature is computed.
The merchant SDK (
@waffo/pancake-ts) does not wrap this endpoint yet — call the REST endpoint with your own signature as shown above. createRefundTicket() on the customer-token client (client.customer(token)) is currently rejected by the gateway with 403 — don’t use it.Querying Refund Tickets
Use GraphQL to retrieve refund ticket data.Webhook Notifications
You can configure webhooks to receive notifications when refund ticket events occur. See the Webhooks guide for setup instructions.Reducing Refund Requests
Clear Product Descriptions
Clear Product Descriptions
Accurate descriptions reduce “not as expected” refund requests.
Trial Periods
Trial Periods
Let customers try before buying to reduce post-purchase regret.
Responsive Support
Responsive Support
Address issues quickly before they become refund requests.
Recognizable Billing
Recognizable Billing
Use a clear billing descriptor so customers recognize charges.