Payment Lifecycle
Thestatus field of a payment (GET /api/v2/payments/{id}) has five possible values: CREATED, AUTHORIZED, CLOSED, REJECTED, and EXPIRED.
Two statuses allow repeated actions without changing: a partial capture keeps the payment AUTHORIZED, and a refund keeps it CLOSED.
API status | Meaning | Triggered by | Terminal? |
|---|---|---|---|
CREATED | Payment created together with the checkout session; the customer hasn’t completed the Tabby checkout yet | Your Create Checkout Session request | No |
AUTHORIZED | Order placed; funds are reserved but not captured yet | Customer completes the Tabby checkout | No |
CLOSED | Final state: captured in full, cancelled, or partially captured and then closed | Your Capture or Close request | Yes — but refunds are allowed |
REJECTED | Tabby declined the order at checkout | Tabby scoring | Yes |
EXPIRED | The checkout was never completed | Customer cancelled on the Tabby checkout, or the session timed out | Yes |
EXPIRED does not mean an authorization expired — it always refers to the checkout. Payments in REJECTED and EXPIRED require no action from your end and are not shown on Merchant Dashboard.
Merchant Dashboard Statuses
Merchant Dashboard uses its own display statuses on top of the API ones. The mapping:| Merchant Dashboard | API status | How the payment got there |
|---|---|---|
NEW | AUTHORIZED | Authorized; nothing captured yet, or captured only partially |
CAPTURED | CLOSED | Captured in full, or partially captured and then closed |
CANCELLED | CLOSED | Closed without any capture |
REFUNDED | CLOSED | Captured, then refunded in full |
PARTIALLY REFUNDED | CLOSED | Captured, then refunded partially |
Lifecycle in Detail
Payment Creation
When you create a checkout session, Tabby creates a payment with status
CREATED along with it — before the customer opens the Tabby checkout page.Payments in this status are not shown on Merchant Dashboard.Payment Authorization
After successful order placement the payment becomes
AUTHORIZED: the funds are reserved on the customer’s side, but not transferred yet.Shown on Merchant Dashboard as NEW.Payment Capture
Send a Capture request as soon as the payment is authorized. When the full amount is captured, the payment automatically becomes
CLOSED.Shown on Merchant Dashboard as CAPTURED.Partial capture is supported: the payment stays AUTHORIZED (Dashboard: NEW) until you capture the full amount or send a Close request.Close (Optional)
Use a Close request when part of the order won’t be delivered:
- After a partial capture — Close cancels and refunds everything that wasn’t captured. The payment becomes
CLOSED, shown on Merchant Dashboard asCAPTURED. - Without any capture — Close cancels the payment completely. The payment becomes
CLOSED, shown on Merchant Dashboard asCANCELLED.
Statuses in API Responses vs Webhooks
API responses return statuses in uppercase ("AUTHORIZED"), while webhook payloads use lowercase ("authorized"). Compare statuses case-insensitively.
To make sure any text you send in JSON is transmitted and displayed correctly in Tabby interfaces, use UTF-8 encoding.