Skip to main content
POST
/
v1
/
submit
/
create-individual-account
Create individual account
curl --request POST \
  --url https://api.example.com/v1/submit/create-individual-account \
  --header 'Content-Type: application/json' \
  --header 'X-Pubkey: <x-pubkey>' \
  --header 'X-Pubkey, X-Timestamp, X-Signature: <api-key>' \
  --header 'X-Signature: <x-signature>' \
  --header 'X-Timestamp: <x-timestamp>' \
  --data '
{
  "userInfo": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "john.smith@example.com",
    "middleName": "William",
    "phone": "+33 123 456 789",
    "birthDate": "1990-01-01",
    "nationality": "FRA",
    "residentialAddress": {
      "streetLine1": "33 Rue La Fayette",
      "city": "Paris",
      "postalCode": "75009",
      "country": "FRA",
      "streetLine2": "WeWork",
      "state": "IDF"
    },
    "socialSecurityNumber": "123-45-6789",
    "profilePictureUrl": "<string>"
  },
  "byzantineTermsSignedAt": "2025-11-19T21:14:58.328Z",
  "additionalUserInfo": {
    "employmentStatus": "employed",
    "expectedMonthlyPaymentsUsd": "5000_9999",
    "sourceOfFunds": "salary",
    "mostRecentOccupation": "151252"
  },
  "verificationDocuments": [
    {
      "documentType": "passport",
      "issuingCountry": "FRA",
      "document": "data:image/png;base64,iVBORw0lFTkSuQmCC...",
      "documentNumber": "FR1234567890",
      "description": "Additional supporting document"
    }
  ],
  "authenticators": [
    {
      "authenticatorName": "<string>",
      "challenge": "<string>",
      "attestation": {
        "credentialId": "<string>",
        "clientDataJson": "<string>",
        "attestationObject": "<string>",
        "transports": [
          "AUTHENTICATOR_TRANSPORT_BLE"
        ]
      }
    }
  ]
}
'
{
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "accountId": "550e8400-e29b-41d4-a716-446655440000",
  "verificationStatus": "active",
  "userInfo": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "john.smith@example.com",
    "middleName": "William",
    "phone": "+33 123 456 789",
    "birthDate": "1990-01-01",
    "nationality": "FRA",
    "residentialAddress": {
      "streetLine1": "33 Rue La Fayette",
      "city": "Paris",
      "postalCode": "75009",
      "country": "FRA",
      "streetLine2": "WeWork",
      "state": "IDF"
    },
    "socialSecurityNumber": "123-45-6789",
    "profilePictureUrl": "<string>"
  },
  "byzantineTermsSignedAt": "2025-11-19T21:14:58.328Z",
  "isPasskeyActivated": "false",
  "isOtpActivated": "true",
  "additionalUserInfo": {
    "employmentStatus": "employed",
    "expectedMonthlyPaymentsUsd": "5000_9999",
    "sourceOfFunds": "salary",
    "mostRecentOccupation": "151252"
  },
  "verificationDocuments": [
    {
      "documentType": "passport",
      "issuingCountry": "FRA",
      "documentId": "830c219c-d197-451d-b879-77936a80c452",
      "documentNumber": "FR1234567890",
      "description": "Additional supporting document",
      "warnings": [
        "<string>"
      ],
      "errors": [
        "<string>"
      ]
    }
  ],
  "missingDocuments": [
    "<string>"
  ]
}

Authorizations

X-Pubkey, X-Timestamp, X-Signature
string
header
required

Headers

X-Pubkey
string
required

Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd

X-Timestamp
string
required

Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826

X-Signature
string
required

ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: {timestamp}{METHOD}{path_and_query}{json_body}. Example: 0x3045022100...

Body

application/json

Byzantine individual account creation body

User to be created. The vast majority of fields are required in order to complete the identity verification process.

userInfo
object
required

Personal information about the user required for identity verification.

byzantineTermsSignedAt
string
required

The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see individual account creation - KYC.

Example:

"2025-11-19T21:14:58.328Z"

additionalUserInfo
object

Additional user information for KYC. This information is required for users considered high risk or over 60 years of age.

verificationDocuments
object[] | null
authenticators
object[] | null

A list of Authenticators.

Response

Individual account created successfully

Response body for creating a Byzantine user

userId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

accountId
string<uuid>
required

A UUID string

Example:

"550e8400-e29b-41d4-a716-446655440000"

verificationStatus
enum<string>
required

The identity verification status of the user.

Available options:
not_started,
init,
under_review,
waiting_for_information,
active,
rejected,
inactive
Example:

"active"

userInfo
object
required

Personal information about the user required for identity verification.

byzantineTermsSignedAt
string
required

The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see individual account creation - KYC.

Example:

"2025-11-19T21:14:58.328Z"

isPasskeyActivated
boolean
required

An indicator showing whether passkey authentication is active for this user. For more information, see wallet authentication.

Example:

"false"

isOtpActivated
boolean
required

An indicator showing whether OTP authentication is active for this user. For more information, see wallet authentication.

Example:

"true"

additionalUserInfo
object

Additional user information for KYC. This information is required for users considered high risk or over 60 years of age.

verificationDocuments
object[] | null
missingDocuments
string[] | null

List of missing required verification documents. Present only if not all required documents have been submitted.