# Instruções

Deverá ser um endpoint com método POST.

* Será enviado um token JWT com criptografia HS256, assinado com o `clientSecret`  fornecido ao parceiro.
* O token terá duração de 1h (apenas para referência).

Payload JWT

```typescript
{
    businessId: businessId // identificador único básico do seu negócio.
}
```

## Requisição

<mark style="color:green;">`POST`</mark> `/seuEndPoint`

**Headers**

| Name          | Value              | Description |
| ------------- | ------------------ | ----------- |
| Content-Type  | `application/json` |             |
| Authorization | `Bearer <token>`   | JWT         |

**Body**

```json
{
  "ids": {
    "businessId": "string",
    "transactionId": "string",
    "partnerTransactionId": "string",
    "afterPaymentId": "string",
    "endToEndId": "string",
    "brCode": "string",
    "gatewayId": "string",
    "hashWeb3": "string"
  },
  "transactionPayload": {
    "userId": "string",
    "userCpf": "string",
    "userPixKey": "string",
    "userWalletAddress": "string",
    "productName": "string",
    "quantity": number,
    "unitPrice": number,
    "usdtAmount": number,
    "reaisAmount": number
  },
  "transactionType": "PIX_PURCHASE",
  "transactionStatus": "COMPLETED",
  "transactionErrorType": "NONE",
  "transactionErrorMessage": "NONE"
}

```

Descrição dos campos

<details>

<summary><strong>Identificadores da transação (ids) :</strong></summary>

Sobre os campos com observação: &#x20;

<sub>Caso os campos marcoados no checkBox abaixo sejam enviados com o sufixo "-NOT-UPDATED", significa que a transação deu erro OU que o fluxo da transação não atualiza o ID, caso seja um erro virá acompanhado do</sub> <sub></sub><sub>`transactionStatus`</sub>  <sub></sub><sub>e</sub> <sub></sub><sub>`transactionErrorMessage`</sub>  <sub></sub><sub>relacionado.</sub>&#x20;

<table><thead><tr><th width="192.57147216796875" align="center">Name</th><th width="332.9993896484375" align="center">Descriptiton</th><th width="124.28570556640625" data-type="checkbox">Observação</th></tr></thead><tbody><tr><td align="center"><code>businessId</code></td><td align="center">identificador único básico do seu negócio.</td><td>false</td></tr><tr><td align="center"><code>transactionId</code></td><td align="center">identificador único da transação, fornecido pela nossa API.</td><td>false</td></tr><tr><td align="center"><code>partnerTransactionId</code></td><td align="center">identificador único da transação, fornecido pela API do parceiro.</td><td>false</td></tr><tr><td align="center"><code>afterPaymentId</code></td><td align="center">Identificador único da transação para conciliação e estornos.</td><td>true</td></tr><tr><td align="center"><code>endToEndId</code></td><td align="center">Identificador único da transação para conciliação e identificação de um pagamento PIX.</td><td>true</td></tr><tr><td align="center"><code>brCode</code></td><td align="center">Identificador único do <a href="/pages/9u3WT3KdWQBzrbN0E5YJ">qr code </a>para conciliação com o que já foi enviado anteriormente, vale lembrar que esse é o PIX copia e cola.</td><td>true</td></tr><tr><td align="center"><code>gatewayId</code></td><td align="center">Identificador único de conciliação tripla, também recebido após o pagamento do <a href="/pages/9u3WT3KdWQBzrbN0E5YJ">qr code</a>, único.</td><td>true</td></tr><tr><td align="center"><code>hashWeb3</code></td><td align="center">Identificador único de transação no blockchain.</td><td>true</td></tr></tbody></table>

</details>

<details>

<summary>Dados da transação (transactionPayload):</summary>

Sobre os campos com observação: &#x20;

<sub>Os campos marcado com observação podem ser</sub> <sub></sub><sub>`undefined`</sub>  <sub></sub><sub>por não fazer parte do fluxo da transação.</sub>

