Six calls to run a transaction.
Nineteen SDK calls in total, more than 140 REST endpoints, and a sandbox that behaves like production. Documentation is written for the engineer doing the integration, not for the person approving it.
Four doc sets
Instant Payments API
SEPA, FedNow and bank transfer: initiate, track and reconcile. Signed webhooks on every state change.
Learn more →Card Payments API
Visa, Mastercard and AMEX with 3DS, tokenisation and stored credentials.
Learn more →Merchant API
Customers, transactions and integrations for anything built on top of a merchant account.
Learn more →TaxaFi API
Sales tax as a service: resolve the jurisdiction, calculate what is due, derive the period return and assemble the filing payload.
Learn more →Ask what tax is due. Get an answer with its work shown.
A scoped tx_ key in a header, the consumer address in the body, and a response that names the jurisdictions it resolved and the rate applied at each level. Money is expressed in dollars to two decimals; rates come back as decimals.
// What tax is due, at this address, on this category. const res = await fetch("https://maxafi.com/taxafi/v1/calculate", { method: "POST", headers: { "X-Api-Key": "tx_...", "X-Idempotency-Key": "txn_88231", "Content-Type": "application/json" }, body: JSON.stringify({ amount: 100.00, // decimal dollars category_code: "GEN", ship_to: { // the CONSUMER address, not the merchant street: "1100 Congress Ave", city: "Austin", state: "TX", zip: "78701" } }) }); // response { "combined_rate": 0.0825, "tax_total": 8.25, "total": 108.25, "resolution": { "confidence": "zip", "resolver": "zip5" }, "breakdown": [ { "name": "Texas", "level": "state", "rate": 0.0625, "tax": 6.25 }, { "name": "Austin", "level": "city", "rate": 0.02, "tax": 2.00 } ], "data_verified": true }
Filing is four calls
calculate
Price each sale. Send the amount, the category and the consumer ship-to address. Returns the combined rate, the per-jurisdiction breakdown and the tax, recorded immutably.
filing_form
Find the return. Send the merchant address or state. Returns which form applies for that registration and frequency, its channel, and its field list.
prepare_return
Prepare the figures. Send state and period. Returns period totals, a per-category breakdown and a per-jurisdiction rollup, keyed to match form fields.
assemble_filing
Build the filing. Returns the ready-to-submit payload and a name-to-value field map, with figures auto-derived from the recorded calculations when you do not supply them.
Working out what is owed
calculate
The core call. Amount, category and consumer address in; combined rate, per-jurisdiction breakdown, tax and a resolution confidence out. Recorded immutably.
rates
A rate lookup without a dollar amount: the resolved jurisdiction stack and the rate at each level.
jurisdictions
Resolve the stack for an address, or list every active jurisdiction in a state from state down to special district.
categories
The category taxonomy, with default taxability on each code.
classify
Maps free text to a category code using AI. Advisory only, meant for review rather than unattended filing.
health
Unauthenticated liveness and engine version, so monitoring does not need a key.
Turning that into a return
obligations
The merchant filing calendar: every registration with its closed and in-progress period, form, due date and status, sorted by what is due next.
due_date
The due date for one return, with the rule that produced it and whether it came from a per-state rule or the national default.
prepare_return
Rolls recorded calculations into period figures: totals, per-category and per-jurisdiction, keyed to form fields.
filing_form
Which form the merchant files, its channel and its full field list, chosen from frequency, filer variant and Streamlined status.
assemble_filing
The submittable payload plus a name-to-value field map. A positional line for CSV states, a field map for the rest.
assemble_pdf
Applies the field map to the state blank PDF, filling real form fields or drawing at spec coordinates on flat forms.
assemble_ser
Builds the Streamlined Simplified Electronic Return XML. One call covers the Streamlined member states.
ingest
Lands externally computed figures straight into the tax ledger as signed entries.
ledger
Net position per authority and period: collected, expensed, adjusted and due.
It tells you when not to trust it
Every calculation carries a resolution confidence, from ZIP+4 down to state-only, and a data_verified flag that goes false when any applied rate is still unverified sample data. A tax engine that quietly returns a plausible number is worse than one that says it is unsure, so ours says.
Built for someone else to file
The API was designed so a partner can own the submission while TaxaFi owns the computation, the rates and the form definitions. You send the figures and the addresses; you get back the resolved form and the assembled payload. Nobody on your side touches a PDF or a line number.
What an integration looks like
Authentication is a key in a header, money is expressed in minor units, and every response carries a request identifier you can quote back to support.
// Take a payment. Six calls, this is the middle one. const res = await fetch("https://api.dapit.com/v1/payments", { method: "POST", headers: { "X-Api-Key": key, "X-Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json" }, body: JSON.stringify({ amount: 4250, // minor units currency: "USD", capture: true, reference: "job-10482" }) }); const { success, payment, meta } = await res.json(); // meta.request_id is what support will ask you for
How the APIs behave
Authentication
A scoped API key per merchant in a header. Keys carry scopes; an empty scope set means unrestricted.
Idempotency
Send an idempotency key on anything that moves money. Retries are safe by design.
Envelopes
A consistent response envelope with a success flag, the payload and metadata including response time and API version.
Webhooks
Signed callbacks with replay handling, so a missed delivery is recoverable rather than lost.
Versioning
Versioned endpoints; breaking changes get a new version rather than a surprise.
Sandbox
A sandbox with the same envelope, the same errors and the same webhooks as production.
Nineteen calls, three platforms
The device SDK ships as installable dynamic libraries for Android, Windows and Linux, compatible with Visual Studio and MinGW64, with React, Flutter, Xamarin, Unity and Android Studio supported.
Building something specific?
Integration questions reach the people who wrote the endpoint.