Account Creation

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

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

There are 2 headers necessary for the use of this endpoint:

  • X-request-id: This is a number unique to the current API request, and follows the UUID format. Reusing this header without changing the value will result in a 500 (Internal Server Error) status. An example X-request-id is as follows:

48855846-628d-4177-b071-80332a116f0a

  • Authorization: This header holds the bearer token required to use Veem's public API. Failure to use a valid bearer token will result in a 404 (Not Found) status. An example of a valid token is as follows:

Bearer c047594b-082c-4da1-be89-08fe3770f4b3


Request Payload

When creating an account using Veem's Account Creation API, one must follow the format as shown in the following example:

 {  
     "email": "[email protected]",  
     "firstName": "Thomas",  
     "middleName": "Robert",  
     "lastName": "Scott",  
     "extraName": "Hernandez",  
     "isoCountryCode": "US",  
     "dialCode": "+1",  
     "phoneNumber": "2046611473",  
     "businessName": "API Testing",  
     "businessEntity": "Corporation",  
     "taxIdNumber": "33-1867307",  
     "industry": "Software, IT and Telecommunications",  
     "subIndustry": "Software", 
     "type": "Business",
     "address": {  
         "countryCode": "US",  
         "street": "166 Battery St",  
         "streetSecondary": "166 Battery St",  
         "city": "San Francisco",  
         "postalCode": "94111",  
         "province": "CA"  
     },  
     "bankInfo": {  
         "isoCountryCode": "US",  
         "bankName": "Bank of America",  
         "currencyCode": "USD",  
         "bankAccountNumber": "12345678",  
         "routingNumber": "026009593"  
     },  
     "extraInfo": {  
         "purposeOfPayment": "Services",  
         "purposeOfPaymentDescription": "Thanks for your services"  
     }  
 }

Note: Not all of these parameters are required for the creation of a Veem account, and can be omitted from the request body altogether. Furthermore, the parameters are different when creating a business account as opposed to a personal account.


Request Parameters

The following table contains detailed information on the payload's parameters, such as the parameter name, whether it is mandatory or not, formatting (if applicable), and size of the parameter

ParameterMandatory?FormatSize (in characters)
emailYes[email protected]254 (Max)
firstNameYes64 (Max)
middleNameNo64 (Max)
lastNameYes64 (Max)
extraNameNo64 (Max)
isoCountryCodeYesISO 3166-1 alpha-2 standard (eg. US, BE, BT etc)2
dialCodeYesCountry code (such as +1 for US or Canada, +31 for Netherlands etc. More info available below the table)
Note: The + prefix must be included in the parameter
2-5
phoneNumberYes1234567654
Note: There is no need to include dashes (-) in the number. The format as shown is sufficient
12 (Max)
businessNameNo12 (Max)
businessEntityNo For Business:
Contractor, SoleProprietorship, PersonalUse, Freelancer, SideProject, Corporation, LimitedCompany, Non-profit, Partnership

For individual:
Contractor, SoleProprietorship, PersonalUse, Freelancer, SideProject

Note:Using the wrong businessEntity for the wrong account type will result in a 500 (Bad Request) status
15 (Max)
typeNoBusiness, Personal or Incomplete
dateOfBirthNo (Yes for Personal Accounts)yyyy-mm-dd (ex. 2024-01-15)
taxIdNumberXX-XXXXXXX
industryNoPlease check list below
subIndustryNoPlease check list below

Note: Subindustry is unique to each industry, and is impractical to list all of them here. Subindustry information can be found below the table
addressYesContains the subfields with the address. prefix
address.countryCodeYesISO 3166-1 alpha-2 standard2
address.streetYesex. Battery Street64 (Max)
address.streetSecondaryNo64 (Max)
address.cityYes2-64
address.postalCodeYes2-10
address.provinceYesUse this for for Canadian provinces and US state. Use two character abbreviation for US and Canada. Example: use ON for Ontario, NY for New York.2-64
bankInfoNoContains the subfields with the bankInfo. prefix