<table><thead><tr><th width="192.57147216796875" align="center">Name</th><th width="332.9993896484375" align="center">Descriptiton</th><th width="124.28570556640625" data-type="checkbox">Observação</th></tr></thead><tbody><tr><td align="center"><code>userId</code></td><td align="center">identificador único fornecido pelo parceiro para identificar de usuário pagador da transação e conciliar com a base de dados do parceiro.</td><td>false</td></tr><tr><td align="center"><code>userCpf</code></td><td align="center">cpf do pagador da transação para identificação de pagamento que foi enviado pelo parceiro. </td><td>false</td></tr><tr><td align="center"><code>userPixKey</code></td><td align="center">identificador único da transação, fornecido pela API do parceiro.</td><td>true</td></tr><tr><td align="center"><code>userWalletAddress</code></td><td align="center">Endereço BEP20 da carteira de recebimento do usuário nas transações que envolvem cripto.</td><td>true</td></tr><tr><td align="center"><code>productName</code></td><td align="center">Nome do produto ou serviço.</td><td>false</td></tr><tr><td align="center"><code>quantity</code></td><td align="center">Quantidade do produto ou serviço.</td><td>false</td></tr><tr><td align="center"><code>unitPrice</code></td><td align="center">Preço unitário do produto ou serviço.</td><td>false</td></tr><tr><td align="center"><code>usdtAmount</code></td><td align="center">Montante em dólares (UDST)</td><td>false</td></tr><tr><td align="center"><code>reaisAmount</code></td><td align="center">Montante em reais (R$)</td><td>false</td></tr></tbody></table>

</details>

<table><thead><tr><th width="238.28570556640625" align="center">Name</th><th width="490.7138671875" align="center">Descriptiton</th></tr></thead><tbody><tr><td align="center"><code>transactionType</code></td><td align="center">Tipo da transação.</td></tr><tr><td align="center"><code>transactionStatus</code></td><td align="center">Status da transação</td></tr><tr><td align="center"><code>transactionErrorType</code></td><td align="center">Tipo do erro da transação.</td></tr><tr><td align="center"><code>transactionErrorMessage</code></td><td align="center">Mensagem de erro da transação.</td></tr></tbody></table>

Claro, aqui está uma descrição breve para cada uma das tipagens, que você pode colocar antes da tabela no seu documento ou documentação:

***

#### Detalhes dos status de transação.

Abaixo estão os tipos utilizados para definir o status, tipo e possíveis erros relacionados a uma transação. Eles são essenciais para o controle e entendimento do fluxo de uma operação dentro do sistema.

`transactionType`

Define o **tipo da transação**. Pode ser:

* `PIX_PURCHASE`: Ordem de compra via Pix.
* `CRYPTO_PURCHASE`: Compra via cripto.
* `PIX_WITHDRAW`: Ordem de saque via Pix.
* `CRYPTO_WITHDRAW`: Saque via cripto.

`transactionStatus`

Define o **status atual da transação**. Os valores possíveis são:

* `CREATED`: Transação criada.
* `WAITING_PAYMENT`: Aguardando pagamento.
* `PAID`: Pagamento confirmado.
* `PROCESSING`: Transação em processamento.
* `RETRYING`: Tentando novamente após falha.
* `COMPLETED`: Transação concluída com sucesso.
* `REFUNDED`: Valor reembolsado.
* `ERROR`: Transação com erro.

`transactionErrorType`

Define o **tipo do erro ocorrido**, caso exista. Os valores possíveis são:

* `NONE`: Sem erro.
* `DIVERGENT_PAYER`: Pagador divergente.
* `DIVERGENT_RECEIVER`: Recebedor divergente.
* `BLOCKCHAIN_ERROR`: Erro relacionado à blockchain.
* `TRANSACTION_NOT_FOUND`: Transação não encontrada.
* `REFUNDED_BY_ERROR`: Reembolso causado por erro.
* `MISSING_REFUND_USER`: Falha no reembolso após um erro.

`transactionErrorMessage`

Define a **mensagem descritiva do erro**, oferecendo mais contexto. Pode conter:

* `NONE`: Nenhuma mensagem de erro.
* `Divergent payer`: O pagador é diferente do esperado.
* `Divergent receiver`: O recebedor é diferente do esperado.
* `Blockchain error`: Erro na execução da transação na blockchain.
* `Transaction not found`: Transação não localizada.
* `Max attempts reached`: Número máximo de tentativas excedido.
* `Refunded by error`: Reembolsada por conta de erro.
* `Missing refund user`: Falh no reembolso após um erro ou divergência.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.criptonopix.app.br/docs/cripto-no-pix-partner-api/webhook/instrucoes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
