Refund Management
Refunds are initiated against a payment trade (not a business order), either from the UI or via API. The refund amount is constrained by the refundable balance of the original trade, and multiple partial refunds are supported.
Entry Points
| Method | Entry | Description |
|---|---|---|
| UI | Trade Orders → Payment Trades → operation column More → Refund | Available on both the admin and merchant panels; refunds issued on the admin panel carry the merchant number |
| API | POST /unipay/refund | Called by business systems; see Apply for Refund |
| Refund query | Trade Orders → Refund Orders | Both panels can view refund order status and details |
Issuing a Refund from the UI
Find the target trade in the Payment Trades list (fund status "success" and refundable balance greater than 0), then click More → Refund in the operation column:
- The system queries the trade details first and fills in the fund trade number and the current refundable balance;
- Enter the refund amount (the dialog pre-fills the entire refundable balance — lower it for a partial refund; "one-click full refund" fills the balance back in) and the refund reason;
- Confirm once more and submit; a refund order is created.
Partial refunds
One payment trade can be partially refunded multiple times, as long as the cumulative refund amount does not exceed the original trade amount. The refundable balance decreases after each successful refund and is visible in both the payment trade and refund order details.
Refund Status Transitions
| Status | Description |
|---|---|
| Refunding (progress) | Submitted to the channel, waiting for the result |
| Success (success) | Refund received |
| Failed (fail) | Rejected by the channel or processing failed (insufficient balance, past the refundable period, etc.) |
| Closed (close) | Refund order closed, no longer processed |
Refund Orders Page
Query conditions: refund order number, fund trade number, merchant, app, merchant order number, refund status, trade type (normal / gateway), payment product, creation time.
List columns: refund order number, trade number, merchant order number, amount, refund status, trade type, product, merchant, creation time.
Operations:
| Operation | Condition | Description |
|---|---|---|
| View | — | Detail drawer (identity info / related funds / amount and status / channel snapshot / notification and audit) |
| Sync | Refunding | Pull the refund result from the channel; use when a callback is lost |
| Manual close | "Refunding" for more than 7 days | Manually close and archive refund orders with no result for a long time |
| Export | — | Export from the top-right corner |
FAQ
| Symptom | Handling |
|---|---|
| Refund stuck in "Refunding" | The channel callback has not arrived; run Sync on the refund order. After 7 days, close it manually and initiate a new refund |
| Refund fails with insufficient balance | The original trade may have been partially refunded, or settlement changed on the channel side; verify the refundable balance |
| No refund button on the order page | The refund entry is on the Payment Trades page, not on the Normal Orders / Gateway Orders page |
Related Sections
- Payment Order Management: other operations at the payment trade layer
- Apply for Refund: parameters for API-initiated refunds
- Refund Sync: actively query refund status via API