Note: While not necessary for the creation of an account, an account cannot send or receive payments until bank information is provided
bankInfo.isoCountryCodeNoISO 3166-1 alpha-2 standard2
bankInfo.bankNameNoNote: Bank name and bank routing number MUST be valid. Some countries have specific banks names, please check country-currency-map
bankInfo.bankAccountNumberNo
bankInfo.routingNumberNo Routing number will depend on the bank name provided. Please ensure the routing number is the appropriate one for your bank. Please check country-currency-map
extraInfoNoContains the subfields with the extraInfo. prefix
extraInfo.purposeOfPaymentNoGoods, Personal, Services, or Charitable Donation. Some countries will required specific information please check country-currency-map64 (Max)
extraInfo.purposeOfPaymentDescriptionNo64 (Max)

For extra information, you can find some resources here:
ISO 3166-1 alpha-2 standard: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
Dial codes: https://en.wikipedia.org/wiki/List_of_country_calling_codes

Industry and subindustry list:

IndustrySubIndustry
AgricultureAnimals & Livestock
AgricultureMarijuana, Hemp, Tobacco
AgricultureCrops
AgricultureForestry
AgricultureFishing & Hunting
AgricultureSupporting Activities
Business ServicesOther Business Services
Business ServicesAccounting Services
Business ServicesAffiliate Marketing
Business ServicesDirect Marketing
Business ServicesOther Advertising & Marketing
Business ServicesCall Centers & Business Centers
Business ServicesCustom Software & IT Services
Business ServicesFood Service
Business ServicesHR & Staffing
Business ServicesInformation & Document Management
Business ServicesManagement Consulting
Business ServicesMultimedia & Graphic Design
Business ServicesResearch & Development
Business ServicesSecurity Products & Services
Business ServicesTranslation & Linguistic Services
Business ServicesOther professional services
ConstructionCommercial
ConstructionResidential
ConstructionOther Construction
ConstructionArchitecture, Engineering & Design
ConstructionCivil Engineering Construction
ConstructionCommercial & Residential Construction
Consumer ServicesRepair Services
Consumer ServicesAutomotive Service
Consumer ServicesBarber Shops & Beauty Shops
Consumer ServicesCar & Truck, other Rental
Consumer ServicesChildcare
Consumer ServicesCleaning Services
Consumer ServicesLandscape Services
Consumer ServicesPhotography Studio
Consumer ServicesPC Repair Services
Consumer ServicesWeight & Health Management
Consumer ServicesAdult Industry
Consumer ServicesOther Consumer Services
EducationColleges & Universities
EducationK-12 Schools
EducationTraining
EducationOther Education
Energy, Utilities, Waste & MineralsOil & Gas, Petroleum, Coal, Electricity
Energy, Utilities, Waste & MineralsMinerals & Mining
Energy, Utilities, Waste & MineralsOil & Gas Exploration & Services
Energy, Utilities, Waste & MineralsWaste Treatment, Environmental Services & Recycling
Energy, Utilities, Waste & MineralsWater Treatment
Finance, InsuranceBanking
Finance, InsuranceLending & Brokerage
Finance, InsuranceCredit Cards & Transaction Processing
Finance, InsuranceInvestment Banking
Finance, InsuranceVenture Capital & Private Equity
Finance, InsuranceInsurance
Finance, InsuranceOther Finance, Insurance
Government, OrganizationsGovernment & Public Services
Government, OrganizationsMembership Organizations
Government, OrganizationsNon-Profit & Charitable Organizations
Government, OrganizationsReligious Organizations
Holding Companies & ConglomeratesHolding Companies & Conglomerates
Hospitality, Recreation & TourismAmusement Parks, Arcades & Attractions
Hospitality, Recreation & TourismGambling & Gaming
Hospitality, Recreation & TourismLodging & Resorts
Hospitality, Recreation & TourismMuseums & Art Galleries
Hospitality, Recreation & TourismPerforming Arts, Theaters
Hospitality, Recreation & TourismRestaurants and Drinking Places
Hospitality, Recreation & TourismSports Teams & Leagues
Hospitality, Recreation & TourismTravel Agencies & Services
Hospitality, Recreation & TourismOther Hospitality, Recreation
Hospitality, Recreation & TourismOther
Hospitals, Clinics & Healthcare ServicesAmbulance Services
Hospitals, Clinics & Healthcare ServicesDental Offices
Hospitals, Clinics & Healthcare ServicesElderly Care Services
Hospitals, Clinics & Healthcare ServicesHospitals
Hospitals, Clinics & Healthcare ServicesMedical Laboratories & Imaging Centers
Hospitals, Clinics & Healthcare ServicesMental Health & Rehabilitation Facilities
Hospitals, Clinics & Healthcare ServicesPhysicians Clinics
Hospitals, Clinics & Healthcare ServicesVeterinary Services
Hospitals, Clinics & Healthcare ServicesOther Healthcare Services
Law Firms & Legal ServicesLaw Firms & Legal Services
ManufacturingHealthcare & Medical Devices
ManufacturingCommercial/Industrial Goods
ManufacturingOther Manufacturing
ManufacturingAircraft, Vehicles, Vessels, Parts
ManufacturingAircraft, Vehicles, Vessels, Parts, Railway, Train
ManufacturingApparel, Footwear, & Textiles
ManufacturingAppliances, Electronics, Computers
ManufacturingBuilding Materials
ManufacturingChemicals & Related Products
ManufacturingFood & Beverage
ManufacturingFurniture
ManufacturingIndustrial Machinery & Equipment
ManufacturingMedical Devices & Equipment
ManufacturingPharmaceuticals, Health & Nutrition Products
ManufacturingPlastic, Packaging & Containers
ManufacturingSporting Goods
ManufacturingTelecommunication Equipment
ManufacturingToys & Games
ManufacturingWatches & Jewelry
ManufacturingWine & Spirits
ManufacturingWire & Cable
Media, Arts & EntertainmentAgents and Managers for Artists, Athletes, Entertainers
Media, Arts & EntertainmentBroadcasting
Media, Arts & EntertainmentInternet
Media, Arts & EntertainmentMusic Production & Services
Media, Arts & EntertainmentPublishing & News Services
Media, Arts & EntertainmentSocial Networks
Media, Arts & EntertainmentAstrology, Tarot Card Readings
Media, Arts & EntertainmentCasinos/Gaming
Media, Arts & EntertainmentOther Media, Art, Entertainment
Real EstateReal Estate Lessors
Real EstateReal Estate Agents and Brokers
Real EstateOther Real Estate
Retail TradeApparel, Footwear, & Textiles
Retail TradeAutomobile Dealers and Parts Stores
Retail TradeConsumer Electronics & Computers Retail
Retail TradeConvenience Stores, Gas Stations & Liquor Stores
Retail TradeDepartment Stores, Shopping Centers & Superstores
Retail TradeDrug Stores & Pharmacies, Health Stores
Retail TradeFlowers, Gifts & Specialty Stores
Retail TradeFurniture, Home Improvement & Hardware Retail
Retail TradeGrocery Retail
Retail TradeJewelry & Watch Retail
Retail TradeRecord, Video & Book Stores
Retail TradePoker Chips
Retail TradeSporting & Recreational Equipment Retail
Retail TradeFirearms, ammunition, weapons or knives
Retail TradeArt Dealers/Antique Dealers/Auction Houses
Retail TradeMarijuana, Hemp, Tobacco, Vape Juice
Retail TradePawn Shop
Retail TradeAdult Novelties and Toys
Retail TradeOther Retail Trade
Retail TradeWine & Spirits Trade
Software, IT and TelecommunicationsSoftware
Software, IT and TelecommunicationsMobile App Development
Software, IT and TelecommunicationsCable & Satellite
Software, IT and TelecommunicationsInternet Service Providers, Website Hosting
Software, IT and TelecommunicationsTelephony & Wireless
Transportation, Warehousing, WholesaleAirlines, Airports & Air Services
Transportation, Warehousing, WholesaleFreight & Logistics Services
Transportation, Warehousing, WholesaleMarine Shipping & Transportation
Transportation, Warehousing, WholesaleRail, Bus & Taxi
Transportation, Warehousing, WholesaleTrucking, Moving & Storage
Transportation, Warehousing, WholesaleIndustry transportation
Transportation, Warehousing, WholesaleTransportation, Warehousing Other
Transportation, Warehousing, WholesaleWholesale
Transportation, Warehousing, WholesaleWarehouse

