Walkthrough
How a W-9 works under the hood: the four-step exchange between your app and Taxbit.
Whether your app runs on the web, iOS or Android, it has the same four-step exchange with Taxbit. This walkthrough follows one W-9 through that exchange.
How it works, not how to install it. There's no way to access the Logic API yet, and how it will be delivered to each platform hasn't been decided. This page shows the exchange behind the prototype, which is what any future integration would be built on.
The four steps
1. Your app asks Taxbit for the form
Your app sends what it knows about the person. At the start, that can be as little as which form to collect and the user's language. This example asks for a W-9 directly. With W-FORM, Taxbit would first ask whether the person is a US person, then continue the same way.
Your app sends:
{
"questionnaire": "W-9",
"locale": "en-US"
}Taxbit replies with the questions to show right now, already worded and translated:
Taxbit replies (shortened):
{
"complete": false,
"fields": [
{ "key": "account_holder.us_account_type", "ui_type": "radio",
"text": { "label": "How is this account taxed?" },
"options": [ /* Individual, LLC, C corporation, … */ ],
"on_change": ["shape"] }
]
}2. Your app shows the questions
Each field says what kind of control it needs (radio, select, text, checkbox, date) and what it says. Your app draws those controls in its own design. It never decides which questions exist, because Taxbit sends only the ones that apply.
3. Your app sends answers when they matter
Most answers stay in your app until later. A field marked on_change: ["shape"] can change which questions appear, so your app sends the answers right away. Here the user picks Limited liability company:
Your app sends:
{
"questionnaire": "W-9",
"locale": "en-US",
"account_holder": { "us_account_type": "LLC" }
}Taxbit replies with the updated form. It now includes a new question about how the LLC is classified, and the TIN is labeled "Employer Identification Number". Your app replaces what it showed with the new list.
4. Your app submits when Taxbit says it's complete
When every answer is valid and the user has signed, Taxbit's reply includes "complete": true and a finished, signed submission. Your app sends that submission back to be stored, and gets a receipt.
Taxbit's receipt:
{
"document_id": "doc_01J8Z3K9QW",
"document_type": "W-9",
"status": "ACCEPTED"
}A client library would handle this for you. The plan is for Taxbit to provide a small library for each platform that runs these four steps, along with ready-made fields you can restyle or replace. The prototype has one for React and one for iOS. How they'll be packaged and delivered hasn't been decided.
What the user sees
Put together, this is how the W-9 behaves for the person filling it in. None of it is coded by your team, because Taxbit updates the questions based on each answer:
- The first question is how the account is taxed. Choosing Limited liability company adds a question about how the LLC is classified, and the TIN label changes from SSN to EIN.
- The address fits the country. Switching from the US to Canada changes state and ZIP to province and postal code.
- Errors appear at the right moment. A blank required field is only flagged when the user tries to continue. An invalid value, like an 8-digit TIN, is flagged right away.
- Signing comes last. The certification step appears only once everything else is valid.
- Submitting stores the form. The user sees a confirmation, and your app gets the receipt.
Behind the scenes: typing doesn't send anything to Taxbit. Your app only calls Taxbit when an answer could change which questions appear (such as tax classification or country), or when an answer gets a live check (such as the TIN).
Working with us
The Logic API is being built with design partners: teams that need tax collection inside their own product and want to shape how it works. As a design partner, you'd work directly with Taxbit's engineering team, integrate against a development environment before release, and influence names, options and priorities.
To go deeper first, read the integration guide, which covers customization, pre-filling data and authentication in detail.
Updated about 1 hour ago

