Create customer
Changed onSubmit an individual participant to the zerohash ecosystem. This is the single entry point for onboarding a natural-person customer — regardless of how they will use the platform (trading, settlement, shoppers, payouts, and so on). zerohash runs the required identity, KYC, and compliance screening on the submitted profile and returns a participant_code that identifies the customer across all other endpoints.
Available only to platforms leveraging zerohash for customer onboarding. Contact us for more information on enabling it.
The variants below are sample requests, not rigid schemas. They illustrate common onboarding flows so you can start from the closest match — but the exact fields you send depend on your platform configuration, region, and participant type. Many platforms have their own flow and combine fields drawn from the Customer - All accepted fields variant, which lists the full superset of everything this endpoint accepts. Treat the samples as a starting point rather than an exhaustive or one-size-fits-all list.
💡 Use the Examples dropdown on the request body to load a ready-made payload for a flow, then add or remove fields to fit your integration.
Request
- Base URLhttps://api.cert.zerohash.com
- URLhttps://api.cert.zerohash.com/participants/customers/new
- AuthAPI key in header X-SCX-API-KEY and API key in header X-SCX-PASSPHRASE
Headers
HMAC-SHA256 signature of the request, base64-encoded. See the Authentication guide for the exact signing formula.
Current Unix timestamp in seconds. Must be within 60 seconds of server time or the request is rejected.
Request body
Example request
{
"first_name": "John",
"middle_name": "Middle",
"last_name": "Smith",
"email": "test@example.com",
"phone_number": "+15557778888",
"place_of_birth": {
"country_code": "NL",
"place_name": "Amsterdam"
},
"date_of_birth": "1985-09-02",
"address_one": "123 Main St.",
"address_two": "Suite 1000",
"city": "Chicago",
"postal_code": "12345",
"tax_id": "123456789",
"id_number": "123456789",
"id_issuing_date": "2020-12-16",
"id_expiration_date": "2026-12-25",
"signed_timestamp": 1603378501286,
"sanction_screening_timestamp": 1603378501286,
"jurisdiction_code": "DE-BE",
"kyc": "pass",
"kyc_timestamp": 1603378501286,
"sanction_screening": "pass",
"idv": "pass",
"liveness_check": "pass",
"employment_status": "full_time",
"industry": "adult_entertainment",
"source_of_funds": "salary",
"salary": "under_3500",
"savings_and_investments": "under_10000",
"tx_equivalent_annual_volume": "25k_to_100k",
"tx_frequency_of_use": "up_to_12",
"tx_type_of_service": [
"buy_crypto",
"sell_crypto"
],
"tx_relationship_term_with_service": "long_term",
"tx_relationship_term_with_service_other_explanation": "some free form explanation here in case of other type of tx_relationship_term_with_service",
"signed_agreements": [
{
"type": "user_agreement",
"region": "eu",
"signed_timestamp": 1603378501286
}
],
"self_certification_timestamp": 1667504636159,
"tax_residence": {
"jurisdiction_code": "PT-11"
},
"tin_jurisdiction_reason": "working_abroad",
"proof_of_address_coordinates": {
"latitude": "N 51d 30.000000m 40.190000",
"longitude": "W 0d 4.100000m 59.940000"
},
"metadata": {}
}Response
Successfully created customer participant. Returns the created resource with generated IDs and timestamps.
Example response
{
"message": {
"first_name": "John",
"middle_name": "Middle",
"last_name": "Smith",
"former_name": "Whale",
"email": "test@example.com",
"phone_number": "+15557778888",
"address_one": "123 Main St.",
"address_two": "Suite 1000",
"country": "USA",
"city": "Chicago",
"zip": "12345",
"postal_code": "12345",
"jurisdiction_code": "US-IL",
"citizenship_code": "US",
"date_of_birth": "1985-09-02",
"tax_id": "123456789",
"id_number_type": "us_passport",
"id_number": "123456789",
"signed_timestamp": 1603378501286,
"metadata": {},
"kyc": "pass",
"kyc_timestamp": 1603378501286,
"onboarding_profile": "kyc_track",
"onboarded_location": "US-FL",
"sanction_screening": "pass",
"sanction_screening_timestamp": 1603378501286,
"idv": "pass",
"liveness_check": "pass",
"employment_status": "full_time",
"industry": "adult_entertainment",
"source_of_funds": "salary",
"signed_agreements": [
{
"type": "user_agreement",
"region": "us",
"signed_timestamp": 1603378501286
}
],
"salary": "under_3500",
"savings_and_investments": "under_10000",
"investor_category": "restricted",
"distribution_channel": "XYZ",
"ip_address": "10.132.5.50",
"place_of_birth": {
"country_code": "NL",
"place_name": "Amsterdam"
},
"id_expiration_date": "2026-12-25",
"id_issuing_date": "2020-12-16",
"tx_equivalent_annual_volume": "25k_to_100k",
"tx_frequency_of_use": "up_to_12",
"tx_type_of_service": [
"buy_crypto",
"sell_crypto"
],
"tx_relationship_term_with_service": "long_term",
"tx_relationship_term_with_service_other_explanation": "some free form explanation here in case of other type of tx_relationship_term_with_service",
"gender": "male",
"purpose_of_transactions": "payments_personal",
"purpose_of_transactions_other_explanation": "some free form explanation here in case of other type of purpose_of_transactions",
"expected_monthly_transaction_count": "between_11_and_100",
"expected_usd_equivalent_daily_volume": "between_1001_and_10000",
"gross_annual_salary_amount": "10000",
"self_certification_timestamp": 1667504636159,
"tax_residence": {
"jurisdiction_code": "PT-11"
},
"tin_jurisdiction_reason": "working_abroad",
"additional_tax_residences": [
{
"jurisdiction_code": "US-IL"
}
],
"proof_of_address_coordinates": {
"latitude": "51.511164",
"longitude": "-0.083317"
},
"is_w_form_certified": true,
"w_form_certification": 1667504636159,
"signature": "John Doe",
"signature_timestamp": 1667504636159,
"payee_exemption": "NONE",
"fatca_reporting_exemption": "NONE",
"is_not_subject_backup_withholding": true,
"platform_code": "XXXXXX",
"participant_code": "XXXXXX",
"status": "approved"
}
}Changes
- breaking
removed
subschema #1: EU Customersubschema #2: US Customer - Reliancesubschema #3: Non-US Citizen Customer - Reliancesubschema #4: Partially Onboarded Participantsubschema #5: Customer - All accepted fieldsfrom the request bodyoneOflist - breaking
added
subschema #3: Non-US Customer - Reliancesubschema #4: EU Customer - Relianceto theresponse propertyoneOflist for the response status - warning
added the new
Aenum value to the//response property for the response status - warning
added the new
Benum value to the//response property for the response status - warning
added the new
Cenum value to the//response property for the response status - warning
added the new
Denum value to the//response property for the response status - warning
added the new
Eenum value to the//response property for the response status - warning
added the new
Fenum value to the//response property for the response status - warning
added the new
Genum value to the//response property for the response status - warning
added the new
Henum value to the//response property for the response status - warning
added the new
Ienum value to the//response property for the response status - warning
added the new
Jenum value to the//response property for the response status - warning
added the new
Kenum value to the//response property for the response status - warning
added the new
Lenum value to the//response property for the response status - warning
added the new
Menum value to the//response property for the response status - warning
added the new
virtual_accountsenum value to the////response property for the response status - warning
added the new
virtual_accountsenum value to the////response property for the response status - info
added
subschema #1: EU Customer - Reliancesubschema #2: US Customer - Reliancesubschema #3: Non-US Customer - Reliancesubschema #4: Perishable Shopper tier 1subschema #5: Transferable Shopper tier 1subschema #6: Transferable Shopper tier 2subschema #7: Transferable Shopper tier 3subschema #8: Transferable Shopper tier 4subschema #9: Non-Transferable Shopper tier 1subschema #10: Non-Transferable Shopper tier 2subschema #11: Non-Transferable Shopper tier 3subschema #12: Non-Transferable Shopper tier 4subschema #13: Customer - All accepted fieldsto the request bodyanyOflist - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/b_notice_receiptdeprecated - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/fatca_reporting_exemptiondeprecated - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/is_w_form_certifieddeprecated - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/payee_exemptiondeprecated - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/signaturedeprecated - info
response property
message/oneOf[subschema #1: Customer - All accepted fields]/w_form_certificationdeprecated - info
removed the
1enum value from the//response property for the response status - info
removed the
10enum value from the//response property for the response status - info
removed the
11enum value from the//response property for the response status - info
removed the
12enum value from the//response property for the response status - info
removed the
13enum value from the//response property for the response status - info
removed the
2enum value from the//response property for the response status - info
removed the
3enum value from the//response property for the response status - info
removed the
4enum value from the//response property for the response status - info
removed the
5enum value from the//response property for the response status - info
removed the
6enum value from the//response property for the response status - info
removed the
7enum value from the//response property for the response status - info
removed the
8enum value from the//response property for the response status - info
removed the
9enum value from the//response property for the response status - info
removed
subschema #3: Non-US Citizen Customer - Reliancesubschema #4: EU Customerfrom theresponse propertyoneOflist for the response status
- breaking