Veem Account Creation API

With Veem's Account Creation API, you can create a Veem account for your business

Open account

This endpoint is used to create a new Veem account. You will need your Oauth2 token to be able to hit this endpoint.

POST https://sandbox-api.veem.com/veem/v1.2/account

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Request payload

{
    "email": "[email protected]",
    "firstName": "John",
    "middleName": "Adam",
    "lastName": "Smith",
    "extraName": "",
    "isoCountryCode": "US",
    "dialCode": "+1",
    "phoneNumber": "1234567890",
    "businessName": "Smith Enterprises",
    "businessEntity": "LLC",
    "taxIdNumber": "12-3456789",
    "industry": "Software, IT and Telecommunications",
    "subIndustry": "Software",
    "dateOfBirth": "1996-09-16",
    "address": {
        "countryCode": "US",
        "street": "123 Main Street",
        "streetSecondary": "Suite 100",
        "city": "New York",
        "postalCode": "10001",
        "province": "NY"
    },
    "bankInfo": {
        "isoCountryCode": "US",
        "bankName": "Chase Bank",
        "currencyCode": "USD",
        "bankAccountNumber": "9876543210",
        "routingNumber": "021000021"
    },
    "extraInfo": {
        "purposeOfPayment": "Goods",
        "purposeOfPaymentDescription": "Thank you for your purchase"
    }
}

Business Accounts

The dateOfBirth is not required for businesses.

Individual Accounts

The account type will be identified based on the provided businessEntity.

For individuals, you need to specify one of the following:

  • Contractor
  • SoleProprietorship
  • PersonalUse
  • Freelancer
  • SideProject

The dateOfBirth must be provided for individuals.

The taxIdNumber usually follows the country pattern. The value sent will be validated against our pre-added format. You can find the current validation in our Country Currency Map API.

Here is an example of the validation found in Country Currency Map API

"taxIdInfo" :{
  "required" : true,
  "data" : [ {
    "type" : "individual",
    "validation" : {
      "min" : "4",
      "max" : "9",
      "type" : "regex",
      "error" : "Improper Social Security Number format, enter as XXX-XX-XXXX",
      "value" : "(?!012345678)(?!123456789)(?!0{9})(?!1{9})(?!2{9})(?!3{9})(?!4{9})(?!5{9})(?!6{9})(?!7{9})(?!8{9})(?!9{9})(^(\\d{9})$|^(\\d{3}-\\d{2}-\\d{4})$)"
    }
    }, {
      "type" : "business",
      "validation" : {
        "max" : "11",
        "type" : "regex",
        "error" : "Improper EIN format, enter as XX-XXXXXXX",
        "value" : "^(?:\\d{2}-\\d{7})$"
      }
    }
  ]
}

Edit account

This endpoint is used to edit some parameters of an existing account.

PATCH https://sandbox-api.veem.com/veem/v1.2/account/{accountId}

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Request payload

{
    "subIndustry": "Software",
    "firstName": "John",
    "lastName": "Doe",
    "dialCode": "+1",
    "phoneNumber": "6612861111",
    "taxIdNumber": "54-3216789",
    "businessName": "JD Enterprises",
    "industry": "Software, IT and Telecommunications",
    "dateOfBirth": "1996-09-16",
    "address": {
        "street": "123 Main Street",
        "streetSecondary": "Apt 101",
        "city": "San Francisco",
        "postalCode": "94116",
        "province": "CA"
    }
}

Response payload

{
    "id": 940652,
    "email": "[email protected]",
    "clientId": "clientId-be1a4bfa",
    "clientSecret": "5fbb2fd2-2672-4971-b3f4-45c34fc6632e",
    "token": "d49e7fd4-2600-4dd4-a572-118668febbe7",
    "accountSetUpStatus": "READY",
    "verificationStatus": "Unverified"
}

Add Beneficial Ownership Information (BOI)

Use this endpoint to add beneficial ownership information for the account that you just created.

POST https://sandbox-api.veem.com/veem/v1.2/beneficial-ownership

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Request payload

{
    "beneficialOwnerShip": {
        "hasAttestation": true,
        "individualOwnerShip": [
            {
                "firstName": "Jane",
                "lastName": "Smith",
                "ownershipPercentage": 25,
                "dateOfBirth": "05/15/1985",
                "citizenshipIsoCountryCode": "US",
                "addressLine1": "456 Elm Street",
                "addressLine2": "Apt 202",
                "addressCity": "San Francisco",
                "addressState": "CA",
                "addressPostalCode": "94111",
                "addressIsoCountryCode": "US",
                "phoneNumberType": "mobile",
                "dialCode": "+1",
                "phoneNumber": "4155551234",
                "taxId": "123-45-6789",
                "isControlPerson": true,
                "title": "CEO of the company"
            }
        ],
        "businessOwnerShip": [
            {
                "businessName": "ABC Holdings",
                "taxId": "33-1867308",
                "ownershipPercentage": 25,
                "addressLine1": "789 Oak Avenue",
                "addressLine2": "Suite 300",
                "addressCity": "San Francisco",
                "addressState": "CA",
                "addressPostalCode": "94111",
                "addressIsoCountryCode": "US"
            }
        ]
    }
}

