API

Orders

An order is a request for one specific payment. You create it, hand the buyer a checkout link, and listen for the webhook that fires when the on-chain settlement lands.

Create an order

POST /v1/orders
Authorization: Bearer sk_live_…
Content-Type: application/json

{
  "amount": "12.50",
  "currency": "USDC",
  "chain": "base",
  "recipient": "@yourhandle",
  "expires_in": 1800,
  "metadata": { "order_id": "A-1042" }
}
→ 201 Created
{
  "id": "ord_8H3kZ…",
  "status": "awaiting_payment",
  "checkout_url": "https://pay.thetab.bar/c/8H3kZ",
  "amount": "12.50",
  "currency": "USDC",
  "chain": "base",
  "recipient_address": "0x…",
  "expires_at": "2026-05-17T13:42:00Z",
  "metadata": { "order_id": "A-1042" }
}

Retrieve an order

GET /v1/orders/ord_8H3kZ…

List orders

GET /v1/orders?status=completed&limit=50&cursor=…

Pagination is cursor-based; the response includes has_more and next_cursor.

Order statuses

  • awaiting_payment — created, waiting for the buyer.
  • processing — the relayer has submitted; waiting for on-chain confirmation.
  • completed — settled on-chain, indexed, and refunded to your dashboard.
  • expired — the deadline passed before payment.
  • cancelled — you cancelled the order via API or dashboard before payment.

Cancel

POST /v1/orders/ord_8H3kZ…/cancel

Cancellation only works while the order is awaiting_payment. Once a transaction is signed and in-flight, you can't unring the bell on-chain.