Update onboarding
Saves answers to the onboarding questions, asks Finta to decide, and sets whether Finta
emails the user when their books are ready. Returns the same object as
GET /onboarding.
- Only the answers you send change. Use what you can already reach (chat, local files, connected tools), within the permissions they’ve given you, to prefill sourced answers; name each source and confirm them together. Ask only what’s missing, two or three related questions at a time; save quietly. Never guess without a source; flag conflicts and ask.
- One invalid answer, or an unknown field, rejects the whole request and saves nothing
(
400invalid_request, withparamnaming it). submit: trueasks Finta to decide, which it does only once no required question is unanswered. If any is, the valid answers sent with the request are still saved and the response is400answers_incomplete, with the missing answer keys inmissing.- Finta’s decision is final. Afterwards the eligibility answers can’t change
(
409onboarding_locked); while Finta needs a call, the call follow-ups (incorporation_year,accounting_software,files_taxes_with,goalsandsubsidiary_countries) still can. Sending an answer that matches what’s saved isn’t a change, so repeating a request that already went through, submit included, returns200with the current state and changes nothing. notify_when_synced: trueis the web app’s “Email me when it’s ready”: Finta emails the user who sent it when the first sync finishes, or right away if it already has.falsewithdraws it. It can change until onboarding is complete, once at least one question is answered. Offer it at the import wait step once banks are connected, not during the questionnaire; honor a preference the user brings up at any time.- Once the company is onboarded, every request returns
409onboarding_complete.
Needs Company: Manage and Integrations: Manage. This endpoint is free: it doesn’t count toward the monthly API limit and keeps answering after that limit is reached.
Authorizations
API key prefixed with finta_
Body
Only the answers to save, keyed as in questions. Answers left out keep their saved values. The enums below include accepted values hidden from the question's suggested choices. null clears an optional answer; a required one can't be cleared.
true asks Finta to decide once no required question is unanswered. Send it only after the user explicitly says yes to a recap of every answer in a later turn; stop and wait after the recap. A yes picked in the app's multiple-choice question tool after the recap counts. Earlier confirmations do not count; never recap and submit in the same turn. Repeating it after Finta decided changes nothing.
true to email the user who sends it when the first sync finishes; false to stop that email.
Response
The company's onboarding after the change
onboarding Where the company is in onboarding. questionnaire: required questions are unanswered. ready_to_submit: every required question is answered and Finta hasn't decided yet. call_required: Finta needs a call with the company before it can onboard it. not_eligible: Finta can't onboard the company. connect_banks: approved, and the selected banks and cards are being connected. syncing: Finta is importing transactions and setting up the books, or a completed web-started import awaits finish_in_web. complete: the company is onboarded and every endpoint is available.
questionnaire, ready_to_submit, call_required, not_eligible, connect_banks, syncing, complete The answers saved so far; null (or an empty list) when unanswered. accounting_software, files_taxes_with, goals and subsidiary_countries are asked only when Finta needs a call.
The questions still to ask at this stage, in order: the required ones unanswered, and credit_cards, which is optional, until a card is chosen. Empty once there is nothing to ask. Once an answer means Finta can't onboard the company, later questions aren't asked. Entity and industry questions show short choice lists. Bank and card questions have empty options; gather answers from context or plain text. Accepted values are in OnboardingUpdate.answers and the MCP update_onboarding input enums.
Finta's eligibility decision. null until Finta has decided.
The banks and cards the company selected that onboarding waits on, in this order: Mercury, Brex, Ramp, Rho, SVB, Chase. A bank or card typed in as "other" isn't listed. Follow next_step.message for connecting them: OAuth and Plaid banks, including Chase and SVB, through the API. Plaid reconnects still require the web app.
The first sync's progress while status is syncing; null otherwise.
Whether Finta emails the user when the first sync finishes, as the web app's "Email me when it's ready" sets.
What to do now. See GET /onboarding for what each action means.