Create business profile
Creates a business customer under your partner account, together with its beneficial owners, directors and shareholders.
The call is idempotent on partnerCustomerId. Sending an id you already used returns the existing customer with 200 OK and created: false. People in a replayed businessPersonList are ignored, so retrying a timed-out request never duplicates an owner.
Everything is written in one transaction. If any person is rejected, nothing is created, so an error always means it is safe to fix and retry.
Body
partnerCustomerIdstringrequiredYour own id for this customer, 1 to 128 characters, no control characters. Used for idempotency and for lookup by reference.
emailstringrequiredValid email, up to 255 characters.
phoneNumberstringrequiredE.164: a leading + then 7 to 15 digits, for example +2348012345678. Without the + it is rejected with PhoneNumber.Invalid.
companyNamestringrequired2 to 255 characters.
tradingNamestringbusinessTypeCodestringrequiredOne of the business type codes, for example Corporate.
incorporationCountryCodestringrequiredISO 3166-1 alpha-3 code in upper case, for example NGA.
industrystringrequiredOne of the industry codes.
descriptionstringwebsitestringrequiredAbsolute https:// URL, up to 255 characters.
registrationNumberstringrequiredUp to 50 characters. Must not already be registered for a business in the same country.
registrationDatedateYYYY-MM-DD.
addressesAddress[]Every entry is validated when present.
financialsobjectOptional. estimatedMonthlyVolume and monthlyTransactionFrequency take fixed values, the same ones the business app offers; the other two fields are free text.
businessPersonListBusinessPerson[]Beneficial owners, directors and shareholders. This is the only call that creates people at creation time. Add more later with Update business profile.
Across the array, percentageShare must total 100 or less and every email must be distinct.
Accepted identity documents
The identity documents accepted from a person depend on where they live, address.countryCode, not where the business is incorporated. Look them up first. This endpoint needs no token.
GET /customer/v1/onboarding/ubo-identity-requirements?countryCode=NGA
Each entry gives identityTypeCode, whether it isRequired, and whether it requiresIssueDate and requiresExpiryDate. idNumber is required for every identity, whatever the entry says. Compliance manages the list. Changes apply to new submissions only.
A person who fails these rules is refused with 400 ValidationControl.Error, and error.name names the reason.
| Reason | Fix |
|---|---|
UboIdentity.CountryNotSupported | No identity documents are accepted from that country, so the person cannot be onboarded. |
UboIdentity.TypeNotAccepted | Use a type accepted for the person's country. |
UboIdentity.RequiredTypeMissing | Add the type the country requires. |
UboIdentity.IdNumberRequired | idNumber is missing. Send it. |
UboIdentity.IdNumberInvalid | Fix the number's format or length. |
UboIdentity.IssueDateRequired | Send idIssueDate. |
UboIdentity.ExpiryDateRequired | Send idExpiryDate. |
Response
201 Created with a Location header on first creation, 200 OK on an idempotent repeat.
customerIduuidThe business customer. Use it on every other business profile route.
partnerCustomerIdstringYour id, as sent.
createdbooleantrue when this call created the customer, false on a repeat.
ubosobject[]The people on the customer. On a repeat this lists the people that already exist.
Errors
Besides the common errors:
Show endpoint errors
| Code | HTTP | When |
|---|---|---|
Customer.PartnerCustomerIdRequired | 400 | partnerCustomerId is empty. |
Customer.PartnerCustomerIdInvalid | 400 | Longer than 128 characters or contains control characters. |
BusinessType.NotFound | 400 | Unknown businessTypeCode. |
BusinessType.NotOffered | 400 | businessTypeCode is a retired code, e.g. Llc. Use Corporate, SoleTrader or PaymentMto. |
Country.NotFound | 400 | Unknown incorporationCountryCode. |
OnboardingConfig.NotFound | 400 | The country is not yet enabled for business onboarding. Contact support. |
PhoneNumber.Invalid | 400 | phoneNumber is not E.164. |
ValidationControl.Error | 400 | A field failed validation, including shares above 100, duplicate emails, or identities not accepted for a person's country. |
Customer.DuplicateBusiness | 409 | This registration number is already registered in this country. |
OwnershipDetails.DuplicateEmail | 409 | Two people share an email. Nothing was created. |
Customer.InvalidStage | 409 | The customer cannot accept owners at its stage. Should not occur on create. |