Response Payload

Once a valid request has been sent, a response payload of this format should be expected:

{
    "id": 374999,
    "email": "[email protected]",
    "clientId": "APITesting-98c22708",
    "clientSecret": "d7f4f648-2102-4e0a-9108-7a5e94d7dfa7",
    "token": "d51948db-6da6-499e-9af5-bb48767145f5",
    "expiresIn": 31557599,
    "userId": 393473,
    "accountSetUpStatus": "READY",
    "verificationStatus": "Unverified",
    "bankId": 180529,
    "verificationProfile": {
        "reasons": [
            {
                "code": "account_under_review",
                "description": "Payments may be submitted but Veem will not process the payment, until risk reviews are completed"
            }
        ]
    }
}

Please make sure to save id, token and bankId info in your database for future endpoint.

The following table will provide extra information on some of these parameters:

Response ParameterExplanation
idThis is the ID provided with the Veem account
emailEmail associated with the Veem account
accountSetUpStatusWhen an account is ready to send payments, the field will be "READY", otherwise it will be "MISSING_INFORMATION". Note that an account could be READY, but first requires verification before it is able to send payments
verificationStatusStarts as "Unverified", and will change to "Verified" once the account has been verified by Veem's verification team
verificationProfileCheck out more information at error handler page

Possible response errors

