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

# CashSettlement

> Prestação de contas de pagamentos em dinheiro

`CashSettlement` registra a prestação de contas de dinheiro recebido em vendas que confirmam pagamento em espécie. Ele agrupa pagamentos `CASH` por cooperativa, período e recorte operacional opcional, sem persistir valores calculáveis como valor esperado ou diferença.

## Campos

| Campo                 | Tipo                   | Descrição                                                         |
| --------------------- | ---------------------- | ----------------------------------------------------------------- |
| `cashSettlementId`    | `UUID`                 | Identificador único                                               |
| `cooperativeId`       | `UUID`                 | Cooperativa beneficiária dos pagamentos conciliados               |
| `transportOperatorId` | `UUID?`                | Permissionário usado como recorte do fechamento, quando aplicável |
| `periodStart`         | `DateTime`             | Início do período conciliado                                      |
| `periodEnd`           | `DateTime`             | Fim do período conciliado                                         |
| `declaredAmount`      | `Int`                  | Valor em centavos declarado                                       |
| `receivedAmount`      | `Int?`                 | Valor em centavos recebido ou conferido pela operação             |
| `status`              | `CashSettlementStatus` | Status da prestação de contas                                     |
| `submittedBy`         | `UUID?`                | Usuário que enviou a prestação de contas                          |
| `submittedAt`         | `DateTime?`            | Data de envio                                                     |
| `reviewedBy`          | `UUID?`                | Usuário que aprovou ou rejeitou a prestação de contas             |
| `reviewedAt`          | `DateTime?`            | Data da revisã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 [Cooperative](/data-modelling/tenant/cooperative) por `cooperativeId`.
* Relaciona-se com [TransportOperator](/data-modelling/tenant/transport-operator) por `transportOperatorId`, quando o fechamento é recortado por permissionário.
* Relaciona-se com múltiplos [Payment](/data-modelling/billing/payment) por `Payment.cashSettlementId`.
* A prestação de contas não persiste `driverId`; o usuário responsável entra por auditoria (`submittedBy`, `createdBy`, `reviewedBy`).

## Regras de Negócio

* A prestação de contas agrupa pagamentos com `method = CASH` e `status = PAID`.
* O pagamento em dinheiro fica confirmado para o Customer no momento em que o dinheiro é aceito; a prestação de contas é um processo financeiro posterior.
* `declaredAmount` é informado pelo responsável pelo fechamento ou pela operação.
* `receivedAmount` é preenchido quando a operação confere ou recebe o dinheiro.
* O valor esperado é derivado dos Payments vinculados ao fechamento e não deve ser persistido.
* A diferença entre valor esperado, declarado e recebido é derivada em consulta e não deve ser persistida.
* Payments vinculados ao fechamento devem pertencer à mesma cooperativa e janela operacional do settlement.
* Quando `transportOperatorId` for preenchido, todos os pagamentos vinculados devem pertencer ao mesmo permissionário no contexto do Ticket/Trip.
* Aprovar ou rejeitar a prestação de contas não altera silenciosamente o status dos Payments nem dos Tickets já emitidos.
* Uma prestação rejeitada exige correção, novo fechamento ou tratativa operacional auditável.

## Enums

### CashSettlementStatus

| Valor       | Descrição                                             |
| ----------- | ----------------------------------------------------- |
| `OPEN`      | Fechamento em preparação                              |
| `SUBMITTED` | Prestação enviada para conferência                    |
| `APPROVED`  | Prestação aprovada pela operação                      |
| `REJECTED`  | Prestação rejeitada por divergência ou inconsistência |
| `CANCELED`  | Fechamento cancelado antes da aprovação               |

## Example

```json theme={null}
{
  "cashSettlementId": "01981264-9aa0-7d18-a4a4-3b9a9a3a1c13",
  "cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
  "transportOperatorId": "01980d30-6a3c-7a42-9182-17ad6324d3aa",
  "periodStart": "2026-07-08T08:00:00.000Z",
  "periodEnd": "2026-07-08T18:00:00.000Z",
  "declaredAmount": 18600,
  "receivedAmount": 18600,
  "status": "APPROVED",
  "submittedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "submittedAt": "2026-07-08T18:20:00.000Z",
  "reviewedBy": "0197a806-7a50-7d8d-b2ea-07748f4e38f7",
  "reviewedAt": "2026-07-08T18:45:00.000Z",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-08T18:20:00.000Z",
  "updatedBy": "0197a806-7a50-7d8d-b2ea-07748f4e38f7",
  "updatedAt": "2026-07-08T18:45:00.000Z"
}
```
