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

# order.paid

> Para quem vende pelo bot no Discord e quer sincronizar estoque ou CRM.

Este evento é específico da loja no Discord. Quando um pedido feito pelo bot é pago, a
gente avisa a URL configurada na conta.

> [!NOTE]
>
> Diferente do PIX e do cartão, aqui não existe `callbackUrl` por cobrança. Vale a [URL da
> conta](https://docs.purin.cash/webhooks/visao-geral.md), configurada uma vez em [Dashboard → Equipe & API →
> Developer API](https://purin.cash/dashboard/api), para todos os pedidos do bot.

```json theme={null}
POST https://minhaloja.com/webhooks/purincash
Content-Type: application/json
X-Webhook-Signature: a3f5b8c2e1d4f7a9b6c8d2e5f1a4b7c9d2e5f8a1b4c7d0e3f6a9b2c5d8e1f4a7
X-Webhook-Id: order.paid:665f1a2b3c4d5e6f7a8b9c0d

{
  "event": "order.paid",
  "orderId": "665f1a2b3c4d5e6f7a8b9c0d",
  "orderCode": "ORD-7K3B9X",
  "total": 49.90,
  "paidAt": "2026-03-18T12:05:00.000Z",
  "acquirer": "...",
  "payer": "JOAO DA SILVA",
  "cpf": "12345678909",
  "bank": "077 - Banco Inter"
}
```

## Campos

**event** `string` *required*

Sempre `order.paid`.

**orderId** `string` *required*

Identificador interno do pedido.

**orderCode** `string` *required*

Código curto do pedido, o mesmo que aparece para o comprador no Discord.

**total** `number` *required*

Valor total em reais, decimal.

**paidAt** `string` *required*

Data e hora da confirmação, em ISO 8601.

**acquirer** `string`

Identificador interno de qual processadora tratou o pagamento. Pode mudar sem aviso, então
não construa lógica em cima dele.

## Quem pagou

Os três campos abaixo são os mesmos de [`charge.paid` e `payment.paid`](https://docs.purin.cash/webhooks/pagamentos),
com o mesmo formato. Eles vêm do PIX e dependem do banco de origem: instituição que não
informa o dado faz o campo ser **omitido** do corpo, nunca enviado vazio ou como `null`.

**payer** `string`

Nome de quem pagou, como consta no banco.

**cpf** `string`

CPF ou CNPJ de quem pagou, só com os dígitos: `12345678909`. Sem pontuação, para bater
direto com o que você guarda do seu lado. Use para conciliar com o extrato bancário e
para responder [disputa](https://docs.purin.cash/guias/disputas.md).

Alguns bancos de origem mandam o documento censurado. Nesse caso ele vai como veio,
com os asteriscos na posição em que o banco os pôs (`***456789**`), e `cpfMasked`
chega junto. Nunca chega um pedaço do número passando por número inteiro.

**cpfMasked** `boolean`

`true` quando o `cpf` veio censurado do banco de origem. Ausente quando o número chegou
completo.

**bank** `string`

Banco de origem, no formato `código - nome`.

> [!WARNING]
>
> `cpf` é dado pessoal de quem pagou, e chega inteiro sempre que o banco de origem o
> informa por inteiro. Receba em HTTPS, guarde só o tempo que a sua operação precisa e
> não exponha em log de aplicação nem em tela de terceiro. A
> chave PIX, o telefone e o endereço do pagador **não** saem em webhook nenhum.

## Para que serve

> [card] Sincronizar estoque
>
> Baixar a quantidade no seu ERP ou planilha assim que a venda confirma, sem depender de
> consulta periódica.

> [card] Alimentar CRM
>
> Registrar o cliente e a compra no seu funil no momento certo.

> [card] Contabilidade
>
> Lançar a receita com data e valor exatos, em vez de exportar relatório no fim do mês.

> [card] Notificação interna
>
> Avisar a equipe no canal certo quando entra venda acima de um valor.

> [!WARNING]
>
> Este evento avisa que o pedido foi pago. Ele não substitui o webhook de
> [pagamento](https://docs.purin.cash/webhooks/pagamentos.md) nas cobranças criadas pela API: são fluxos separados,
> com origens diferentes.

As garantias são as mesmas: assinatura HMAC, `X-Webhook-Id` para deduplicar, timeout de 5
segundos e reentrega com backoff.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.