> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Business Registration

## Overview

Creates a new business account programmatically via the API. Creates a business account, stores business information, and initiates the KYB (Know Your Business) process. After successful registration, the account will be in `PENDING` status until KYB verification is complete.

## Required scopes

| Property        | Value               |
| --------------- | ------------------- |
| Endpoint        | GraphQL API         |
| Authentication  | OAuth Bearer Token  |
| Required Scopes | `REGISTER_BUSINESS` |

## Prerequisites

Before calling this mutation, use the **getBusinessCategories** query to retrieve valid `businessCategoryId` and `businessSubCategoryId` values.

## Basic mutation structure

```graphql theme={null}
mutation RegisterBusiness($input: RegisterBusinessInput!) {
  registerBusiness(input: $input) {
    accountId
    kybStatus
    success
    error {
      message
      code
    }
  }
}
```

## Parameters

| Parameter                       | Type                     | Required    | Description                                                                                         |
| ------------------------------- | ------------------------ | ----------- | --------------------------------------------------------------------------------------------------- |
| `businessName`                  | `String`                 | Yes         | The legal business name                                                                             |
| `dbaName`                       | `String`                 | No          | The "Doing Business As" name                                                                        |
| `businessStructure`             | `BusinessStructure`      | Yes         | Must be one of: `LLC`, `CORPORATION`, `PARTNERSHIP`, `SOLE_PROPRIETORSHIP`, `COOP`                  |
| `businessLegalAddress`          | `BusinessLegalAddress`   | Yes         | The business legal address object (see below)                                                       |
| `stateOfIncorporation`          | `String`                 | Yes         | The state where the business is incorporated                                                        |
| `taxId`                         | `String`                 | Yes         | Tax ID / EIN Number. Format: `XX-XXXXXXX` (2 digits, hyphen, 7 digits)                              |
| `soleProprietorshipDocumentUrl` | `String`                 | Conditional | Required if `businessStructure` is `SOLE_PROPRIETORSHIP`. Upload via REST endpoint first            |
| `businessCategoryId`            | `UUID`                   | Yes         | Business category ID (from **getBusinessCategories** query)                                         |
| `businessSubCategoryId`         | `UUID`                   | Yes         | Business sub-category ID (from **getBusinessCategories** query)                                     |
| `natureOfBusiness`              | `String`                 | No          | Brief description of the nature of business                                                         |
| `websiteUrl`                    | `String`                 | No          | The business website URL                                                                            |
| `businessAccountUsage`          | `[BusinessAccountUsage]` | Conditional | Array of usage types. Required if `businessAccountUsageOther` is not provided.                      |
| `businessAccountUsageOther`     | `String`                 | Conditional | Required if `businessAccountUsage` is empty or not provided.                                        |
| `owners`                        | `[BusinessOwner]`        | Yes         | List of business owners. At least one owner required. Primary owner must be a registered Fluz user. |

