Skip to main content

Overview

The registerBusiness mutation creates a business account on the Fluz platform. In a single call it:
  1. Creates a business account tied to an existing Fluz user (the primary owner),
  2. Stores the legal entity record — legal name, structure, tax ID, state of incorporation, legal address, category, and intended use of the account,
  3. Stores the beneficial ownership information for each owner you supply, and
  4. Opens a KYB (Know Your Business) case for compliance review.
The mutation returns an accountId immediately, along with a kybStatus of PENDING. Registration succeeding means Fluz accepted and validated your submission — it does not mean the business has been approved. Approval happens asynchronously once the KYB review completes.
Registration is validation, not approval. A success response with kybStatus: PENDING confirms the payload passed field-level validation and a KYB case was opened. Build your integration so it waits for an approved status before attempting to fund the account or issue cards.

What a business account unlocks

Once KYB is approved, the business account can be used for the commercial side of the platform:
  • Business spend accounts and balances
  • Commercial virtual cards, including bulk issuance
  • Authorized users and card-level spend controls
  • Approval workflows for cards, transfers, and reimbursements
  • Business-level transaction reporting and expense annotation

When to use this endpoint

Use registerBusiness when your platform onboards businesses on Fluz rails and you want to collect entity and ownership data in your own UI rather than sending users into a Fluz-hosted flow. If you would rather Fluz host the collection and document upload experience, talk to your account manager about the widget-based onboarding option instead.

Registration flow

End-to-end sequence

Step-by-step

1

Make sure the primary owner is a registered Fluz user

At least one owner in the owners array — the primary owner — must already exist as a Fluz user, and the emailAddress you send for that owner must match the email on their Fluz account exactly. If the person does not have an account yet, create one first with registerUser.Fluz recommends the primary owner complete identity verification (KYC) before or alongside the business submission, since owner identity data is reviewed as part of KYB.
2

Confirm your application holds the REGISTER_BUSINESS scope

Both the app-level grant and the individual user grant must be active. See Application Scopes.
3

Resolve the business category and sub-category

Call getBusinessCategories and let the user pick a category and one of that category’s sub-categories. Do not hardcode these UUIDs — they can change, and a sub-category from a different category will be rejected with BS-0006.
4

Upload a sole proprietorship document, if applicable

Only required when businessStructure is SOLE_PROPRIETORSHIP. Upload the document first, then pass the returned URL in soleProprietorshipDocumentUrl. See Submit business documents.
5

Submit the registerBusiness mutation

Send the full entity record and every owner in one call. Handle the response as described in Response details — errors are returned inside the payload, not as GraphQL errors.
6

Wait for the KYB decision, then provision

The account is created in PENDING. Surface that state to your user rather than implying they are live. Once the status moves to approved, create spend accounts and issue cards.

KYB status lifecycle

Checking status after registration

There is no KYB webhook event today, so your integration should read the status when the user returns to your business onboarding screen, and on a low-frequency background schedule (for example, hourly — not per page load). You can confirm the business account exists and identify it against the user with getAccountsByUserId:
Reviews are typically resolved within one to two business days, but can take longer when additional documentation is requested. If a case appears stalled, contact your account manager with the accountId rather than resubmitting — a second submission will be blocked by BS-0007.

Required scopes

Basic mutation structure

Parameters

Address formattingFormat businessLegalAddress and each owner address using the structured fields below, with a real, deliverable address and a consistent city / state / postal code. The business legal address may be international (country name, ISO 3166; some countries are restricted, e.g. Russia or Iran). Owner addresses must be US-based. A malformed or mismatched address returns BS-0002 (business legal address) or BS-0003 (owner information). See Address Formatting Requirements for details.

BusinessLegalAddress

BusinessOwner

OwnerAddress

BusinessStructure (enum)

Any structure not on this list is rejected with BS-0005. Trusts, non-profits, and other entity types are handled case by case — contact your account manager before building against them.

BusinessAccountUsage (enum)

Send every value that applies. If none fit, omit businessAccountUsage and describe the intended use in businessAccountUsageOther. Selecting a usage type your application is not approved for returns BS-0004.

Beneficial ownership requirements

KYB review depends on getting the ownership picture right the first time. Collect and submit:
  • Every individual who owns 25% or more of the entity, directly or indirectly.
  • A control person — an individual with significant responsibility for managing the entity (CEO, CFO, managing member, general partner, or similar) — even if they hold no equity. Send them with an ownershipPercentage of 0 and an accurate title.
  • At least one owner who is a registered Fluz user, with a matching emailAddress.
Practical notes:
  • Total ownershipPercentage across the array must not exceed 100, but it does not need to equal 100. If a business is 40/35/25 across three individuals plus a non-owner CEO, submit all four with percentages of 40, 35, 25, and 0.
  • Where an entity (rather than a person) holds equity, look through to the individuals behind it and submit those individuals.
  • title is a free-text field, but it is read by a human reviewer. Use recognizable titles (“Chief Executive Officer”, “Managing Member”) rather than internal shorthand.

Validation quick reference

Most BS-000x errors come down to formatting. Check these before submitting:
Date format differs from user registration. registerBusiness expects owner dates of birth as MM/DD/YYYY, while registerUser expects YYYY-MM-DD. Reusing one formatter across both calls is a common source of BS-0003.

Documents

Sole proprietorships must upload supporting documentation before registering, and any structure may be asked for additional documentation during KYB review. Both paths are covered on one page:

Submit business documents

Upload endpoint, accepted sole proprietorship documents, and what to do when compliance requests more information.

Response details

RegisterBusinessError

Failures are returned inside the response payload, not as top-level GraphQL errors. Always branch on the presence of error (or on success === false) rather than relying on the HTTP status or a GraphQL errors array.

cURL Example

Example Response

Success

Error

Error Codes

Testing in staging

  • Register against the staging GraphQL endpoint shown in the examples above. See Staging vs. Live Environment.
  • Use Test Addresses for addresses that pass validation deterministically.
  • EINs in staging must still satisfy the XX-XXXXXXX format, but do not need to correspond to a real entity.
  • Because a user cannot hold two open applications (BS-0007), test repeated registration paths with distinct test users.

Best practices

  • Validate client-side first. Every BS-000x code except BS-0007 is a formatting or selection problem you can catch before the network call. Doing so materially improves onboarding completion rates.
  • Fetch categories at runtime. Never hardcode category UUIDs.
  • Do not auto-retry on a declined KYB. Resubmission will not change the outcome and creates duplicate cases.
  • Store the accountId immediately. It is your only handle on the application and the reference support will ask for.
  • Communicate the pending state honestly. Tell the user their business is under review and roughly how long it takes, rather than dropping them into a business dashboard that cannot yet transact.
  • Collect ownership completely the first time. Missing beneficial owners is the most common cause of a review stalling for additional documentation.

Notes

  • When specifying account usage, either businessAccountUsage or businessAccountUsageOther must be provided.
  • Users cannot register a new business if they already have an ongoing application. They must wait for the current application to be approved or rejected before submitting another one.

Submit business documents

Upload sole proprietorship documents and respond to KYB documentation requests.

Business categories

Fetch the category and sub-category IDs required by this mutation.

Register customers

Create the Fluz user who will act as primary owner.

Address formatting requirements

Rules that govern the legal and owner address objects.