Skip to main content
POST /api/v1/transaction is the endpoint a register calls after sales tax is computed and before the drawer opens. It needs a merchant or partner key with transaction:create.

The request

The response

What the register uses: calculation.cash_total_cents is the amount to collect. rounding_delta_cents is what to print on the receipt as the rounding adjustment. ledger_total_cents is what the books keep. What the evidence uses: statutory_basis, activation, location_resolution and the hash fields. What a dashboard uses: pending_rules tells the merchant what is coming at that location; local_records tells them a local instrument exists even though it does not yet apply.

Where the rule came from

calculation.jurisdiction_data_source reads database+registered_location when a registered location governed, database+location_override when a mobile override did, database on the ZIP or name paths, and hardcoded only if the database was unreachable (the engine then applies its built-in table and the record says so).

Idempotency and retries

Transaction ids are generated by the engine. A retried request creates a second record; the POS should hold its own reference and not resend on a 200. On a network failure with no response, query GET /api/v1/transactions?merchant_id=… for the last minute before resending.

Errors