# Recibos

## Criação de recibos

Cada recibo é constituído por:&#x20;

1. Um cabeçalho
2. Uma ou mais linhas&#x20;

O recibo não possui um estado "em preparação".&#x20;

Um recibo pode ser (3.) anulado.

### 1. Criação do cabeçalho do recibo

Os detalhes do pedido POST para a criação de recibos estão descritos de seguida, em formato OpenAPI, e em cURL.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/commercial\_sales\_receipts" method="post" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X POST -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/commercial_sales_receipts'
```

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth, e o \<payload JSON> deverá ter o seguinte formato

```
{ 
  "data": {
    "type": "commercial_sales_receipts",                              // [OBRIGATÓRIO]
    "attributes": {
      "date": "2020-06-01",                                           // [OPCIONAL] Data do recibo; por omissão, a data do pedido
      "payment_mechanism": "MO"                                       // [OPCIONAL] Por omissão, "MO". Meios de pagamento aceites: "MO": Numerário, "CH": Cheque, "DC": Cartão de débito, "CC": Cartão de crédito, "TR": Transferência bancária, "DDA": Débito direto autorizado, "MB": Referências de pagamento Multibanco.
    },
    "relationships": {                                                // [OPCIONAL] Recursos associados ao recibo. Caso nenhum seja indicado, este bloco "relationships" deve ser omitido
      "commercial_document_series": {                                 // [OPCIONAL] Série de recibos associada. Não precisa de ser indicada; por omissão o recibo é criado na série por omissão associada ao tipo de documento. Vd. NOTA 1
        "data": {
          "type": "commercial_document_series",                       // [OBRIGATÓRIO]
          "id": "<id da série de recibos associada>"                  // [OBRIGATÓRIO] Vd. NOTA 1
        }
      },
      "bank_accounts": {                                              // [OPCIONAL] Conta bancária da empresa para onde o recebimento é feito. Usado apenas quando o meio de pagamento é "DC", "CC", "TR" ou "DDA", e apenas se for necessário indicar uma conta bancária específica.
        "data": {
          "type": "bank_accounts",                                    // [OBRIGATÓRIO]
          "id": "<id da conta bancária>"                              // [OBRIGATÓRIO] Vd. NOTA 2
        }
      },
      "cash_accounts": {                                              // [OPCIONAL] Conta de caixa da empresa para onde o recebimento é feito. Usado apenas quando o meio de pagamento é "MO", e apenas se for necessário indicar uma conta de caixa específica.
        "data": {
          "type": "cash_accounts",                                    // [OBRIGATÓRIO]
          "id": "<id da conta de caixa associada>"                    // [OBRIGATÓRIO] Vd. NOTA 3// Este id pode ser obtido por um GET /cash_accounts?filter[name]=<nome da conta de caixa>
        }
      }
    }
  }
}
```

Após criar o cabeçalho, a resposta TEM QUE ser consultada para obtenção do identificador interno ("id") do recibo criado. Este identificador será necessário para a criação de todas as linhas.

* NOTA 1: A série associada ao recibo tem já que existir, e o seu "id" interno deve ser obtido por um&#x20;

```
GET /commercial_document_series?filter[document_type]=RC&filter[prefix]=2020|<o prefixo da série a usar>
```

* NOTA 2: O "id" interno da conta bancária da empresa deve ser obtido por um&#x20;

```
GET /company_bank_accounts?filter[iban]=
ou
GET /company_bank_accounts?filter[name]=
```

* NOTA 3: O "id" interno da conta de caixa da empresa deve ser obtido por um

```
 GET /cash_accounts?filter[name]=
```

### 2. Criação da linha do recibo a liquidar o documento de venda associado:&#x20;

Os detalhes do pedido POST para a criação de recibos estão descritos de seguida, em formato OpenAPI, e em cURL.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/commercial\_sales\_receipt\_lines" method="post" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

{% code overflow="wrap" %}

```
curl -v -X POST -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/commercial_sales_receipt_lines'
```

{% endcode %}

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth, e o \<payload JSON> deverá ter o seguinte formato

```
{
  "data": {
    "type": "commercial_sales_receipt_lines",                     // [OBRIGATÓRIO]
    "attributes": {
      "receivable_type": "Document",                              // [OBRIGATÓRIO]
      "receivable_id": "<id do documento a liquidar>",            // [OBRIGATÓRIO] Vd. NOTA 1
      "received_value": 50,                                       // [OBRIGATÓRIO] Valor total a receber (não é necessário receber a totalidade do documento, pode fazer-se um recebimento parcial)
      "settlement_percentage": "3"                                // [OPCIONAL] Desconto de pagamento, em percentagem; são suportados descontos compostos, como "3+5"
    },
    "relationships": {                                            // [OBRIGATÓRIO]
      "receipt": {                                                // [OBRIGATÓRIO] Recibo a que esta linha pertence
        "data": {
          "type": "commercial_sales_receipts",                    // [OBRIGATÓRIO]
          "id": "<id do recibo>"                                  // [OBRIGATÓRIO] Este "id" é o devolvido na resposta ao pedido de criação do cabeçalho, ver acima
        }
      }
    }
  }
}
```

* NOTA 1: O "id" interno do documento (fatura, nota) a receber deve ser obtido por um

```
 GET /commercial_sales_documents?filter[document_no]=<o número do documento, ex. FT 2020/1>
```

### 3. (Caso seja preciso) Anulação de um recibo:&#x20;

Os detalhes do pedido POST para a criação de recibos estão descritos de seguida, em formato OpenAPI, e em cURL.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/commercial\_sales\_receipts" method="patch" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X PATCH -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/commercial_sales_receipts/'
```

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth, e o \<payload JSON> deverá ter o seguinte formato

```
{
  "data": {
    "type": "commercial_sales_receipts",                                                      // [OBRIGATÓRIO]
    "id": "<id do recibo>",                                                                   // [OBRIGATÓRIO] Vd. NOTA 1
    "attributes": {
      "deleted": true                                                                         // [OBRIGATÓRIO]
    }
  }
}
```

* NOTA 1: O "id" interno do recibo a anular deve ser obtido por um

```
GET /commercial_sales_receipts?filter[document_no]=<o número do recibo, ex. RC 2020/1>
```

É na linha do recibo que se indica qual o documento (FT, ou outro) que foi pago.&#x20;

Se necessário, pode criar-se mais do que uma linha (e nesse caso o recibo é emitido de uma só vez para todos os documentos referenciados)


---

# 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://cloudware.gitbook.io/documentacao-api/api-v0/recibos.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.
