3. Verify the account (KYC)

Without verified KYC, the business stays in test: sk_live_ keys cannot collect (422 "account not KYC verified"). KYC takes three calls per document, with files going straight to secure storage.

File status

GET/kycSession token

File status and documents still missing.

Response 200
{
  "success": true,
  "data": {
    "status": "none",
    "status_label": "Non vérifié",
    "has_live_access": false,
    "can_submit_documents": true,
    "requirements": {
      "identity": [
        "id_front",
        "passport"
      ],
      "...": "..."
    },
    "missing_groups": [
      "identity",
      "niu"
    ],
    "documents": []
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}

Account statuses: none (nothing submitted), pending (under review), verified (live access), suspended. The exact list of required documents is in requirements / missing_groups.

Send a document (3 calls)

POST/kyc/upload-urlSession token

1. Requests a temporary upload address (valid 15 min) for a document.

Request body
{
  "document_type": "business_registration",
  "content_type": "application/pdf"
}
Response 200
{
  "success": true,
  "data": {
    "upload_url": "https://...",
    "document_key": "kyc/2/business_registration/550e...pdf",
    "expires_in": 900
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}

2. Upload the file: PUT {upload_url} with the same Content-Type, the body being the file.

POST/kyc/documentsSession token

3. Confirm the upload:

Request body
{
  "document_type": "business_registration",
  "document_key": "kyc/2/business_registration/550e...pdf",
  "expires_at": "2030-05-14"
}
Response 201
{
  "success": true,
  "data": {
    "document_type": "business_registration",
    "document_type_label": "Registre de commerce",
    "status": "pending",
    "status_label": "En attente de vérification",
    "rejection_reason": null,
    "requires_expiry": false,
    "created_at": "2026-11-02T14:30:00Z"
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}

Document rules

  • Document types: id_front, id_back, passport, location_plan, niu_certificate (individual); business_registration, tax_compliance, manager_id_front, manager_id_back, manager_passport (business); merchant_contract, bank_domiciliation_certificate (both); address_proof, residence_proof, additional_financial_documents (optional).
  • Formats: image/jpeg, image/png, application/pdf. expires_at is only required for identity documents (requires_expiry: true).
  • Each document's state: pending, approved, rejected (with rejection_reason). An approved document cannot be overwritten; a pending one is replaced by a new upload. Delete a pending document: DELETE /kyc/documents/{id}.
  • Errors: 422 if the type or format is invalid, if the file was not uploaded before confirming, or if the document is already approved.