Merchant Transactions
This capability is in active development. Endpoints, request bodies, and responses may change before general availability. Contact support@zip.tax for early access.
Merchant Transactions extend Merchant Management with the day-to-day tax operations your merchants need: calculating tax on a cart, recording and updating orders, storing exemption certificates, and issuing refunds. Every operation runs against a single merchant you have already connected, so your platform can drive full transaction-level compliance without asking each merchant to integrate separately.
Before you begin
You need two things:
- A Ziptax API key. See Authentication for where to get one and how to send it.
- A connected merchant with compliance credentials on file. Create the
merchant and store its credentials with the
Merchant Management endpoints. A merchant without valid
credentials returns
404(credentials not found) on every transaction call.
Common conventions
All Merchant Transactions endpoints share the same shape.
You never send compliance credentials in the request. Ziptax resolves them server-side from the connected merchant, so your integration only ever handles your own Ziptax API key.
Test vs Live environments
Each connected merchant has two environments: Live (production) and Test
(sandbox). By default, every request runs against Live. To run a request against
the merchant’s Test environment instead — for example, to validate your
integration without creating real orders or affecting tax filings — set the
X-ENV header to TEST.
X-ENV accepts LIVE (the default) or TEST, and applies to every Merchant
Transactions endpoint. Omit it to run against Live.
The Test environment is isolated from Live: carts, orders, refunds, and
certificates created with X-ENV: TEST never affect Live data and are never
filed. Make sure the merchant’s Test environment is configured before you use it.
Operations
Calculate tax for a cart of items before you record an order.
Create orders from a cart or directly, then retrieve and update them.
Store, retrieve, list, and delete customer exemption certificates.
Refund all or part of a previously recorded order.
The full set of endpoints:
Responses and errors
A successful call returns the requested resource as JSON (a cart calculation, an order, a certificate, or a refund).
Errors come in two shapes:
Ziptax-level errors are returned before the operation runs, when the request can’t be authorized or routed to a valid merchant. They use a simple envelope:
Operation-level errors are returned when the request reaches the compliance service but fails validation or processing. They carry more structured detail:
Usage and rate limits
Merchant Transactions are metered separately from your tax-lookup (rate
request) usage. Each transaction call counts as one merchant request against
your plan’s merchant allowance, and every call is subject to per-key rate
limiting. Exceeding your rate returns 429 with response code 108, the same
as the rest of the API. See Rate Limiting & Errors
for backoff guidance.
Only requests that reach the compliance service are metered. Requests rejected up front (bad key, unknown merchant, missing credentials, malformed body, rate limit) do not count against your merchant usage.
Retries and idempotency
Read operations are safe to retry. Write operations are not retried automatically, and you should not blindly retry them either: a retried create can produce a duplicate order, certificate, or refund.
If a write call times out (504) or the service is briefly unavailable
(502), don’t immediately retry. First confirm whether the operation
succeeded, for example by fetching the order with
order/get, then retry only if it did not.