Skip to main content
Five endpoints, one signing scheme, and one rule that governs everything else: an order is a fulfilment instruction, and it is accepted before it is finished.
This is a separate service from the Partner API. It does not use API-KEY, it is not under /api/v0, and it does not take an Api-Version header. Requests are signed with HMAC-SHA256, and money is in integer minor units rather than decimal strings.

The five endpoints

The integration in three steps

  1. Read the catalogue and cache it. GET /catalog/products tells you which canonical_sku values exist and which amounts each accepts.
  2. Place the order with an Idempotency-Key. You get an order_id back immediately, in state PENDING.
  3. Poll, then retrieve. When the order reaches FULFILLED, the codes are available from the voucher endpoint.
There is no confirmation step and no cancellation endpoint. An accepted order either fulfils or produces a refund obligation, so validate before you send rather than after.

The rule that costs money if you miss it

An item can reach FULFILLED having produced fewer vouchers than ordered.
Three cards were sourced; two were not. The shortfall carries a refund obligation. Bill your customer from voucher_count and the vouchers you actually retrieved, not from what you ordered. They are usually the same number, which is exactly why the failure is easy to miss.

Where to next

  • Signing requests — the canonical string, and the four rules that decide whether it verifies
  • Conventions — money, identifiers, rate limits, pagination
  • Order lifecycle — the six states and how to poll them
  • Worked flows — the happy path, recovering a lost response, and a short fulfilment