Integrating Kintsugi's API
A Kintsugi integration is smaller than it first looks. Four surfaces in your product each make one call, two of them before a sale and two of them at it. This guide is the map: what talks to what, in what order, and why. For request shapes and endpoint details, each section links down to the guide that covers it.
Understanding Your Integration Context
Three questions shape everything that follows.
Core Integration Architecture
Every integration comes down to four touchpoints. Nothing else in your stack needs to know Kintsugi exists.
Customer and Product Records
Customers and products are the same problem twice: a record in your system that Kintsugi needs a copy of, keyed on your own identifier. Learn the pattern once, then read the two differences.
Reference by your own IDs. Transactions and estimates name products with external_product_id and customers with an external_id on the customer object, so a stable identifier on your side is what holds the whole integration together. Full request shapes are in Product and Customer Records.
Exemptions without a customer record. The exemption delta above assumes a buyer you have on file. For a one-off that belongs to no customer, set exempt: true on the line item instead.
For the initial load, create records in batches rather than one at a time, and pause between chunks to stay clear of rate limits. Products never expire, so the catalog can be built well ahead of your first transaction.
Tax Estimation Integration
Tax estimation runs during checkout, where the customer needs an accurate total before they pay. It is usually the most latency-sensitive call in the integration, and the only one that stores nothing.
Estimates are free to repeat. Because nothing is recorded, you can call the endpoint every time the cart or the address changes. Debounce address input, and reuse a result while both are unchanged. Sales Tax Calculations covers the request, the response breakdown, and the zero-tax cases.
Transaction Reporting Integration
Once payment clears, the sale becomes a transaction record. This is the call that changes what you owe.
Reconciling later. The transaction is keyed on your order ID, which is also how you find it again. Syncing Transaction Records covers status transitions and backfill, and Handling Refund Transactions covers credit notes.
Common Integration Patterns
Where you place these four calls depends on what you are building.
- E-commerce: estimate tax during checkout (L2), create the transaction as soon as payment clears (L1). The most common shape.
- SaaS and subscriptions: estimate per billing cycle rather than per page view, and create transactions in a batch after the billing run.
- Marketplaces: calculate per seller, report centrally, and account for marketplace facilitator rules, which decide whether the tax is yours to collect at all. See US Sales Tax for Developers.
Whichever shape fits, the ordering constraint is the same: reference data first, then transactions, then live estimation on top.
Implementation Checklist
- API keys created and authentication working end to end
- Customers synced, with exemption certificates attached where they exist
- Product catalog synced, every item carrying a category and subcategory
- Kintsugi IDs stored against your own records
- Address validation wired in ahead of estimation
- Estimation called at checkout, with retry and graceful degradation
- Transactions created on payment, keyed on your order ID
- Tested against exempt customers, zero-tax states, and multi-jurisdiction addresses
L1 first, then L2. Start with transaction sync: customers, products, and transaction reporting. Once that is stable, add the estimation workflow for real-time checkout totals. See Planning an Integration for the full L1/L2 model.
Next Steps
Endpoint documentation, request formats, and response structures in the API Reference.
Skip the HTTP layer with our SDKs for Python, TypeScript, Java, PHP, and Ruby.