📘

Note: You can add individual or business or both.

{
    "beneficialOwnerShip": {
        "individualOwnerShip": [
            {
                 “Id” : 1
                "firstName": "Jane",
                "lastName": "Smith",
                "ownershipPercentage": 25,
                …..
            }
        ],
        "businessOwnerShip": [
            {
                “Id” : 2,
                "businessName": "ABC Holdings",
                "taxId": "33-1867308",
                "ownershipPercentage": 25,
                …
            }
        ]
    }
}

Get Beneficial Ownership Information (BOI)

Use this endpoint to get a beneficial ownership information list for the account that you just created.

GET https://sandbox-api.veem.com/veem/v1.2/beneficial-ownership

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Response payload

{
    "beneficialOwnerShip": {
        "individualOwnerShip": [
            {
                 “Id” : 1
                "firstName": "Jane",
                "lastName": "Smith",
                "ownershipPercentage": 25,
                …..
            }
        ],
        "businessOwnerShip": [
            {
                “Id” : 2,
                "businessName": "ABC Holdings",
                "taxId": "33-1867308",
                "ownershipPercentage": 25,
                …
            }
        ]
    }
}

Get account status

Once you have opened an account, you can retrieve the account information using the account token and the account id that you received from the open account endpoint.

GET https://sandbox-api.veem.com/veem/v1.2/account/{accountId}

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Response payload

{
    "id": 940652,
    "email": "[email protected]",
    "clientId": "clientId-be1a4bfa",
    "clientSecret": "5fbb2fd2-2672-4971-b3f4-45c34fc6632e",
    "token": "d49e7fd4-2600-4dd4-a572-118668febbe7",
    "accountSetUpStatus": "READY",
    "verificationStatus": "Unverified"
}

Add bank account

If you didn’t provide the bank account information in the open account endpoint, you can use the following endpoint to add all the information related to the bank account.

POST https://sandbox-api.veem.com/veem/v1.2/account/bank-account

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Request payload

{
    "routingNumber": "026009593",
    "bankName": "Bank of America",
    "bankAccountNumber": "12345678",
    "currencyCode": "USD",
    "isoCountryCode": "US"
}
📘

If you need more information about bank parameters for other countries, please take a look at country-currency-map.

Response payload

{
    "id": 2761,
    "accountId": 940651,
    "isoCountryCode": "US",
    "isoCurrencyCode": "USD",
    "bankName": "Bank of America",
    "beneficiaryName": "JD Enterprises",
    "accountType": "Checking",
    "canRemove": true,
    "shortIdentifierDomestic": "5678",
    "verificationStatus": "Unverified",
    "status": "Active",
    "externalAccountStatus": "NotConfigured"
}

Edit bank account

You can modify the bank account information using the following endpoint.

PATCH https://sandbox-api.veem.com/veem/v1.2/account/bank-account/{bankId}

📘

Headers

Three headers are required to use this endpoint.

Required Headers

Name

Type

Required

Description

Authorization

string

Yes

Bearer token (OAuth 2.0) This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status code in the response. An example of a valid header value is as follows: Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your Bearer token

X-Request-Id

string

Yes

This is a unique string that identifies the current API request, and should follow the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status code in the response. An example X-request-id is as follows:
48855846-628d-4177-b071-80332a116f0a

Content-Type

string

Yes

The content type of the request. Must be application/json

Request payload

{
    "routingNumber": "026009593",
    "bankName": "Bank of America",
    "bankAccountNumber": "12345678",
    "currencyCode": "USD",
    "isoCountryCode": "US"
}
📘

If you need more information about bank parameters for other countries, please take a look at country-currency-map.

Response payload

{
    "id": 2761,
    "accountId": 940651,
    "isoCountryCode": "US",
    "isoCurrencyCode": "USD",
    "bankName": "Bank of America",
    "beneficiaryName": "JD Enterprises",
    "accountType": "Checking",
    "canRemove": true,
    "shortIdentifierDomestic": "5678",
    "verificationStatus": "Unverified",
    "status": "Active",
    "externalAccountStatus": "NotConfigured"
}