Finalize

Bind a passed Verification to the order it unlocks. One Verification, one order: it can't be reused for a second purchase.

Request

POST /api/v1/transactions/{transactionId}/finalize with a bearer token holding transactions:write. The transactionId comes from the result callback or the Verification read.

curl -X POST https://<our-host>/api/v1/transactions/<transaction-id>/finalize \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"orderId": "1001"}'

Do this when the order is created or paid, and only for a pass. It must happen within 24 hours of the Verification.

Answers

StatusMeaning
200Finalized. Calling again with the same orderId also answers 200, with replayed: true, so retries are safe.
409Problem Details of type conflict with a top-level reason: not_passed (the result was not a pass), expired (older than 24 hours) or already_finalized (bound to a different order).
404Not found for your shop: another shop's or tenant's Verification, an in-store transaction, one still pending, or a malformed id. They all look the same.
400 / 401 / 403 / 429As for any API call. See Errors.

On already_finalized, do not fulfil the second order from this Verification: send the shopper through a new one. See Errors for the Problem Details format.