# Applications Use Applications to onboard your [Customers](/guides/customers) onto the Rail Platform and open their first [Account](/guides/accounts). The application process is dynamic in terms of data capture. You can keep modifying the details of the Application, and when the application status flips to `READY_FOR_SUBMISSION`, you can submit. This allows you to build a fluid user experience that is not coupled to the rail data needs. ## Corporate Customer Application For Corporate Customers, you need to supply information on the company, beneficial owners and authorized users. The following information is required when onboarding a corporate customer: - **Company Information** - Name, Address, Articles of Incorporation, Organization Structure - **Digital Asset Information** - Responses to specific questions related to Digital Assets. - **Beneficial Owner(s) Information** - Name, Address, 2 forms of Identification and Proof of Address for Beneficial Owners of the Corporation. Beneficial Owners are defined as individuals that own more than 25% of the Company. - **Officer(s) Information** - Name, Address, 2 forms of Identification and Proof of Address for Officers/ Directors of the Corporation - **Authorized User(s) Information** - Name, Address, 2 forms of Identification and Proof of Address for Authorized User(s) of the service - **Default Account** - The type and currency of the default account that will be opened after KYB/ KYC is complete. Information from documents Some of the information will be in the form of documents, such as Articles of Incorporation, Drivers License. These documents can be submitted using the [`documents` endpoint](/api-docs/openapi/rail-spec#operation/uploadDocument). ### Typical Flow of a Corporate Customer Application | Step | Action | Endpoint Link | Description | | --- | --- | --- | --- | | 1 | Create Application | [`applications`](/api-docs/openapi/rail-spec#operation/createApplication) | Create an application, provide the `customer_id` to designate to the customer record and the details of the account you wish to open. You will get an `application_id` in the response that will be needed in subsequent steps. | | 2 | Add Individuals | [`applications/{application_id}/individual`](/api-docs/openapi/rail-spec#operation/addIndividualToApplication) | Add beneficial owners, corpporate officers and their corresponding KYC info such as `tax_reference_number` and `passport_number` to the corporate application for any beneficial owners or corporate officers. For each individual, you will get an `individual_id` that you will need to update the individual data. | | 3 | Get Document IDs | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | You will need `document_id`s to upload Documents for the Corporation and the Individuals. You can get these by calling the status endpoint. The `application_document_errors` array will contain the corporate `document_id`s. The `individual_document_errors` in the `individual_errors` array contains the `document_id`s for the individuals. | | 4 | Upload Documents | [`documents/{document_id}`](/api-docs/openapi/rail-spec#operation/uploadDocument) | Upload the relevant documents needed for the corproation and individuals using the `document_id`s from Step 3. | | 5 | Check Application Status for missing/incorrect data | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | If the `status` field shows `READY FOR SUBMISSION` then you can skip to step 7. If the `status` field shows `INCOMPLETE`, check the application for missing/incorrect data by calling this endpoint. The `application_validation_errors` array contains the corporate level fields that have errors. The `individual_errors` array contains the `individual_validation_errors` for each individual in the application. | | 6 | Update Application Details | [`applications/{application_id}`](/api-docs/openapi/rail-spec#operation/updateApplication) or [`applications/{application_id}/individual/{individual_id}`](/api-docs/openapi/rail-spec#operation/updateIndividual_1) | Update any missing or incorrect details on the application (and for corporate applications and individuals that were created) and ensure there are no validation errors remaining. Check the application status for details. Go back to Step 5 to see if the Application `status` shows `READY FOR SUBMISSION`. | | 7 | Submit Application | [`applications/{application_id}/submit`](/api-docs/openapi/rail-spec#operation/submitApplication) | Once the application status is ready to submit, submit the application for processing. The application will now enter KYC/KYB validation and approval | | 8 | Check Status | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | Poll the application status endpoint to determine when the application has been closed and the customer and accounts created. if the `status` shows `CHANGES_REQUESTED`, go back to step 6. If the `status` shows `APPROVED` then the Customer is created and a default account is created. If the `status` shows `REJECTED`, please reach out to Rail to find out more about the reasons for the rejection. If the `status` shows `SUBMITTED` or `PROCESSING`, the application is still under review. Check in shortly. | ## Individual Customer Application For Individual Customers, you only need to supply information on the Individual that will be using the service. The following information is required when onboarding an individual customer. - **Individual Information** - Name, Address, 2 forms of Identification and Proof of Address. - **Default Account** - The type and currency of the default account that will be opened after KYB/ KYC is complete. Information from documents Some of the information will be in the form of documents, such as Drivers License, Passport. These documents can be submitted using the [`documents` endpoint](/api-docs/openapi/rail-spec#operation/uploadDocument) ### Typical Flow of a Individual Customer Application | Step | Action | Endpoint Link | Description | | --- | --- | --- | --- | | 1 | Create Application | [`applications`](/api-docs/openapi/rail-spec#operation/createApplication) | Create an application, provide the `customer_id` to designate to the customer record and the details of the account you wish to open. You will get an `application_id` in the response that will be needed in subsequent steps. | | 2 | Get Document IDs | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | You will need `document_id`s to upload Documents for the Individual. You can get these by calling the status endpoint. The `application_document_errors` array will contain the `document_id`s. | | 3 | Upload Documents | [`documents/{document_id}`](/api-docs/openapi/rail-spec#operation/uploadDocument) | Upload the relevant documents needed for the individuals using the `document_id`s from Step 3. | | 4 | Check Application Status for missing/incorrect data | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | If the `status` field shows `READY FOR SUBMISSION` then you can skip to step 6. If the `status` field shows `INCOMPLETE`, check the application for missing/incorrect data by calling this endpoint. The `application_validation_errors` array contains the fields that have errors. | | 5 | Update Application Details | [`applications/{application_id}`](/api-docs/openapi/rail-spec#operation/updateApplication) | Update any missing or incorrect details on the application and ensure there are no validation errors remaining. Go back to Step 4 to see if the Application `status` shows `READY FOR SUBMISSION`. | | 6 | Submit Application | [`applications/{application_id}/submit`](/api-docs/openapi/rail-spec#operation/submitApplication) | Once the application status is ready to submit, submit the application for processing. The application will now enter KYC validation and approval | | 7 | Check Status | [`applications/{application_id}/status`](/api-docs/openapi/rail-spec#operation/getApplicationStatus) | Poll the application status endpoint to determine when the application has been closed and the customer and accounts created. if the `status` shows `CHANGES_REQUESTED`, go back to step 5. If the `status` shows `APPROVED` then the Customer is created and a default account is created. If the `status` shows `REJECTED`, please reach out to Rail to find out more about the reasons for the rejection. If the `status` shows `SUBMITTED` or `PROCESSING`, the application is still under review. Check in shortly. | ## Application Status and Lifecylce The [Application Status endpoint](/api-docs/openapi/rail-spec#operation/getApplicationStatus) is critical to understand the current status of an application within the application lifecycle. It provides you details on 3 key areas; 1. **Document IDs and Status** - gives you the document identifiers for the documents that need to be uploaded using the [documents](/api-docs/openapi/rail-spec#operation/uploadDocument) endpoint. 2. **Field Validation Errors** - lists out the fields and validation errors that need to be remediated using the `update` endpoints. There are separate endpoints to update the [top level](/api-docs/openapi/rail-spec#operation/updateApplication) application, and another for the [UBOs/Individuals](/api-docs/openapi/rail-spec#operation/updateIndividual_1) for a corporate application. 3. **Overall Application Status** - provides the overall status of the application. If there is an issue with the application pre-submission, the overall status shows `INCOMPLETE`. Once the application is ready for submission (meaning the bare minimum data requirements were met), its status will be `READY_FOR_SUBMISSION`. If there is an issue with the fields or documents post-submission, the overall status will change to `CHANGES_REQUESTED`. Similar to the `INCOMPLETE` status, once you address the field or document validation errors, the status will change to `READY_FOR_SUBMISSION`. If further changes are required, the status will change back to `CHANGES_REQUESTED`. If the application is rejected, then the status will change to `REJECTED`. When the application is approved, the status will change to `APPROVED`. At this point the customer record is created and the default account specified in the application is opened. Application States Diagram ## Update Applications There are 2 'Update Application' types: - `CORPORATION_UPDATE` - `INDIVIDUAL_UPDATE` These applications are used when more information is required of a already onboarded customer. Update applications are often required when new products / features are being enabled for a customer. ## Identity Documents - **Passport** - A government-issued document for international travel that includes a photo, name, date of birth, and passport number. - **Drivers license** - A government-issued driver's license, with a photo, name, date of birth, and driver's license number. - **Identity card** - A government-issued ID card, that includes a photo, name, date of birth, and ID number. ### Required Documents | US Customer |   | Non-US Customer | | --- | --- | --- | | Passport |   | Passport | | **OR** |   | **OR** | | Identity card front Identity card back | | Identity card front Identity card back | | **OR** |   | **OR** | | Drivers license front Drivers license back | | | # Application Lifecycle ## Scenario 1 - Application Lifecycle - Happy Path Scenario where the application lifecycle executes without any RFI being required. Application Lifecycle - Happy Path