> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Customer

> Perfil de passageiro — documento, dados pessoais e identidade no gateway de billing

## Campos

| Campo                | Tipo           | Descrição                                                        |
| -------------------- | -------------- | ---------------------------------------------------------------- |
| `customerId`         | `UUID`         | Identificador único                                              |
| `userId`             | `UUID`         | Referência ao usuário                                            |
| `externalProvider`   | `String`       | Identificador lógico do provider de billing usado pela interface |
| `externalProviderId` | `String`       | Identificador do customer no provedor de billing                 |
| `document`           | `String`       | Número do documento                                              |
| `documentType`       | `DocumentType` | Tipo do documento                                                |
| `birthDate`          | `Date?`        | Data de nascimento                                               |
| `phoneIso`           | `String`       | Código ISO do país do telefone                                   |
| `phoneDdi`           | `String`       | DDI do telefone                                                  |
| `phoneNumber`        | `String`       | Número do telefone                                               |
| `phoneVerified`      | `Boolean`      | Indica se o telefone foi verificado. Default: `false`            |
| `createdBy`          | `UUID?`        | Usuário que criou o registro, quando aplicável                   |
| `createdAt`          | `DateTime`     | Data de criação                                                  |
| `updatedBy`          | `UUID?`        | Usuário que fez a última atualização, quando aplicável           |
| `updatedAt`          | `DateTime`     | Data da última atualização                                       |
| `deletedBy`          | `UUID?`        | Usuário que removeu o registro, quando aplicável                 |
| `deletedAt`          | `DateTime?`    | Data de remoção                                                  |

## Relacionamentos

* Relaciona-se com [User](/data-modelling/identity/user) (1:1)
* Relaciona-se com múltiplos [CustomerAddress](/data-modelling/identity/customer-address)
* Relaciona-se com múltiplos [Employee](/data-modelling/tenant/employee), quando o cliente também é funcionário de uma Company
* Relaciona-se com múltiplos [Order](/data-modelling/sales/order) (como comprador)
* Relaciona-se com múltiplas [PassengerBenefitRequest](/data-modelling/benefits/passenger-benefit-request), quando solicita benefício
* Relaciona-se com múltiplos [BenefitUsageHistory](/data-modelling/benefits/benefit-usage-history), quando recebe benefício aplicado a um pedido
* Relaciona-se com múltiplos [PaymentMethod](/data-modelling/billing/payment-method)
* Relaciona-se com múltiplos [CreditGrant](/data-modelling/credit-grant/credit-grant), quando recebe crédito de uma Company
* Relaciona-se com múltiplos [PromotionalUsageHistory](/data-modelling/promotion/promotional-usage-history), quando promoções são aplicadas em compras
* Relaciona-se com múltiplos [TripReview](/data-modelling/operations/trip-review)

## Regras de Negócio

* Cada `User` possui no máximo um `Customer` (relação 1:1). O `Customer` representa o **perfil de passageiro** — quem compra passagens.
* Quando o mesmo `User` possui Employee em uma Company, esse Customer pode receber créditos concedidos por regra de funcionário nessa Company.
* Ao criar o `Customer`, o sistema registra um customer correspondente no provider de billing e guarda `externalProvider` + `externalProviderId`.
* O `document` é obrigatório no cadastro do Customer e deve ser único.
* O endereço inicial é criado junto com o `Customer` e marcado como `isDefault = true`.

## Enums

### DocumentType

| Valor  | Descrição                            |
| ------ | ------------------------------------ |
| `CPF`  | Cadastro de Pessoa Física            |
| `CNPJ` | Cadastro Nacional da Pessoa Jurídica |
| `RG`   | Registro Geral                       |

## Example

```json theme={null}
{
  "customerId": "0197a7f6-4d36-7c0a-a7cb-54fcb33a3148",
  "userId": "0197a7f5-2a88-7c1e-9b65-1f6d8f3b3a10",
  "externalProvider": "billing_interface",
  "externalProviderId": "cus_8f3b2a91",
  "document": "12345678909",
  "documentType": "CPF",
  "birthDate": "1992-04-18",
  "phoneIso": "BR",
  "phoneDdi": "55",
  "phoneNumber": "11987654321",
  "phoneVerified": true,
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T12:00:10.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T12:00:10.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
