Create Customer via Link
Create customer with entitlements and generate KYC verification link
X-Api-Key<token>API key in format: sti_env_prefix_secret
idempotency-key*stringRequired for mutating calls. Use a V4 UUID. The server stores the first result for 24h and returns it on subsequent retries with the same key.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidapplication/json- body
Individual + link
external_customer_id?stringExternal customer ID
customer_type*stringemail?stringEmail address
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emailphone?stringPhone number
^\+[1-9]\d{6,14}$e164entitlements?array<>Feature-based entitlements for the customer
[]metadata?Additional metadata
first_name?stringFirst name of the applicant
last_name?stringLast name of the applicant
middle_name?stringMiddle name of the applicant
dob?stringDate of birth in YYYY-MM-DD format
^\d{4}-\d{2}-\d{2}$nationality?stringCountry code
tax_id_number?stringTax Identification Number (TIN)
address?Address information
proof_of_address_documents?array<>Proof of address documents (PDF, JPEG, PNG or HEIC, up to 5MB each). Held by Stables and reviewed by compliance; satisfies the proof_of_address capability once approved.
source_of_wealth_documents?array<>Documents evidencing the customer's source of wealth (PDF, JPEG, PNG or HEIC, up to 5MB each). Held by Stables and reviewed by compliance; satisfies the source_of_wealth capability once approved.
id_documents?array<>Documents of the applicant
selfie_photo?Selfie photo of the applicant
reason_for_use?stringCustomer's self-declared intended use of the service. Held by Stables and reviewed by compliance; grants the reason_for_use capability once approved.
age_risk_acknowledged?booleanCustomer acknowledges age-related vulnerability and the risks of transacting in crypto. Held by Stables and reviewed by compliance; grants the age_risk_acknowledgement capability once approved.
financial_profile?Self-declared financial profile. Required for the usd_virtual_account entitlement, whose provider treats expected monthly payment volume as mandatory.
account_purpose?stringWhat the customer will use Stables for. Held by Stables; grants the account_purpose capability with base verification (straight away once it is approved).
"PERSONAL_OR_LIVING_EXPENSES""RECEIVE_SALARY""PAYMENTS_TO_FRIENDS_OR_FAMILY_ABROAD""PURCHASE_GOODS_AND_SERVICES""RECEIVE_PAYMENTS_FOR_GOODS_AND_SERVICES""INVESTMENT_PURPOSES""PROTECT_WEALTH""CHARITABLE_DONATIONS""OTHER"account_purpose_other?stringFree-text explanation when account_purpose is OTHER
1 <= lengthexpected_monthly_volume?stringExpected monthly volume in USD, as a band: 0_9999 (under $10,000), 10000_49999, 50000_99999, 100000_249999, 250000_999999, 1000000_plus ($1,000,000+). Held by Stables; grants the expected_monthly_volume capability with base verification (straight away once it is approved).
"0_9999""10000_49999""50000_99999""100000_249999""250000_999999""1000000_plus"occupation?stringThe customer's occupation as a standardised code (SOC 2018 based), e.g. 132011 for accountant and auditor. Must be one of the accepted codes. Held by Stables; grants the occupation_code capability with base verification (straight away once it is approved).
annual_income?stringAnnual income in USD, as a band: 0_24999 (under $25,000), 25000_49999, 50000_99999, 100000_249999, 250000_499999, 500000_999999, 1000000_plus ($1,000,000+). Held by Stables; grants the annual_income capability with base verification (straight away once it is approved).
"0_24999""25000_49999""50000_99999""100000_249999""250000_499999""500000_999999""1000000_plus"ttl_in_secs?integerTime-to-live for the KYC link in seconds (default: 1800)
0 < value <= 9007199254740991redirect?Custom redirect URLs for KYC completion
verification_type?stringStep-up verification or action type. Omit to use the customer's base KYC level (INDIVIDUAL_BASE / BUSINESS_BASE). age_risk is deprecated: submit reason_for_use and age_risk_acknowledged through PATCH /customer/:customerId instead.
"liveness""age_risk""passport""source_of_wealth""proof_of_address"Default Response
application/json- response
customer_id*CustomerIdCustomer UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidkyc_link*stringURL for customer to complete KYC process
uricustomer_created*booleanFalse when an existing customer with this email was reused instead of created. Fields supplied for an existing customer are ignored.
curl -X POST 'https://api.sandbox.stables.money/api/v1/customer/verification/link' \ -H 'idempotency-key: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{ "customer_type": "individual"}'{ "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e", "kyc_link": "http://example.com", "customer_created": true}