# Create onboarding invite

`POST /onboarding-invites`

API version: `v2026.10.00`. Send `X-Moov-Version: v2026.10.00` to get the behavior described here.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

Create an invitation containing a unique link that allows the recipient to onboard their organization with Moov.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) 
you'll need to specify the `/accounts.write` scope.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Moov-Version` | header | string |  | Set this header to v2026.10.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, the earliest supported version, which may not match the behavior documented here. An unrecognized well-formed version uses the latest supported version that is not newer than the requested version, when one exists. For example, `v2026.08.00` uses `v2026.07.00`. A malformed value, such as `2022`, returns a `404` response. Values: `v2026.10.00`. |

## Request body

Content type: `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `returnURL` | string (uri) |  | Optional URL to redirect the user to after they complete the onboarding process. |
| `termsOfServiceURL` | string (uri) |  | Optional URL to your organization's terms of service. |
| `scopes` | array of string | Yes | List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this account. These values are used to determine what can be done with the account onboarded. Values: `accounts.read`, `accounts.write`, `analytics.read`, `apple-pay-merchant.read`, `apple-pay-merchant.write`, `apple-pay.read`, `apple-pay.write`, `bank-accounts.read`, `bank-accounts.write`, `capabilities.read`, `capabilities.write`, `cards.read`, `cards.write`, `documents.read`, `documents.write`, `fed.read`, `files.download`, `files.read`, `files.write`, `issued-cards.read`, `issued-cards.write`, `issued-cards.read-private`, `payment-methods.read`, `ping.read`, `profile-enrichment.read`, `profile.read`, `profile.write`, `profile.disconnect`, `representatives.read`, `representatives.write`, and 3 more. |
| `grantScopes` | array of string |  | List of [scopes](https://docs.moov.io/api/authentication/scopes/) you grant to allow being used by the new account on yourself. These values are used to determine what the account onboarded can do. Values: `accounts.read`, `accounts.write`, `analytics.read`, `apple-pay-merchant.read`, `apple-pay-merchant.write`, `apple-pay.read`, `apple-pay.write`, `bank-accounts.read`, `bank-accounts.write`, `capabilities.read`, `capabilities.write`, `cards.read`, `cards.write`, `documents.read`, `documents.write`, `fed.read`, `files.download`, `files.read`, `files.write`, `issued-cards.read`, `issued-cards.write`, `issued-cards.read-private`, `payment-methods.read`, `ping.read`, `profile-enrichment.read`, `profile.read`, `profile.write`, `profile.disconnect`, `representatives.read`, `representatives.write`, and 3 more. |
| `capabilities` | array of string | Yes | List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this account. These values are used to determine what information to collect from the user during onboarding. Values: `transfers`, `send-funds`, `send-funds.push-to-card`, `money-transfer.push-to-card`, `send-funds.ach`, `send-funds.rtp`, `send-funds.instant-bank`, `send-funds.wire`, `collect-funds`, `collect-funds.card-payments`, `money-transfer.pull-from-card`, `collect-funds.ach`, `wallet`, `wallet.balance`, `card-issuing`, `issuing.cardholder`, `production-app`, `platform.production-app`, `platform.wallet-transfers`, `platform.moov-money`. |
| `feePlanCodes` | array of string | Yes | List of fee plan codes to assign the account created by the invitee. |
| `prefill` | object |  |  |
| `prefill.accountType` | string | Yes | Values: `individual`, `business`. |
| `prefill.profile` | object | Yes |  |
| `prefill.profile.individual` | object |  |  |
| `prefill.profile.individual.name` | object | Yes |  |
| `prefill.profile.individual.name.firstName` | string | Yes | The individual's first given name. |
| `prefill.profile.individual.name.middleName` | string |  | The individual's second given name, if any. |
| `prefill.profile.individual.name.lastName` | string | Yes | The individual's family name. |
| `prefill.profile.individual.name.suffix` | string |  | Suffix of a given name. |
| `prefill.profile.individual.phone` | object |  |  |
| `prefill.profile.individual.phone.number` | string |  |  |
| `prefill.profile.individual.phone.countryCode` | string |  |  |
| `prefill.profile.individual.email` | string (email) |  |  |
| `prefill.profile.individual.address` | object |  |  |
| `prefill.profile.individual.address.addressLine1` | string | Yes |  |
| `prefill.profile.individual.address.addressLine2` | string |  |  |
| `prefill.profile.individual.address.city` | string | Yes |  |
| `prefill.profile.individual.address.stateOrProvince` | string | Yes |  |
| `prefill.profile.individual.address.postalCode` | string | Yes |  |
| `prefill.profile.individual.address.country` | string | Yes |  |
| `prefill.profile.individual.birthDate` | object |  |  |
| `prefill.profile.individual.birthDate.day` | integer | Yes |  |
| `prefill.profile.individual.birthDate.month` | integer | Yes |  |
| `prefill.profile.individual.birthDate.year` | integer | Yes |  |
| `prefill.profile.individual.governmentID` | object |  |  |
| `prefill.profile.individual.governmentID.ssn` | object |  |  |
| `prefill.profile.individual.governmentID.itin` | object |  |  |
| `prefill.profile.business` | object |  |  |
| `prefill.profile.business.legalBusinessName` | string | Yes | The legal name under which the entity is registered. |
| `prefill.profile.business.doingBusinessAs` | string |  | A registered trade name under which the business operates, if different from its legal name. |
| `prefill.profile.business.businessType` | string |  | The type of entity represented by this business. Values: `soleProprietorship`, `unincorporatedAssociation`, `trust`, `publicCorporation`, `privateCorporation`, `llc`, `partnership`, `unincorporatedNonProfit`, `incorporatedNonProfit`, `governmentEntity`. |
| `prefill.profile.business.address` | object |  |  |
| `prefill.profile.business.address.addressLine1` | string | Yes |  |
| `prefill.profile.business.address.addressLine2` | string |  |  |
| `prefill.profile.business.address.city` | string | Yes |  |
| `prefill.profile.business.address.stateOrProvince` | string | Yes |  |
| `prefill.profile.business.address.postalCode` | string | Yes |  |
| `prefill.profile.business.address.country` | string | Yes |  |
| `prefill.profile.business.phone` | object |  |  |
| `prefill.profile.business.phone.number` | string |  |  |
| `prefill.profile.business.phone.countryCode` | string |  |  |
| `prefill.profile.business.email` | string (email) |  |  |
| `prefill.profile.business.website` | string (uri) |  |  |
| `prefill.profile.business.description` | string |  |  |
| `prefill.profile.business.taxID` | object |  | An EIN (employer identification number) for the business. For sole proprietors, an SSN can be used as the EIN. |
| `prefill.profile.business.taxID.ein` | object | Yes |  |
| `prefill.profile.business.industryCodes` | object |  |  |
| `prefill.profile.business.industryCodes.naics` | string |  |  |
| `prefill.profile.business.industryCodes.sic` | string |  |  |
| `prefill.profile.business.industryCodes.mcc` | string |  |  |
| `prefill.profile.business.industry` | string |  | Classification identifier for the industry. Use the [GET industries](https://docs.moov.io/api/enrichment/form-shortening/industries/get/) endpoint to retrieve an array of valid industry details for a merchant, inducing all industry field values. |
| `prefill.profile.business.primaryRegulator` | string |  | If the business is a financial institution, this field describes its primary regulator. Values: `OCC`, `FDIC`, `NCUA`, `FRB`, `state-cu-regulator`. |
| `prefill.metadata` | object |  | Free-form key-value pair list. Useful for storing information that is not captured elsewhere. |
| `prefill.termsOfService` | object |  |  |
| `prefill.termsOfService.token` | string |  |  |
| `prefill.termsOfService.manual` | object |  | Describes the acceptance of the Terms of Service. All data is required, and must be from the user. |
| `prefill.termsOfService.manual.acceptedDate` | string (date-time) | Yes | The date and time the terms of service were accepted. |
| `prefill.termsOfService.manual.acceptedIP` | string | Yes | The IP address (IPv4 or IPv6) from which the terms of service were accepted. |
| `prefill.termsOfService.manual.acceptedUserAgent` | string | Yes | The user-agent of the user making the request. |
| `prefill.termsOfService.manual.acceptedDomain` | string (uri) | Yes |  |
| `prefill.foreignID` | string |  | Optional alias from a foreign/external system which can be used to reference this resource. |
| `prefill.customerSupport` | object |  | User-provided information that can be displayed on credit card transactions for customers to use when contacting a customer support team. This data is only allowed on a business account. |
| `prefill.customerSupport.phone` | object |  |  |
| `prefill.customerSupport.phone.number` | string |  |  |
| `prefill.customerSupport.phone.countryCode` | string |  |  |
| `prefill.customerSupport.email` | string (email) |  |  |
| `prefill.customerSupport.address` | object |  |  |
| `prefill.customerSupport.address.addressLine1` | string | Yes |  |
| `prefill.customerSupport.address.addressLine2` | string |  |  |
| `prefill.customerSupport.address.city` | string | Yes |  |
| `prefill.customerSupport.address.stateOrProvince` | string | Yes |  |
| `prefill.customerSupport.address.postalCode` | string | Yes |  |
| `prefill.customerSupport.address.country` | string | Yes |  |
| `prefill.customerSupport.website` | string (uri) |  |  |
| `prefill.settings` | object |  | User provided settings to manage an account. |
| `prefill.settings.cardPayment` | object |  | User provided settings to manage card payments. This data is only allowed on a business account. |
| `prefill.settings.cardPayment.statementDescriptor` | string |  | The description that shows up on credit card transactions. This will default to the accounts display name on account creation. |
| `prefill.settings.achPayment` | object |  |  |
| `prefill.settings.achPayment.companyName` | string | Yes | The description that shows up on ACH transactions. This will default to the account's display name on account creation. |
| `prefill.capabilities` | array of string |  | Capabilities to request when the account is created. Request granular capability IDs that match your use case. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration. The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead. Values: `transfers`, `send-funds`, `send-funds.push-to-card`, `money-transfer.push-to-card`, `send-funds.ach`, `send-funds.rtp`, `send-funds.instant-bank`, `send-funds.wire`, `collect-funds`, `collect-funds.card-payments`, `money-transfer.pull-from-card`, `collect-funds.ach`, `wallet`, `wallet.balance`, `card-issuing`, `issuing.cardholder`, `production-app`, `platform.production-app`, `platform.wallet-transfers`, `platform.moov-money`. |
| `prefill.mode` | string |  | The operating mode for an account. Values: `sandbox`, `production`. |

## Response 200

The request completed successfully.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | string | Yes | A unique code that identifies an onboarding invite. |
| `link` | string (uri) | Yes | A unique URL, including the invite code, that the recipient can follow to redeem the invitation. |
| `returnURL` | string |  | Optional URL to redirect the user to after they complete the onboarding process. |
| `termsOfServiceURL` | string |  | The terms of service URL set by the inviter. |
| `scopes` | array of string | Yes | List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this account. These values are used to determine what can be done with the account onboarded. Values: `accounts.read`, `accounts.write`, `analytics.read`, `apple-pay-merchant.read`, `apple-pay-merchant.write`, `apple-pay.read`, `apple-pay.write`, `bank-accounts.read`, `bank-accounts.write`, `capabilities.read`, `capabilities.write`, `cards.read`, `cards.write`, `documents.read`, `documents.write`, `fed.read`, `files.download`, `files.read`, `files.write`, `issued-cards.read`, `issued-cards.write`, `issued-cards.read-private`, `payment-methods.read`, `ping.read`, `profile-enrichment.read`, `profile.read`, `profile.write`, `profile.disconnect`, `representatives.read`, `representatives.write`, and 3 more. |
| `grantScopes` | array of string |  | List of [scopes](https://docs.moov.io/api/authentication/scopes/) you grant to allow being used by the new account on yourself. These values are used to determine what the account onboarded can do. Values: `accounts.read`, `accounts.write`, `analytics.read`, `apple-pay-merchant.read`, `apple-pay-merchant.write`, `apple-pay.read`, `apple-pay.write`, `bank-accounts.read`, `bank-accounts.write`, `capabilities.read`, `capabilities.write`, `cards.read`, `cards.write`, `documents.read`, `documents.write`, `fed.read`, `files.download`, `files.read`, `files.write`, `issued-cards.read`, `issued-cards.write`, `issued-cards.read-private`, `payment-methods.read`, `ping.read`, `profile-enrichment.read`, `profile.read`, `profile.write`, `profile.disconnect`, `representatives.read`, `representatives.write`, and 3 more. |
| `capabilities` | array of string | Yes | List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this account. These values are used to determine what information to collect from the user during onboarding. Values: `transfers`, `send-funds`, `send-funds.push-to-card`, `money-transfer.push-to-card`, `send-funds.ach`, `send-funds.rtp`, `send-funds.instant-bank`, `send-funds.wire`, `collect-funds`, `collect-funds.card-payments`, `money-transfer.pull-from-card`, `collect-funds.ach`, `wallet`, `wallet.balance`, `card-issuing`, `issuing.cardholder`, `production-app`, `platform.production-app`, `platform.wallet-transfers`, `platform.moov-money`. |
| `feePlanCodes` | array of string | Yes | List of fee plan codes to assign the account created by the invitee. |
| `redeemedAccountID` | string |  | The account ID of the account that redeemed the invite. |
| `prefill` | object |  |  |
| `prefill.accountType` | string | Yes | Values: `individual`, `business`. |
| `prefill.profile` | object | Yes |  |
| `prefill.metadata` | object |  | Free-form key-value pair list. Useful for storing information that is not captured elsewhere. |
| `prefill.termsOfService` | object |  |  |
| `prefill.foreignID` | string |  | Optional alias from a foreign/external system which can be used to reference this resource. |
| `prefill.customerSupport` | object |  | User-provided information that can be displayed on credit card transactions for customers to use when contacting a customer support team. This data is only allowed on a business account. |
| `prefill.settings` | object |  | User provided settings to manage an account. |
| `prefill.capabilities` | array of string |  | Capabilities to request when the account is created. Request granular capability IDs that match your use case. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration. The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead. Values: `transfers`, `send-funds`, `send-funds.push-to-card`, `money-transfer.push-to-card`, `send-funds.ach`, `send-funds.rtp`, `send-funds.instant-bank`, `send-funds.wire`, `collect-funds`, `collect-funds.card-payments`, `money-transfer.pull-from-card`, `collect-funds.ach`, `wallet`, `wallet.balance`, `card-issuing`, `issuing.cardholder`, `production-app`, `platform.production-app`, `platform.wallet-transfers`, `platform.moov-money`. |
| `prefill.mode` | string |  | The operating mode for an account. Values: `sandbox`, `production`. |
| `partner` | object |  | The account that created the onboarding invite. |
| `partner.accountID` | string | Yes | The account ID of the partner that created the invite. |
| `partner.accountMode` | string | Yes | The operating mode for an account. Values: `sandbox`, `production`. |
| `partner.displayName` | string | Yes | The name of the Moov account used to create the onboarding invite. |
| `createdOn` | string (date-time) | Yes |  |
| `revokedOn` | string (date-time) |  |  |
| `redeemedOn` | string (date-time) |  |  |

## Errors

| Status | Meaning |
| --- | --- |
| 400 | The server could not understand the request due to invalid syntax. |
| 401 | The request contained missing or expired authentication. |
| 403 | The user is not authorized to make the request. |
| 404 | The requested resource was not found. |
| 409 | The request conflicted with the current state of the target resource. |
| 422 | The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields. |
| 429 | Request was refused due to rate limiting. |
| 500 | The request failed due to an unexpected error. |
| 504 | The request failed because a downstream service failed to respond. |

## Examples

### cURL

```bash
curl -X POST "https://api.moov.io/onboarding-invites" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.10.00" \
  -d '{
  "scopes": [
    "accounts.read"
  ],
  "capabilities": [
    "collect-funds.card-payments",
    "send-funds.ach"
  ],
  "feePlanCodes": [
    "merchant-direct"
  ]
}'
```

### Typescript (SDK)

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.onboarding.createInvite({
    scopes: [
      "accounts.read",
    ],
    grantScopes: [
      "transfers.write",
    ],
    capabilities: [
      "transfers",
    ],
    feePlanCodes: [
      "merchant-direct",
    ],
    prefill: {
      accountType: "business",
      profile: {
        business: {
          legalBusinessName: "Whole Body Fitness LLC",
        },
      },
    },
  });

  console.log(result);
}

run();
```

Full reference with SDK examples in every language: https://docs.moov.io/api/v2026.10.00/moov-accounts/onboarding/post/