<Note>
  **Address formatting**

  Format `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](/concepts/address-formatting-requirements) for details.
</Note>

### BusinessLegalAddress

| Field                | Type     | Required | Description                                                                                      |
| -------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------ |
| `streetAddressLine1` | `String` | Yes      | Street address line 1                                                                            |
| `streetAddressLine2` | `String` | No       | Street address line 2                                                                            |
| `city`               | `String` | Yes      | City                                                                                             |
| `state`              | `String` | Yes      | State/province                                                                                   |
| `postalCode`         | `String` | Yes      | Postal code                                                                                      |
| `country`            | `String` | Yes      | Country name (ISO 3166). Some countries are restricted for KYB registration, e.g. Russia or Iran |

### BusinessOwner

| Field                 | Type           | Required | Description                                                                                    |
| --------------------- | -------------- | -------- | ---------------------------------------------------------------------------------------------- |
| `firstName`           | `String`       | Yes      | Owner's first name                                                                             |
| `lastName`            | `String`       | Yes      | Owner's last name                                                                              |
| `emailAddress`        | `String`       | Yes      | Owner's email. Ensure you use the email address the user registered with on the Fluz platform. |
| `title`               | `String`       | Yes      | Owner's title in the company                                                                   |
| `ownershipPercentage` | `Int`          | Yes      | Percentage of ownership (0-100). Total ownership across all owners cannot exceed 100           |
| `lastFourSsnDigits`   | `String`       | Yes      | Last 4 digits of SSN                                                                           |
| `dob`                 | `String`       | Yes      | Date of birth in `MM/DD/YYYY` format (e.g., `02/28/1975`)                                      |
| `phoneNumber`         | `String`       | Yes      | Phone number: minimum 10 digits, digits only                                                   |
| `address`             | `OwnerAddress` | Yes      | Owner's address (must be US-based, see `OwnerAddress`)                                         |

### OwnerAddress

| Field                | Type     | Required | Description                                                             |
| -------------------- | -------- | -------- | ----------------------------------------------------------------------- |
| `streetAddressLine1` | `String` | Yes      | Street address line 1                                                   |
| `streetAddressLine2` | `String` | No       | Street address line 2                                                   |
| `city`               | `String` | Yes      | City                                                                    |
| `state`              | `String` | Yes      | Must be a valid US state name (e.g., `California`, `New York`, `Texas`) |
| `postalCode`         | `String` | Yes      | Must be 5 digits for US ZIP code format                                 |

### BusinessStructure (enum)

* `LLC`
* `CORPORATION`
* `PARTNERSHIP`
* `SOLE_PROPRIETORSHIP`
* `COOP`

### BusinessAccountUsage (enum)

* `CORPORATE_GIFTING`
* `CORPORATE_SPENDING_ADMIN`
* `REWARDS_MAXIMIZER`
* `GIFT_CARD_RESELLING`
* `PURCHASE_GOODS_FOR_BUSINESS_USE`
* `ONLINE_SELLER_RETAIL_PURCHASING`

## Response details

| Field       | Type                    | Description                                             |
| ----------- | ----------------------- | ------------------------------------------------------- |
| `accountId` | `UUID`                  | The account ID of the newly created business            |
| `kybStatus` | `String`                | The KYB status of the business (initially `PENDING`)    |
| `success`   | `Boolean`               | Indicates if the registration was successful (on error) |
| `error`     | `RegisterBusinessError` | Error information if registration failed (on error)     |

### RegisterBusinessError

| Field     | Type     | Description                               |
| --------- | -------- | ----------------------------------------- |
| `message` | `String` | Brief informational error message         |
| `code`    | `String` | Predefined code listed in the table below |

## cURL Example

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -d '{
    "query": "mutation RegisterBusiness($input: RegisterBusinessInput!) { registerBusiness(input: $input) { accountId kybStatus success error { message code } } }",
    "variables": {
      "input": {
        "businessName": "Acme Corporation",
        "dbaName": "Acme Co",
        "businessStructure": "LLC",
        "businessLegalAddress": {
          "streetAddressLine1": "123 Main Street",
          "streetAddressLine2": "Suite 100",
          "city": "San Francisco",
          "state": "California",
          "postalCode": "94102",
          "country": "United States"
        },
        "stateOfIncorporation": "California",
        "taxId": "12-3456789",
        "businessCategoryId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "businessSubCategoryId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "natureOfBusiness": "E-commerce retail",
        "websiteUrl": "https://acme.example.com",
        "businessAccountUsage": ["CORPORATE_SPENDING_ADMIN", "PURCHASE_GOODS_FOR_BUSINESS_USE"],
        "owners": [
          {
            "firstName": "John",
            "lastName": "Doe",
            "emailAddress": "john@example.com",
            "title": "CEO",
            "ownershipPercentage": 60,
            "lastFourSsnDigits": "1234",
            "dob": "02/28/1975",
            "phoneNumber": "4155551234",
            "address": {
              "streetAddressLine1": "456 Oak Avenue",
              "city": "San Francisco",
              "state": "California",
              "postalCode": "94103"
            }
          },
          {
            "firstName": "Jane",
            "lastName": "Smith",
            "emailAddress": "jane@example.com",
            "title": "CFO",
            "ownershipPercentage": 40,
            "lastFourSsnDigits": "5678",
            "dob": "07/15/1980",
            "phoneNumber": "4155555678",
            "address": {
              "streetAddressLine1": "789 Pine Street",
              "city": "San Francisco",
              "state": "California",
              "postalCode": "94104"
            }
          }
        ]
      }
    }
  }'
```

## Example Response

### Success

```json theme={null}
{
  "data": {
    "registerBusiness": {
      "accountId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "kybStatus": "PENDING"
    }
  }
}
```

### Error

```json theme={null}
{
  "data": {
    "registerBusiness": {
      "success": false,
      "error": {
        "message": "The entered tax id taxId must be in format XX-XXXXXXX (2 digits, hyphen, 7 digits)",
        "code": "BS-0001"
      }
    }
  }
}
```

## Error Codes

| Code      | Name                        | Description                                                                                                                                                                                                             |
| --------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BS-0001` | InvalidTaxId                | The tax ID must be in format `XX-XXXXXXX` (2 digits, hyphen, 7 digits)                                                                                                                                                  |
| `BS-0002` | InvalidBusinessLegalAddress | Business legal address is incorrect                                                                                                                                                                                     |
| `BS-0003` | InvalidOwnerInformation     | One or more owner information is incorrect                                                                                                                                                                              |
| `BS-0004` | InvalidBusinessAccountUsage | Selected business account usage is not allowed                                                                                                                                                                          |
| `BS-0005` | InvalidBusinessStructure    | Selected business structure is not allowed                                                                                                                                                                              |
| `BS-0006` | InvalidBusinessCategory     | Ensure that business category and business subcategory are valid and properly connected (you subcategories from different categories cannot be combined; for example, Art cannot be selected with Pharmacy subcategory) |
| `BS-0007` | RegistrationNotAllowed      | Wait until the last business finishes registration before starting a new one                                                                                                                                            |
| `AR-0001` | MissingArguments            | Required argument is missing (see error message for details)                                                                                                                                                            |
| `AR-0002` | InvalidArguments            | Invalid argument provided (see error message for details)                                                                                                                                                               |
| `AU-0001` | UnsuccessfulRegistration    | General registration failure                                                                                                                                                                                            |

***

## Notes

* If `businessStructure` is `SOLE_PROPRIETORSHIP`, upload the document via the REST endpoint `POST https://transactional-graph.staging.fluzapp.com/api/v1/file-upload/sole-proprietorship-document` (using `form-data` content type). Then, supply the generated URL in `soleProprietorshipDocumentUrl`
* 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.

<br />