When opening a Veem account, one might encounter some errors depending on the information provided. Here are some examples of the possible status codes one might encounter when using Veem's Account Creation API:

Account creation is successful, but missing certain info:

Status Code: 201 (Created)

Example response:

{
    "id": 374999,
    "email": "[email protected]",
    "clientId": "APITesting-98c22708",
    "clientSecret": "d7f4f648-2102-4e0a-9108-7a5e94d7dfa7",
    "token": "d51948db-6da6-499e-9af5-bb48767145f5",
    "expiresIn": 31557599,
    "userId": 393473,
    "accountSetUpStatus": "MISSING_INFORMATION",
    "verificationStatus": "Unverified",
    "missingInformation": [
        "Bank account info is missing"
    ]
}


Bad Request

Status Code: 400 (Bad Request)

Example Response:

{
    "fieldErrors": [
        {
            "field": "businessEntity",
            "message": "must not be blank"
        },
        {
            "field": "industry",
            "message": "must not be blank"
        },
        {
            "field": "phoneNumber",
            "message": "must not be blank"
        },
        {
            "field": "taxIdNumber",
            "message": "must not be blank"
        },
        {
            "field": "businessName",
            "message": "must not be blank"
        },
        {
            "field": "address",
            "message": "must not be null"
        }
    ]
}

Note: When partially omitting information for bankAccount fields (e.g. bankNumber and routingNumber), but providing the rest, one can expect a response similar to the following:

{
    "id": 375005,
    "email": "[email protected]",
    "clientId": "APITesting-6608e0f5",
    "clientSecret": "3ba6f018-792b-4308-9a17-f0ec27e3994d",
    "token": "f7f5c040-b249-4ea1-8185-e7e85b709c51",
    "expiresIn": 31557599,
    "userId": 393479,
    "accountSetUpStatus": "MISSING_INFORMATION",
    "verificationStatus": "Unverified",
    "missingInformation": [
        "Bank account info is missing: 400 BAD_REQUEST \"Missing bank account fields: [routingNumber, bankAccountNumber]\""
    ],
    "verificationProfile": {
        "reasons": [
            {
                "code": "account_under_review",
                "description": "Payments may be submitted but Veem will not process the payment, until risk reviews are completed"
            }
        ]
    }
}

Internal Server Error

Status Code: 500 (Internal Server Error)

Note: This is a generic error code that can occur for any number of reasons. If these errors occur, one must contact Veem support to have it ratified

Example Responses:

Maximum Characters exceeded:

{
    "timestamp": 1735673162023,
    "status": 500,
    "error": "Internal Server Error",
    "message": "Failed to call internal service",
    "path": "/veem/v1.2/account"
}

Reuse of the same X-REQUEST-ID:

{
    "timestamp": 1735673703326,
    "status": 500,
    "error": "Internal Server Error",
    "message": "X-REQUEST-ID already has been used: 48855846-628d-4177-b071-80332a116f0a. Use a new one",
    "path": "/veem/v1.2/account"
}

Entering incorrect business entity with account type:

{
    "timestamp": 1735674059130,
    "status": 500,
    "error": "Internal Server Error",
    "message": "Invalid business type",
    "path": "/veem/v1.2/account"
}

Generic:

{
    "timestamp": 1705605916361,
    "status": 500,
    "error": "Internal Server Error",
    "message": "Unexpected error has occurred. We apologize for the inconvenience",
    "path": "/veem/v1.2/account"
}


Edit account

This endpoint is used to edit specific parameters in an existing Veem account. The endpoint is as follows:

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

Headers

