Open an Account
Create a customer account, submit required agreement details, and track account activation status.
Creating an account allows a customer to hold and transact funds on the platform. Accounts can be Deposit Accounts (customer-owned) or FBO Accounts (platform-controlled).
Before You Begin
Before opening an account, make sure you have:
- Created the customer using the Customer API.
- Stored the customer
idorexternalId. You must pass one of these identifiers in the account creation request. - Collected the required customer information for KYC/CIP checks.
- Collected the applicable account agreement and acceptance details, if the account is customer-owned.
- Confirmed the account
purposevalues configured for your program.
For account status definitions and lifecycle behavior, see Account Lifecycle.
Creating an Account
Opening an Account involves sending the following details to our API:
Step 1: Make a POST request to /v1/customer/id/{id}/account or /v1/customer/externalId/{external-id}/account API endpoint with the following recommended parameters.
Parameter | Required | Description |
|---|---|---|
| ✓ | Specify the type of account to be created. Allowed value:
|
| ✓ | Indicates the ownership model of the account. Allowed values:
|
| Assign a nick name to the account to easily recognise it | |
| Sets one of the customer’s accounts as the primary account. By default, the customer’s first account is set as primary. The customer can later change their primary account using this setting. Possible values: | |
| Provide an external reference ID to identify the account within your system. Once assigned, the | |
| Defines the intended purpose of the account. Examples:
Purpose values are configured during program setup. If you pass a value that is not configured for your program, the request may be rejected with a validation error. Contact the Account Management team to confirm the purpose values enabled for your program. | |
| Conditional | Required when |
| Conditional | Required when
|
| Conditional | Required when
|
| Recommended | Use
For |
| Recommended | If |
| Recommended | IP Address of the device accepting the agreement. |
| Recommended | Date on which the agreement is accepted. |
| Recommended |
|
Step 2: After submitting the account creation request, the system checks that all required customer information is present. This ensures that the account can be legally opened and activated for transactions. If any validation fails, the request is rejected immediately, and an error response is returned. You must correct the issue and resubmit the request. For a complete list of validation errors and how to resolve them, refer to the HTTP Response Codes.
When isCustomerOwned is set to true, certain customer-level details must be available. If any required information is missing, the account creation request will throw error.
Customer level Validation
For Individual: firstName,lastName, ssn, dob, mailingAddress with isPrimary = true, mobilePhone, email details
For Business:legalName, ein, stateOfIncorporation,dateOfIncorporation,doingBusinessAs,phone,email,businessCategory,beneficialOwner details (based on validations defined in the Customer entity)
Use the POST request to /v1/customer/id/{id} or /v1/customer/externalId/{external-id} to update customer information.
Once the request is submitted, the system verifies all account-level requirements. This includes KYC/CIP checks, linked document verification, and compliance reviews.
- If all system-level validations pass, our system processes the request and returns a response indicating the outcome.
- For every account, it is critical to store the unique account
idwhich can be used later, for retrieving or updating the account details. You can either use system generated accountid(shared in response header of your request) or your system assignedexternalIdpassed as part of account create request.
In certain cases, account activation may require manual verification and can take additional time. While the review is in progress, the account may remain in PENDING status with status reasons as PENDING_VERIFICATION. Please note that the account is ready to transact until its status is ACTIVE.
Step 3: You can learn the outcome of the request via GET /v1/customer/id/{id}/account API endpoint. You can also subscribe to "account.create" webhook event to track account creation and status changes.
For account status definitions and lifecycle behavior, see Account Lifecycle.
Compliance Mandates
To open a customer-owned Deposit Account, the account owner must accept the Passport Account Agreement before the account can be used for transactions.
Identity & Compliance Verification: Customers must complete required KYC (Know Your Customer) and CIP (Customer Identification Program) checks before the account can become active. These checks may include:
- OFAC screening
- CIP verification
- Review of customer information
- Review of linked agreement documents
Sandbox Testing
Use the sandbox environment to test account activation outcomes before going live. Account status updates may be asynchronous, so retrieve the account after the recommended wait time to confirm the final status.
Use the GET /v1/customer/id/{id}/account/id/{accountId} API to check the account status and statusReason.
| Scenario | Customer Test Data | Account Test Data | Expected Result | Wait Time |
|---|---|---|---|---|
| OFAC failure | Business customer: business.legalName = block | Create account for the customer | status: BLOCKED, statusReason: Customer OFAC rejected | ~5 minutes |
| Successful activation | Business customer: business.legalName = William | isCustomerOwned: true | status: ACTIVE, statusReason: VERIFIED | ~30 minutes |
For individual customers:
- To test OFAC failure, create the customer with
firstName = blockandlastName = block. - To test successful activation, use any first and last name except
block.
Sandbox status transitions may take several minutes. Do not assume the account is ready to transact until the retrieved account status is
ACTIVE.
Next Step: Receive Direct Transfers
After an account becomes ACTIVE, you can retrieve its routable account details and share them with external senders to receive ACH credits or Wire credits.
See Direct Transfers Using Routable Account Details to learn when routable details are available, which fields to use for ACH vs Wire, and how incoming transfers are handled as External Transactions.