{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/moov/main/json-schema/moov-onboarding-invite-schema.json", "title": "OnboardingInvite", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/moov-openapi.yml#/components/schemas/OnboardingInvite", "type": "object", "required": [ "code", "link", "scopes", "capabilities", "feePlanCodes", "createdOn" ], "properties": { "code": { "$ref": "#/$defs/OnboardingInviteCode" }, "link": { "type": "string", "format": "uri", "description": "A unique URL, including the invite code, that the recipient can follow to redeem the invitation." }, "returnURL": { "type": "string", "description": "Optional URL to redirect the user to after they complete the onboarding process." }, "termsOfServiceURL": { "type": "string", "description": "The terms of service URL set by the inviter." }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ApplicationScope" }, "minItems": 1, "description": "List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this\naccount. These values are used to determine what can be done with the account onboarded." }, "grantScopes": { "type": "array", "items": { "$ref": "#/$defs/ApplicationScope" }, "minItems": 0, "description": " List of [scopes](https://docs.moov.io/api/authentication/scopes/) you grant to allow being used \n by the new account on yourself. These values are used to determine what the account onboarded can do." }, "capabilities": { "type": "array", "items": { "$ref": "#/$defs/CapabilityID" }, "minItems": 1, "description": " List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this\n account. These values are used to determine what information to collect from the user during onboarding." }, "feePlanCodes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "List of fee plan codes to assign the account created by the invitee." }, "redeemedAccountID": { "type": "string", "description": "The account ID of the account that redeemed the invite." }, "prefill": { "$ref": "#/$defs/CreateAccount" }, "partner": { "$ref": "#/$defs/OnboardingPartnerAccount" }, "createdOn": { "type": "string", "format": "date-time" }, "revokedOn": { "type": "string", "format": "date-time" }, "redeemedOn": { "type": "string", "format": "date-time" } }, "$defs": { "ACHPaymentSettings": { "type": "object", "required": [ "companyName" ], "properties": { "companyName": { "type": "string", "minLength": 1, "maxLength": 16, "pattern": "[a-zA-Z0-9- ]+", "description": "The description that shows up on ACH transactions. This will default to the account's display name on account creation." } } }, "Address": { "type": "object", "required": [ "addressLine1", "city", "stateOrProvince", "postalCode", "country" ], "properties": { "addressLine1": { "type": "string", "maxLength": 60, "pattern": "[a-zA-Z0-9,.\\/?:'\"|~!@#$%^&*()+_= -]+" }, "addressLine2": { "type": "string", "maxLength": 32, "pattern": "[a-zA-Z0-9,.\\/?:'\"|~!@#$%^&*()+_= -]+" }, "city": { "type": "string", "maxLength": 32, "pattern": "[a-zA-Z0-9,.\\/?:'\"|~!@#$%^&*()+_= -]+" }, "stateOrProvince": { "type": "string", "maxLength": 2 }, "postalCode": { "type": "string", "maxLength": 5 }, "country": { "type": "string", "maxLength": 2 } } }, "ApplicationScope": { "type": "string", "enum": [ "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.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", "transfers.read", "transfers.write", "wallets.read" ], "description": "A permission that the application requests on another account." }, "BirthDate": { "type": "object", "required": [ "day", "month", "year" ], "properties": { "day": { "type": "integer" }, "month": { "type": "integer" }, "year": { "type": "integer" } } }, "BusinessType": { "type": "string", "enum": [ "soleProprietorship", "unincorporatedAssociation", "trust", "publicCorporation", "privateCorporation", "llc", "partnership", "unincorporatedNonProfit", "incorporatedNonProfit", "governmentEntity" ], "description": "The type of entity represented by this business." }, "CapabilityID": { "type": "string", "enum": [ "transfers", "send-funds", "send-funds.push-to-card", "money-transfer.push-to-card", "send-funds.ach", "send-funds.rtp", "send-funds.instant-bank", "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" ], "description": "Moov account capabilities.\n\n**Deprecated capabilities**\n\nThe `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.\n\nRead our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.\n\nThe `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action." }, "CardPaymentSettings": { "type": "object", "properties": { "statementDescriptor": { "type": "string", "minLength": 4, "maxLength": 22, "pattern": "[a-zA-Z0-9.!*-+_ ]+", "description": "The description that shows up on credit card transactions. This will default to the accounts display name on account creation." } }, "description": "User provided settings to manage card payments. This data is only allowed on a business account." }, "CreateAccount": { "type": "object", "required": [ "accountType", "profile" ], "properties": { "accountType": { "$ref": "#/$defs/CreateAccountType" }, "profile": { "$ref": "#/$defs/CreateProfile" }, "metadata": { "$ref": "#/$defs/Metadata" }, "termsOfService": { "$ref": "#/$defs/TermsOfServicePayload" }, "foreignID": { "type": "string", "maxLength": 64, "pattern": "[a-zA-Z0-9,.\\/?:'\"|~!@#$%^&*()+_= -]+", "description": "Optional alias from a foreign/external system which can be used to reference this resource." }, "customerSupport": { "$ref": "#/$defs/CustomerSupport" }, "settings": { "$ref": "#/$defs/Settings" }, "capabilities": { "type": "array", "items": { "$ref": "#/$defs/CapabilityID" }, "description": "Capabilities to request when the account is created. Request granular capability IDs that match your use case.\n\nRead our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.\n\nThe `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." }, "mode": { "$ref": "#/$defs/Mode" } } }, "CreateAccountType": { "type": "string", "enum": [ "individual", "business" ] }, "CreateBusinessProfile": { "type": "object", "required": [ "legalBusinessName" ], "properties": { "legalBusinessName": { "type": "string", "maxLength": 64, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!+:/-]*", "description": "The legal name under which the entity is registered." }, "doingBusinessAs": { "type": "string", "maxLength": 64, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!+:/-]*", "description": "A registered trade name under which the business operates, if different from its legal name." }, "businessType": { "$ref": "#/$defs/BusinessType" }, "address": { "$ref": "#/$defs/Address" }, "phone": { "$ref": "#/$defs/PhoneNumber" }, "email": { "$ref": "#/$defs/Email" }, "website": { "type": "string", "format": "uri", "maxLength": 100 }, "description": { "type": "string", "minLength": 10, "maxLength": 100, "pattern": "[a-zA-Z0-9,.\\/?:'\"|~!@#$%^&*()+_= -]+" }, "taxID": { "$ref": "#/$defs/TaxID" }, "industryCodes": { "$ref": "#/$defs/IndustryCodes" }, "industry": { "type": "string", "description": "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." }, "primaryRegulator": { "$ref": "#/$defs/PrimaryRegulator" } } }, "CreateIndividualProfile": { "type": "object", "required": [ "name" ], "properties": { "name": { "$ref": "#/$defs/IndividualName" }, "phone": { "$ref": "#/$defs/PhoneNumber" }, "email": { "$ref": "#/$defs/Email" }, "address": { "$ref": "#/$defs/Address" }, "birthDate": { "$ref": "#/$defs/BirthDate" }, "governmentID": { "$ref": "#/$defs/GovernmentID" } } }, "CreateProfile": { "type": "object", "properties": { "individual": { "$ref": "#/$defs/CreateIndividualProfile" }, "business": { "$ref": "#/$defs/CreateBusinessProfile" } } }, "CustomerSupport": { "type": "object", "properties": { "phone": { "$ref": "#/$defs/PhoneNumber" }, "email": { "$ref": "#/$defs/Email" }, "address": { "$ref": "#/$defs/Address" }, "website": { "type": "string", "format": "uri" } }, "description": "User-provided information that can be displayed on credit card transactions for customers to use when\ncontacting a customer support team. This data is only allowed on a business account." }, "Email": { "type": "string", "maxLength": 255, "format": "email" }, "GovernmentID": { "type": "object", "properties": { "ssn": { "type": "object", "properties": { "full": { "type": "string", "pattern": "^\\d{3}[-]?\\d{2}[-]?\\d{4}$" }, "lastFour": { "type": "string" } } }, "itin": { "type": "object", "properties": { "full": { "type": "string", "pattern": "^\\d{3}[-]?\\d{2}[-]?\\d{4}$" }, "lastFour": { "type": "string" } } } } }, "IndividualName": { "type": "object", "required": [ "firstName", "lastName" ], "properties": { "firstName": { "type": "string", "maxLength": 64, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!-]*", "description": "The individual's first given name." }, "middleName": { "type": "string", "maxLength": 64, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!-]*", "description": "The individual's second given name, if any." }, "lastName": { "type": "string", "maxLength": 64, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!-]*", "description": "The individual's family name." }, "suffix": { "type": "string", "maxLength": 20, "pattern": "[À-ÖØ-öø-ÿ\"'(),.0-9A-Za-z~ &!-]*", "description": "Suffix of a given name." } } }, "IndustryCodes": { "type": "object", "properties": { "naics": { "type": "string", "minLength": 2, "maxLength": 6 }, "sic": { "type": "string", "minLength": 4, "maxLength": 4 }, "mcc": { "type": "string", "minLength": 4, "maxLength": 4 } } }, "ManualTermsOfService": { "type": "object", "required": [ "acceptedDate", "acceptedIP", "acceptedUserAgent", "acceptedDomain" ], "properties": { "acceptedDate": { "type": "string", "format": "date-time", "description": "The date and time the terms of service were accepted." }, "acceptedIP": { "type": "string", "description": "The IP address (IPv4 or IPv6) from which the terms of service were accepted." }, "acceptedUserAgent": { "type": "string", "maxLength": 255, "description": "The user-agent of the user making the request." }, "acceptedDomain": { "type": "string", "format": "uri" } }, "description": "Describes the acceptance of the Terms of Service. All data is required, and must be from the user.", "title": "Manual" }, "Metadata": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Free-form key-value pair list. Useful for storing information that is not captured elsewhere." }, "Mode": { "type": "string", "enum": [ "sandbox", "production" ], "description": "The operating mode for an account." }, "OnboardingInviteCode": { "type": "string", "description": "A unique code that identifies an onboarding invite." }, "OnboardingPartnerAccount": { "type": "object", "required": [ "accountID", "accountMode", "displayName" ], "properties": { "accountID": { "type": "string", "description": "The account ID of the partner that created the invite." }, "accountMode": { "$ref": "#/$defs/Mode" }, "displayName": { "type": "string", "description": "The name of the Moov account used to create the onboarding invite." } }, "description": "The account that created the onboarding invite." }, "PhoneNumber": { "type": "object", "properties": { "number": { "type": "string", "maxLength": 10 }, "countryCode": { "type": "string", "maxLength": 1 } } }, "PrimaryRegulator": { "type": "string", "enum": [ "OCC", "FDIC", "NCUA", "FRB", "state-cu-regulator" ], "description": "If the business is a financial institution, this field describes its primary regulator." }, "Settings": { "type": "object", "properties": { "cardPayment": { "$ref": "#/$defs/CardPaymentSettings" }, "achPayment": { "$ref": "#/$defs/ACHPaymentSettings" } }, "description": "User provided settings to manage an account." }, "TaxID": { "type": "object", "required": [ "ein" ], "properties": { "ein": { "type": "object", "properties": { "number": { "type": "string" } }, "required": [ "number" ] } }, "description": "An EIN (employer identification number) for the business. For sole proprietors, an SSN can be used as the EIN." }, "TermsOfServicePayload": { "type": "object", "properties": { "token": { "type": "string" }, "manual": { "$ref": "#/$defs/ManualTermsOfService" } } } } }