Welcome to the rail Developer Guide!
rail API Specification (1.1.2)
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/
https://sandbox.layer2financial.com/api/
https://platform.layer2financial.com/api/
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications?page=0&page_size=0&order_by=string&order=string&status=string&application_type=string&terms_and_conditions_accepted=true&information_attested=true&customer_id=string&customer_name=string&email_address=string' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-request-id: string'Success
Application List
Status of the application
Type of Application (Individual or CorporationApplication)
Details of the account to open for the customer
The identifier you wish to use to uniquely identify this account. The account id follows the External Identifier pattern.
Select the type of account being opened. You can customise and/or create new product offerings by visiting the Management Interface
Pre configured products that are available for use are
DEPOSIT_BASIC
Select the asset type of the account being opened. Asset type selection is not open ended, it must be configured per product via the Management Interface.
Asset type IDs follow a simple structure as follows: {$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE} Simple asset type to test with include
ETHEREUM_SEPOLIA_ETHETHEREUM_SEPOLIA_USDCSOLANA_DEVNET_SOLBITCOIN_TESTNET_BTCFIAT_TESTNET_USDFIAT_TESTNET_USDFIAT_MAINNET_USDFIAT_TESTNET_EUR
Set to true when the end customer accepts all terms and conditions for use of the platform. An application cannot be submitted until accepted.
Setting to true means that the Customer (or the Ultimate Beneficial Owner, CEO, or Control Person for Corporate Customers) attests that all of the information provided on the application is true, accurate, and up to date at the time of submission. Rail Subscribers as defined in the Rail Platform Agreement, may not attest on behalf of the Customer.
The identifier you wish to use to uniquely identify this customer (applies to both individual and corporate customers). The customer ID follows the External Identifier pattern.
Details of the applying individual
Tax reference number of the country (SSN, ITIN, SIN, National Insurance Number etc)
Nationality (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Citizenship (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
IP address from which customer initiated the application request
Registered tax reference number (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
US Residency Status
Employment Status
Investment Profile of the Individual
See the pagination section for additional details on the generic pagination approach.
{ "data": { "applications": [ … ] }, "links": { "self": "string", "first": "string", "prev": "string", "next": "string", "last": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
Type of Application (Individual or CorporationApplication)
Details of the account to open for the customer
The identifier you wish to use to uniquely identify this account. The account id follows the External Identifier pattern.
Select the type of account being opened. You can customise and/or create new product offerings by visiting the Management Interface
Pre configured products that are available for use are
DEPOSIT_BASIC
Select the asset type of the account being opened. Asset type selection is not open ended, it must be configured per product via the Management Interface.
Asset type IDs follow a simple structure as follows: {$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE} Simple asset type to test with include
ETHEREUM_SEPOLIA_ETHETHEREUM_SEPOLIA_USDCSOLANA_DEVNET_SOLBITCOIN_TESTNET_BTCFIAT_TESTNET_USDFIAT_TESTNET_USDFIAT_MAINNET_USDFIAT_TESTNET_EUR
Set to true when the end customer accepts all terms and conditions for use of the platform. An application cannot be submitted until accepted.
Setting to true means that the Customer (or the Ultimate Beneficial Owner, CEO, or Control Person for Corporate Customers) attests that all of the information provided on the application is true, accurate, and up to date at the time of submission. Rail Subscribers as defined in the Rail Platform Agreement, may not attest on behalf of the Customer.
The identifier you wish to use to uniquely identify this customer (applies to both individual and corporate customers). The customer ID follows the External Identifier pattern.
Details of the applying individual
Tax reference number of the country (SSN, ITIN, SIN, National Insurance Number etc)
Nationality (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Citizenship (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Registered tax reference number (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
US Residency Status
Employment Status
Investment Profile of the Individual
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string' \
-d '{
"application_type": "INDIVIDUAL",
"account_to_open": {
"account_id": "string",
"product_id": "string",
"asset_type_id": "string"
},
"terms_and_conditions_accepted": true,
"information_attested": false,
"customer_id": "string",
"customer_details": {
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"email_address": "string",
"mailing_address": {
"unit_number": "string",
"address_line1": "string",
"address_line2": "string",
"address_line3": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country_code": "string"
},
"telephone_number": "string",
"tax_reference_number": "string",
"passport_number": "string",
"nationality": "string",
"citizenship": [
"string"
],
"date_of_birth": "2019-08-24",
"ip_address": "string",
"tax_reference_number_country": "string",
"us_residency_status": "US_CITIZEN",
"employment_status": "EMPLOYEE",
"employment_description": "string",
"employer_name": "string",
"occupation": "string",
"investment_profile": {
"primary_source_of_funds": "EMPLOYMENT",
"primary_source_of_funds_description": "string",
"total_assets": "UPTO_10K",
"usd_value_of_fiat": "UPTO_10K",
"monthly_deposits": "UPTO_5",
"monthly_withdrawals": "UPTO_5",
"monthly_investment_deposit": "UPTO_1K",
"monthly_investment_withdrawal": "UPTO_1K",
"usd_value_of_crypto": "UPTO_10K",
"monthly_crypto_deposits": "UPTO_5",
"monthly_crypto_withdrawals": "UPTO_5",
"monthly_crypto_investment_deposit": "UPTO_1K",
"monthly_crypto_investment_withdrawal": "UPTO_1K"
},
"kyc_profile": {
"funds_send_receive_jurisdictions": [
"string"
],
"business_jurisdictions": [
"string"
],
"engage_in_activities": [
"NONE"
],
"vendors_and_counterparties": [
"SELF"
]
}
}
}'{ "data": { "id": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/submit
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/submit
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/submit
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/submit' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string'{ "data": { "id": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
Type of individual in the corporation
Tax reference number of the country (SSN, ITIN, SIN, National Insurance Number etc)
Registered tax reference number country (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Nationality (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Citizenship (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
(Only where type is BENEFICIAL_OWNER) Percentage ownership of the corporation (0 to 100)
Example values CEO, COO, CFO, President, BenefitsAdministrationOfficer, CIO, VP, AVP, Treasurer, Secretary, Controller, Manager, Partner or Member.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/individual
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/individual
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string' \
-d '{
"individual_type": [
"OFFICER"
],
"first_name": "string",
"middle_name": "string",
"last_name": "string",
"email_address": "string",
"mailing_address": {
"unit_number": "string",
"address_line1": "string",
"address_line2": "string",
"address_line3": "string",
"city": "string",
"state": "string",
"postal_code": "string",
"country_code": "string"
},
"telephone_number": "string",
"tax_reference_number": "string",
"tax_reference_number_country": "string",
"passport_number": "string",
"nationality": "string",
"citizenship": [
"string"
],
"date_of_birth": "2019-08-24",
"percentage_ownership": 0,
"title": "string",
"us_residency_status": "US_CITIZEN"
}'{ "data": { "id": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/accesscode
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/accesscode
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/accesscode
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/accesscode' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string'Success
Date time the access code will expire. At this point a new access code must be generated. Visit the Management Interface to configure expiry settings.
{ "data": { "id": "string", "access_code": "string", "expiry": "2019-08-24T14:15:22Z" } }
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-request-id: string'Success
Status of the application
Type of Application (Individual or CorporationApplication)
Details of the account to open for the customer
The identifier you wish to use to uniquely identify this account. The account id follows the External Identifier pattern.
Select the type of account being opened. You can customise and/or create new product offerings by visiting the Management Interface
Pre configured products that are available for use are
DEPOSIT_BASIC
Select the asset type of the account being opened. Asset type selection is not open ended, it must be configured per product via the Management Interface.
Asset type IDs follow a simple structure as follows: {$BLOCKCHAIN}_{$NETWORK}_{$CURRENCY_CODE} Simple asset type to test with include
ETHEREUM_SEPOLIA_ETHETHEREUM_SEPOLIA_USDCSOLANA_DEVNET_SOLBITCOIN_TESTNET_BTCFIAT_TESTNET_USDFIAT_TESTNET_USDFIAT_MAINNET_USDFIAT_TESTNET_EUR
Set to true when the end customer accepts all terms and conditions for use of the platform. An application cannot be submitted until accepted.
Setting to true means that the Customer (or the Ultimate Beneficial Owner, CEO, or Control Person for Corporate Customers) attests that all of the information provided on the application is true, accurate, and up to date at the time of submission. Rail Subscribers as defined in the Rail Platform Agreement, may not attest on behalf of the Customer.
The identifier you wish to use to uniquely identify this customer (applies to both individual and corporate customers). The customer ID follows the External Identifier pattern.
Details of the applying individual
Tax reference number of the country (SSN, ITIN, SIN, National Insurance Number etc)
Nationality (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
Citizenship (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
IP address from which customer initiated the application request
Registered tax reference number (2 Digit ISO31661-Alpha2 Format - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
US Residency Status
Employment Status
Investment Profile of the Individual
{ "data": { "id": "string", "status": "INCOMPLETE", "application_type": "INDIVIDUAL", "account_to_open": { … }, "terms_and_conditions_accepted": true, "information_attested": false, "customer_id": "string", "customer_details": { … } } }
Request
Update applicant properties. For Individuals attached to a corporation, you much patch the individuals directly using Update Individual.
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PATCH \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string' \
-d '{
"updates": [
{
"field": "string",
"value": "string"
}
]
}'{ "data": { "id": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual/{individual_id}
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/individual/{individual_id}
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/individual/{individual_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual/{individual_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string'{ "data": { "id": "string" } }
Optional Unique ID per request, useful for fault resolution/diagnosis and audit.
Unique ID used to safely retry an operation. See idempotency section for more details.
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual/{individual_id}
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/individual/{individual_id}
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/individual/{individual_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PATCH \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/individual/{individual_id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'x-l2f-idempotency-id: string' \
-H 'x-l2f-request-id: string' \
-d '{
"updates": [
{
"field": "string",
"value": "string"
}
]
}'{ "data": { "id": "string" } }
- Mock server
https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/status
- Sandbox - Stable API Instance
https://sandbox.layer2financial.com/api/v1/applications/{application_id}/status
- Production - Stable API Instance
https://platform.layer2financial.com/api/v1/applications/{application_id}/status
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.rail.io/_mock/api-docs/openapi/rail-spec/v1/applications/{application_id}/status' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'x-l2f-request-id: string'Success
Status of the application
List of errors with the application.
List of validation errors with the application.
List of document errors with the application.
ONLY for corporate applications. List of errors for the submitted individuals
{ "data": { "id": "string", "status": "INCOMPLETE", "application_errors": [ … ], "validation_errors": [ … ], "application_document_errors": [ … ], "application_individual_errors": [ … ], "created_date": "string", "status_update_date": "string" } }