Before you start
- Sign in as a company admin with permission to update onboarding. Use
fluid loginwith your own account to submit from the CLI: submitting accepts Fluid’s payments terms in your name, so it needs a person’s sign-in. With a company API token you can fill in everything, and a person submits from the admin’s onboarding form. - Seeing processor progress after you submit also needs permission to view payment accounts.
- Have these documents ready as PDF or image files, up to 10 MB each:
- business registration certificate, business license, and articles of incorporation
- IRS form W-9, for a US entity
- the last three months of bank statements, and a bank letter or voided check
- a government ID for each person: a passport photo page, or both sides of a driver’s license or national ID
- proof of residence for each person
- balance sheets, income statements, and cash flow statements (or P&L) for the last two years
- Install and sign in to the CLI:
fluid payments onboarding command prints JSON. Failures print a JSON error on stderr and exit with a non-zero code. Tax IDs, account and routing numbers, ID numbers, and dates of birth are masked in every output, and uploaded documents are listed by name, never by link.
Steps
1
See what's missing
show prints the form’s status, each step with a complete flag, and a missing list of every required field that’s still empty. Each entry names the field, explains why it’s needed, and gives a fix: the exact set flags that fill it in, such as --entity 41 --set entity.website=<value>. Add --step underwriting to list one step’s gaps. fluid payments onboarding fields prints the full field schema, with types, choices, and when each field is required.2
Answer the basics
Every Answer
set changes your company’s live onboarding form, so the CLI asks for confirmation unless you pass --yes.info.user_is_owner only when info.beneficial_individual_owner is true. Set underwriting.company_is_mlm to true for a direct-sales company. That turns on the compensation-plan and member questions in the underwriting step.3
Add the legal entity
The first entity you add becomes the primary entity, which is the business that holds the merchant account.Take
entity.classification and entity.primary_mcc from the two options lists. If the business operates through more than one entity, add each extra one with --entity new, and change one later with --entity <id>. The ids are under records.entities in show.4
Add the bank account
The first bank account goes to the primary entity and becomes the primary account.A US account needs
bank.routing_number, and an account elsewhere needs bank.swift_bic. Add another account with --bank new --set bank.entity_id=<entity id>.5
Add yourself and the other key people
The first person you add is the onboarding contact: you, the person filling in the form.Then add everyone else who owns 25% or more, manages the business, or signs for it, using Each person needs the same fields as you. A driver’s license or national ID needs both sides.
--owner new:6
Add the countries you sell in
country.<ISO>.entity_id to route it to another entity. fluid payments onboarding options countries lists the codes. Remove a country with fluid payments onboarding remove country CA --yes.7
Answer the underwriting questions
These questions describe how the business runs. Payment processors use the answers to decide whether to accept you.Policies and agreements take either a URL (
--set <key>.link=<url>) or a file (--file <key>=<path>). The Field reference below lists every question.8
Fill in what's left
Every
set prints the missing list again. Run each entry’s fix with real values until readyToSubmit is true:9
Accept the terms and submit
Submitting accepts Fluid’s payments terms & conditions for your company and sends the form for review. It changes live data, so it needs
--yes, and it needs --accept-terms to show you’ve read the terms. Run it without --accept-terms to get the terms link.submit refuses while any required field is missing and prints the list instead. Once it succeeds, status is submitted.With a company API token, submit changes nothing and returns status: "ready_to_submit" with a submitUrl. Open that link, the onboarding form at admin.fluid.app/settings/onboarding, as a person and submit there; everything you filled in is already on the form.10
Track the review
providers lists each payment processor with its onboardingStatus. Fluid’s team moves each one forward as the processor reviews your application, which can take days or weeks. Check back occasionally, and answer any request from Fluid’s team by email.What the status means
status is where the form stands:
After you submit, each entry in
providers has an onboardingStatus:
Field reference
Keys go to--set (or --file for documents). entity.* fields go to the primary entity unless you pass --entity <id|new>. Likewise, bank.* fields go to the primary account (--bank), and owner.* fields go to you, the onboarding contact (--owner). Run fluid payments onboarding fields for the full schema.
The basics
Legal entity
Bank account
People
Countries
Underwriting
Troubleshooting
Pass --yes to confirm. The command changes live data and wasn’t run in an interactive terminal. Re-run it with--yesonce you’ve confirmed the change.Creating an entity needs entity.legal_nameorAdding a person needs owner.full_name. A new record needs its name in the sameset.Add the legal entity first. Bank accounts, people, and countries attach to an entity. Add the entity, then retry.Uploading a government ID needs --id-type. Pass--id-type passport,license, ornational_idwith the ID files.- A document is over 10 MB. Compress or split it. A multi-file document such as bank statements takes one
--fileper file. Pass--replace-filesto replace the files already uploaded. Someone else changed the onboarding form since it was read. Someone saved the form in the admin while your command ran. Run the command again.submitlists missing fields. Run each entry’sfix, then submit again.submitreturnsready_to_submitwith asubmitUrl. You’re using a company API token. OpensubmitUrland submit as a person, or runfluid loginwith your own account and submit again.providersisnullafter you submit. Your account can’t view payment accounts. Ask a company admin who can, or check Payments in the admin.
Use the API directly
The onboarding form itself, meaning its answers, legal entities, bank accounts, people, and document uploads, has no published API reference yet. Use the CLI for those steps. The lookups and the status check are company operations, all authenticated with a Bearer token:- List business types —
GET /api/business_types, the choices forentity.classification. - List MCC codes —
GET /api/mcc_codes, the choices forentity.primary_mcc. - List countries —
GET /api/countries. - List supported currencies —
GET /api/currencies. - Get a company’s payments status —
GET /api/companies/{id}/payments_status.onboarding.form_submittedistrueonce the form is submitted. Each processor underproviders.pspsandproviders.apmscarries itsonboarding_status.