POST
/
end-users
Create an individual end user (KYC)
curl --request POST \
  --url https://api.balansas.com/functions/v1/customer-api/end-users \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "firstName": "<string>",
  "lastName": "<string>",
  "email": "[email protected]",
  "dob": "<string>",
  "address": {
    "line1": "<string>",
    "city": "<string>",
    "postalCode": "<string>",
    "country": "<string>",
    "line2": "<string>",
    "state": "<string>"
  },
  "middleName": "<string>",
  "phone": "<string>",
  "birthCountry": "<string>",
  "nationality": "<string>",
  "ipAddress": "<string>",
  "tags": [
    "<string>"
  ],
  "signupAt": "2023-11-07T05:31:56Z",
  "metadata": {},
  "linkedCryptoWallets": [
    {
      "coin": "<string>",
      "walletAddress": "<string>",
      "relationship": []
    }
  ],
  "umbrellaLinkId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "onboarding_url_token": "<string>",
  "kycReportBase64": "<string>",
  "kycReportFilename": "<string>",
  "sumsubReportBase64": "<string>",
  "sumsubReportFilename": "<string>"
}
'
{
  "data": {
    "id": "9e2b1c34-5d6e-4f70-8a91-2b3c4d5e6f70",
    "fr_end_user_id": "eu_5Lk9Pm",
    "end_user_type": "INDIVIDUAL",
    "first_name": "Maria",
    "middle_name": "Elena",
    "last_name": "Rossi",
    "company_name": "Helix Trading Ltd",
    "email": "[email protected]",
    "status": "pending_verification",
    "fr_owner_business_id": "busi_8Jh2KdLm5Qx",
    "registration_number": "12345678",
    "registration_date": "2019-06-15",
    "business_type": "LIMITED_COMPANY",
    "incorporation_country": "IE",
    "sector": "OTHER_PRODUCTS_SERVICES",
    "risk_tier": "low_risk",
    "verification_completed_at": "2026-05-21T08:00:00.000Z",
    "disclosure_accepted_at": "2026-05-23T10:05:00.000Z",
    "disclosure_version": "ppa-v1.2-2026-05-23",
    "created_at": "2026-05-28T11:02:09.456Z",
    "updated_at": "2026-05-28T11:02:09.456Z"
  }
}

Authorizations

x-api-key
string
header
required

Customer API key. Send as x-api-key: sk_... or Authorization: Bearer sk_.... Write operations also require an X-CSRF-Token header (64-char hex).

Body

application/json
firstName
string
required
Required string length: 1 - 100
lastName
string
required
Required string length: 1 - 100
email
string<email>
required
Maximum string length: 255
dob
string
required
Pattern: ^\d{4}-\d{2}-\d{2}$
address
object
required
middleName
string
Maximum string length: 100
phone
string
Maximum string length: 20
birthCountry
string
Required string length: 2
nationality
Required string length: 2
identificationDocument
object
ipAddress
string
Maximum string length: 45
annualSalaryRange
enum<string>
Available options:
RANGE_0_TO_25000,
RANGE_25000_TO_50000,
RANGE_50000_TO_100000,
RANGE_100000_TO_150000,
ABOVE_150000
tags
string[]
Maximum array length: 20
Required string length: 1 - 100
riskRating
enum<string>
Available options:
LOW,
MEDIUM,
HIGH
signupAt
string<date-time>
metadata
object
linkedCryptoWallets
object[]
Maximum array length: 50
onboarding_url_token
string
Required string length: 1 - 100
reverseSolicitationAttestation
object
verificationMethod
enum<string>
Available options:
hosted_kyc,
pdf_upload,
sumsub_websdk
kycReportBase64
string
Required string length: 1 - 14680064
kycReportFilename
string
Maximum string length: 255
sumsubReportBase64
string
Required string length: 1 - 14680064
sumsubReportFilename
string
Maximum string length: 255

Response

Success

data
object
required