> ## 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.

# CompanyCreditPurchase

> Compra de créditos corporativos feita pela empresa junto à master/MOB

`CompanyCreditPurchase` registra a compra de créditos feita por uma [Company](/data-modelling/tenant/company) junto à master/MOB/BKO.

## Campos

| Campo                     | Tipo                          | Descrição                                              |
| ------------------------- | ----------------------------- | ------------------------------------------------------ |
| `companyCreditPurchaseId` | `UUID`                        | Identificador único                                    |
| `companyCreditAccountId`  | `UUID`                        | Conta corporativa impactada                            |
| `organizationId`          | `UUID`                        | Organização da Company                                 |
| `companyId`               | `UUID`                        | Company compradora                                     |
| `purchasedByUserId`       | `UUID?`                       | Usuário da Company que solicitou a compra              |
| `approvedByUserId`        | `UUID?`                       | Usuário ou processo que incorporou a compra ao saldo   |
| `code`                    | `String`                      | Código legível da compra                               |
| `amount`                  | `Int`                         | Valor comprado em centavos                             |
| `externalProvider`        | `String?`                     | Provedor externo de pagamento, quando aplicável        |
| `externalProviderId`      | `String?`                     | Identificador externo da cobrança, quando aplicável    |
| `status`                  | `CompanyCreditPurchaseStatus` | Status da compra                                       |
| `paidAt`                  | `DateTime?`                   | Data em que a compra foi paga                          |
| `approvedAt`              | `DateTime?`                   | Data de aprovação                                      |
| `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                             |

## Relacionamentos

* Relaciona-se com [CompanyCreditAccount](/data-modelling/credit-grant/company-credit-account).
* Relaciona-se com [Company](/data-modelling/tenant/company).
* Relaciona-se com [Organization](/data-modelling/tenant/organization).
* Relaciona-se com [User](/data-modelling/identity/user), quando houver solicitante ou aprovador.

## Regras de Negócio

* Representa a compra de crédito da master/MOB/BKO pela Company.
* A compra começa como `PENDING`.
* A cobrança é criada no gateway para a conta master/BKO.
* `PAID` indica pagamento confirmado pelo provider, mas ainda não é a posição final de saldo.
* `APPROVED` é o estado que incorpora o valor em [CompanyCreditAccount](/data-modelling/credit-grant/company-credit-account).
* Quando a compra fica `APPROVED`, o valor aumenta `purchasedAmount` e `availableAmount` na CompanyCreditAccount.
* A compra não cria ticket e não se vincula a cooperativa específica.
* Créditos comprados ficam disponíveis para a Company distribuir aos funcionários.
* `amount` é armazenado em centavos.
* O par `externalProvider + externalProviderId` deve ser único quando existir cobrança externa.
* `approvedByUserId` pode ficar `null` quando a incorporação for automática após confirmação do gateway.
* `approvedAt` deve ser preenchido quando a compra for incorporada ao saldo.
* Compra `REJECTED` ou `CANCELED` não deve aumentar saldo.
* Se uma compra paga for cancelada antes de virar saldo, o estorno financeiro fica vinculado ao provider externo por `externalProviderId`.
* O comprovante operacional da compra é o próprio registro com `code`, `amount`, provider, timestamps e status.

## Enums

### CompanyCreditPurchaseStatus

| Valor      | Descrição                                             |
| ---------- | ----------------------------------------------------- |
| `PENDING`  | Compra solicitada e aguardando pagamento ou aprovação |
| `PAID`     | Compra paga                                           |
| `APPROVED` | Compra aprovada e incorporada ao saldo corporativo    |
| `REJECTED` | Compra rejeitada                                      |
| `CANCELED` | Compra cancelada                                      |

## Example

```json theme={null}
{
  "companyCreditPurchaseId": "01980d3b-5572-720b-a381-60129cd8b20b",
  "companyCreditAccountId": "01980d3a-4ae8-7d72-b569-5d6526736dd1",
  "organizationId": "0197a801-1690-7590-b3cf-19599b9be3e4",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "purchasedByUserId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "approvedByUserId": "0197a806-7a50-7d8d-b2ea-07748f4e38f7",
  "code": "CCP-20260704-0001",
  "amount": 1000000,
  "externalProvider": "billing_interface",
  "externalProviderId": "pay_credit_4a817c90",
  "status": "APPROVED",
  "paidAt": "2026-07-04T09:30:00.000Z",
  "approvedAt": "2026-07-04T10:00:00.000Z",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T09:00:00.000Z",
  "updatedBy": "0197a806-7a50-7d8d-b2ea-07748f4e38f7",
  "updatedAt": "2026-07-04T10:00:00.000Z"
}
```