There are 2 headers necessary for the use of this endpoint:

  • X-request-id: This is a number unique to the current API request, and follows the UUID format. Reusing this header without changing the value will result in a 500 (Internal Server Error) status. An example X-request-id is as follows:

48855846-628d-4177-b071-80332a116f0a

  • Authorization: This header holds the bearer token required to use Veem's public API. Failure to use a valid bearer token will result in a 404 (Not Found) status. An example of a valid token is as follows:

Bearer d49e7fd4-2600-4dd4-a572-118668febbe7

Request Payload

When editing an account, one must follow the format as shown in the following example:

{
    "subIndustry": "Software",
    "firstName": "New First Name",
    "lastName": "New Last Name",
    "dialCode": "+1",
    "phoneNumber": "6612861111",
    "taxIdNumber": "54-3216789",
    "businessName": "New Business Name",
    "industry": "Software, IT and Telecommunications",
    "address": {
        "street": "Address line 1",
        "streetSecondary": "Address line 1",
        "city": "San Francisco",
        "postalCode": "94116",
        "province": "CA"
    }
}

Request Parameters

The following table contains detailed information on the payload's parameters, such as the parameter name, formatting (if applicable), and size of the parameter

Note: None of these fields are mandatory. You are free to choose which fields you want to modify in an account

ParameterFormat/ValuesSize
firstName64 (Max)
lastName64 (Max)
dialCodeCountry code (such as +1 for US or Canada, +31 for Netherlands etc. More info available below the table)
Note: The + prefix must be included in the parameter
2-5
phoneNumber1234567654
Note: There is no need to include dashes (-) in the number. The format as shown is sufficient
12 (Max)
businessName128 (Max)
taxIdNumberXX-XXXXXXX11
industryAgriculture
Business Services
Construction
Consumer Services
Education
Energy, Utilities, Waste & Minerals
Finance, Insurance
Government, Organizations
Holding Companies & Conglomerates
Hospitality, Recreation & Tourism
Hospitals, Clinics & Healthcare Services
Law Firms & Legal Services
Manufacturing
Media, Arts & Entertainment
Real Estate
Retail Trade
Software, IT and Telecommunications
Transportation, Warehousing, Wholesale
subIndustryNote: Subindustry is unique to each industry, and is impractical to list all of them here. Subindustry information can be found below the table
eg. For Agriculture, one can use the Crops subindustry
address.street64 (Max)
address.streetSecondary64 (Max)
address.city2-64
address.postalCode2-10
address.province2-64

For extra information, you can find some resources here:
Dial codes: https://en.wikipedia.org/wiki/List_of_country_calling_codes
Subindustry list: placeholder

Response Payload

Once a valid request has been sent, a response payload of this format should be expected:


Get account

Once a Veem account has been opened, you can fetch the account's information using the account id that you received from the Open Account endpoint. The endpoint is as follows:

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

Note: If coming directly from the Open Account flow, use the value from the id field and not from the userId field

Headers

There are 2 headers necessary for the use of this endpoint:

  • X-request-id: This is a number unique to the current API request, and follows the UUID format. Reusing this header without changing the value will result in a 500 (Internal Server Error) status. An example X-request-id is as follows:

48855846-628d-4177-b071-80332a116f0a

  • Authorization: This header holds the bearer token required to use Veem's public API. Failure to use a valid bearer token will result in a 404 (Not Found) status. An example of a valid token is as follows:

Bearer d49e7fd4-2600-4dd4-a572-118668febbe7

Response Payload

When using the endpoint, one can expect to receive a response following the format below:

{
    "id": 374999,
    "email": "[email protected]",
    "clientId": "APITesting-98c22708",
    "clientSecret": "d7f4f648-2102-4e0a-9108-7a5e94d7dfa7",
    "token": "d51948db-6da6-499e-9af5-bb48767145f5"
    "accountSetUpStatus": "READY",
    "verificationStatus": "Unverified",
}

The following table will provide extra information on some of these parameters:

Response ParameterExplanation
idThis is the ID provided with the Veem account
emailEmail associated with the veem account
accountSetUpStatusWhen an account is ready to send payments, the field will be "READY", otherwise it will be "MISSING_INFORMATION". Note that an account could be READY, but first requires verification before it is able to send payments
verificationStatusStarts as "Unverified", and will change to "Verified" once the account has been verified by Veem's verification team

To get account status you can also use Webhook, check this page