# Customer created

Fires when the customer reaches `pending_kyc` status after async enrichment completes.
Includes the full enriched data (`trading_name`, KYC requirements).
This is the moment to start collecting KYC documents from the customer.

Endpoint: POST customer.created
Version: 2026-03-01
Security: webhookSignature

## Security:

  - `webhookSignature` (unknown)
    apiKey in header webhook-signature

## Header parameters:

  - `webhook-id` (string, required)
    Unique delivery ID. Use as idempotency key to deduplicate events

  - `webhook-timestamp` (integer, required)
    Unix timestamp of the delivery attempt. Reject if older than 5 minutes (replay protection)

  - `webhook-signature` (string, required)
    HMAC-SHA256 signature(s) for verification per Standard Webhooks spec

## Request fields (application/json):

  - `id` (string, required)
    Unique webhook event identifier
    Example: evt_550e8400e29b41d4a716446655440000

  - `type` (string, required)
    Event type
    Enum: "customer.created"

  - `api_version` (string, required)
    API version used to generate this event
    Example: 2026-03-01

  - `created_at` (integer, required)
    When the event was created (Unix epoch seconds)

  - `delivery_id` (string, required)
    Unique delivery attempt identifier

  - `timestamp` (integer, required)
    When the event occurred (Unix epoch seconds)

  - `data` (object)
    Created customer data

  - `data.id` (string, required)
    Unique customer identifier
    Example: cust_550e8400e29b41d4a716446655440000

  - `data.external_id` (string | null, required)

  - `data.name` (string, required)

  - `data.email` (string, required)

  - `data.phone` (string, required)

  - `data.cpf` (string, required)

  - `data.cnpj` (string | null)

  - `data.trading_name` (string, required)

  - `data.status` (string, required)
    Enum: "pending_kyc"

  - `data.kyc` (array, required)
    KYC requirements populated after enrichment

  - `data.kyc.requirement_type` (string, required)
    KYC requirement type discriminator
    Enum: "identity", "selfie", "proof_of_address", "company_document", "ei_mei_documents", "income_statement", "articles_of_association", "eireli_incorporation_statement", "email"

  - `data.kyc.requirement_id` (string, required)
    Format: `identity_{subject_id}`
    Example: identity_003XXXXXXXXXXXXXXX

  - `data.kyc.label` (string, required)
    Human-readable label.
    Example: Documento de identidade

  - `data.kyc.mandatory` (boolean, required)
    Whether this requirement must be fulfilled

  - `data.kyc.subject` (object, required)
    Identifies who the requirement is about (a person or company co-owner).

  - `data.kyc.subject.id` (string, required)
    Opaque identifier for this subject (used in `requirement_id` suffix and document uploads).
    Example: 003XXXXXXXXXXXXXXX

  - `data.kyc.subject.name` (string, required)
    Human-readable name of the subject.
    Example: Joao Silva

  - `data.kyc.subject.subject_type` (string, required)
    `applicant` — the customer themselves. `co_owner` — a director/shareholder of the company.
    Enum: "applicant", "co_owner"

  - `data.kyc.submitted` (any)
    Evidence submitted for this requirement. Absent if nothing submitted yet

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "cnh"

  - `data.kyc.submitted.attachments` (any, required)
    Physical CNH (front + back photos) or digital CNH (single PDF)

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Physical CNH attachment type
    Enum: "front", "back"

  - `data.kyc.submitted.attachments.submitted` (boolean, required)
    `true` if this slot has been filled

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Digital CNH attachment type
    Enum: "file"

  - `data.kyc.submitted.review_status` (string, required)
    `pending` — awaiting review. `accepted` — approved. `rejected` — partner must resubmit.
    Enum: "pending", "accepted", "rejected"

  - `data.kyc.submitted.review_reason` (string | null, required)
    Explanation when `review_status` is `rejected`. `null` otherwise.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "rg"

  - `data.kyc.submitted.attachments` (array, required)
    RG — front and back photos

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    RG attachment type
    Enum: "front", "back"

  - `data.kyc.requirement_id` (string, required)
    Format: `selfie_{subject_id}`
    Example: selfie_003XXXXXXXXXXXXXXX

  - `data.kyc.label` (string, required)
    Human-readable requirement label
    Example: Selfie

  - `data.kyc.mandatory` (boolean, required)
    Whether this requirement is mandatory

  - `data.kyc.submitted` (object)
    Selfie evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "selfie"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted selfie photo

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Type of submitted attachment
    Enum: "photo"

  - `data.kyc.requirement_id` (string, required)
    Format: `proof_of_address_{subject_id}`
    Example: proof_of_address_003XXXXXXXXXXXXXXX

  - `data.kyc.submitted` (object)
    Proof of address evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "proof_of_address"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted proof of address file

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Type of submitted attachment
    Enum: "file"

  - `data.kyc.requirement_id` (string, required)
    Fixed requirement identifier
    Example: company_document_001XXXXXXXXXXXXXXX

  - `data.kyc.submitted` (object)
    Company document evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "ccmei"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted CCMEI file

  - `data.kyc.requirement_id` (string, required)
    Fixed requirement identifier
    Enum: "ei_mei_documents"

  - `data.kyc.submitted` (object)
    EI/MEI evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "ei_mei"

  - `data.kyc.submitted.attachments` (array, required)
    Both attachments are required

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Type of submitted attachment
    Enum: "ei_registration_requirement", "ccmei"

  - `data.kyc.requirement_id` (string, required)
    Fixed requirement identifier
    Enum: "income_statement"

  - `data.kyc.submitted` (object)
    Income statement evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "income_statement"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted revenue statement file

  - `data.kyc.requirement_id` (string, required)
    Fixed requirement identifier
    Enum: "articles_of_association"

  - `data.kyc.submitted` (object)
    Articles of association evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "articles_of_association"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted articles of association file

  - `data.kyc.requirement_id` (string, required)
    Fixed requirement identifier
    Enum: "eireli_incorporation_statement"

  - `data.kyc.submitted` (object)
    EIRELI incorporation statement evidence.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "eireli_incorporation_statement"

  - `data.kyc.submitted.attachments` (array, required)
    Submitted EIRELI incorporation statement file

  - `data.kyc.requirement_id` (string, required)
    Format: `email_{subject_id}`
    Example: email_003XXXXXXXXXXXXXXX

  - `data.kyc.submitted` (object)
    Email verification state. No evidence_type or attachments — this is a data-field validation.

  - `data.kyc.submitted.evidence_type` (string, required)
    Type of submitted evidence
    Enum: "email"

  - `data.kyc.submitted.attachments` (array, required)
    Email submitted for CCB contract signing

  - `data.kyc.submitted.attachments.attachment_type` (string, required)
    Type of submitted attachment
    Enum: "email"

## Response 200:

  - `200` (unknown)
    Delivery confirmed

## Response 410:

  - `410` (unknown)
    Endpoint permanently disabled

## Response 429:

  - `429` (unknown)
    Rate-limiting, send rate reduced

## Response 502:

  - `502` (unknown)
    Server overload, rate reduced before retrying

## Response 504:

  - `504` (unknown)
    Gateway timeout, rate reduced before retrying

## Response 4XX:

  - `4XX` (unknown)
    Client error, failure triggers retry

## Response 5XX:

  - `5XX` (unknown)
    Server error, failure triggers retry

