Subscriptions, Orders, and Refunds
QuotaAPI supports balance recharge orders and subscription-plan orders. Both retain payment currency, USD value, provider, and lifecycle snapshots, but they grant different benefits after completion.
Balance versus subscription
| Type | Granted after completion | How it is used |
|---|---|---|
| Balance recharge | USD account balance | Metered use across eligible groups |
| Subscription plan | A group, validity period, and quota windows | Only for the plan's group and model scope |
A subscription purchase is not a promise of automatic renewal. The purchase page shows a one-time plan price and validity period; later repurchase availability follows the current console offering.
Subscription quotas
A plan may define:
daily_limit_usd: daily USD usage limit.weekly_limit_usd: weekly USD usage limit.monthly_limit_usd: monthly USD usage limit.- Validity days, target group, supported model scope, and rate multiplier.
The subscription page shows current-window progress and remaining days. Reaching a window limit restricts further use through that subscription until the window resets. An expired subscription is no longer eligible for scheduling.
Order states
| Status | Meaning | User action |
|---|---|---|
PENDING | Waiting for payment | Pay before expiration or cancel |
PAID | Provider confirmed payment | Wait for benefit fulfillment |
RECHARGING | Balance or subscription is being granted | Do not pay again; refresh later |
COMPLETED | Fulfillment completed | Verify balance or subscription |
EXPIRED | Payment window ended | Create a new order; do not pay the old one |
CANCELLED | Order cancelled | Create a new order if needed |
FAILED | Payment or fulfillment failed | Inspect the error and open a ticket |
REFUND_REQUESTED | User requested a refund | Wait for administrator review |
REFUNDING / REFUND_PENDING | Provider refund is in progress | Wait for the final provider state |
PARTIALLY_REFUNDED | A partial refund completed | Verify the refund and remaining benefit |
REFUNDED | Refund completed | Verify the original payment account |
REFUND_FAILED | Refund failed | Contact an administrator |
The order-list endpoint is GET /api/v1/payment/orders/my; its relative API path is /payment/orders/my. The console shows the order number, creation time, USD amount, charged currency and amount, payment method, and status.
Payment verification
The payment page polls order state, while provider webhooks also advance it. Closing the browser or losing the return navigation does not erase the order. Reopen the order list and use status refresh.
One payment should correspond to one order. Never pay again while an order is PAID or RECHARGING, because fulfillment may still be retrying in the background.
Cancellation and expiration
Users can cancel only a PENDING order. An order expires after expires_at, and expiration releases any reserved promotion capacity. If the provider has already collected funds but local state is stale, QuotaAPI verifies the real payment state before treating the order as cancelled.
User refund requests
The refund action appears only when all conditions are met:
- The payment-provider instance enables refunds.
- The administrator allows user refund requests.
- Order state and remaining refundable amount are eligible.
- The user provides a reason.
Submitting a request advances the order to REFUND_REQUESTED; it does not mean money has been returned. Status changes again only after administrator review and a provider refund call. Cross-currency orders use the original payment currency and order FX snapshot, while settlement timing depends on the provider and bank.
A refund may require removing corresponding USD balance, subscription benefits, or promotion credit. If those benefits have already been consumed, an administrator may be unable to issue an immediate full refund. A partially refunded order can retain a remaining refundable amount.
WARNING
A refund does not restore first-recharge eligibility. Any order that reached PAID or a later state remains successful-payment history for new-user promotion checks.
Troubleshooting orders
PENDINGwithout a charge: check the payment component, currency, amount limits, and browser popups.- Charged but still
PENDING: refresh status and wait for the provider callback; do not pay twice. - Long-running
RECHARGING: open a ticket with the order number. FAILED: inspect the order or provider error, then create a new order.- Long-running refund: contact an administrator with order number and request time.
See Recharge, Payments, and Promotions for currency and FX behavior.
