# Pagamentos

### Criação de pagamentos

Tal como no caso dos recibos, as compras são constituídas por:

1. Um cabeçalho
2. Umas ou mais linhas

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

De modo a criar uma compra, deverá inicialmente criar o cabeçalho do documento. Para este efeito, deverá realizar o seguinte pedido:

{% openapi src="/files/LrXEg3IjIacAycCz7IWE" path="/api/v1/commercial\_purchases\_payments" method="post" %}
[TOConline Open API.yaml](https://1863668386-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fk7sif7BY0rPzivMcj1HB%2Fuploads%2Fgit-blob-1f7bd9dd692716d3f3f93d9c9a4f7226d78277e3%2FTOConline%20Open%20API.yaml?alt=media)
{% endopenapi %}

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth

O \<payload JSON> deverá vir no seguinte formato

```
{
  "data": {
    "type": "commercial_purchases_payments",
    "attributes": {
      "date": "2017-06-01", // Data do pagamento
      "payment_mechanism": "MO|CH|DC|CC|TR|DDA|MB|OU|..." // Por omissão, MO. Modo de pagamento: MO (numerário), CH (cheque), DC (cartão de débito), CC (cartão de crédito), TR (transferência), DDA (débito directo), MB (referência MB), OU (outro)
    },
    "relationships": {
      "commercial_document_series": { // Associação à série de pagamentos. Pode ser omitida, se for para usar a série por omissão
        "data": {
          "type": "commercial_document_series",
          "id": "<id da série de documentos associada>" // Este id pode ser obtido por um GET /commercial_document_series?filter[document_type]=PF&filter[prefix]=2020|ou outro qualquer...
        }
      },
      "bank_accounts": { // SÓ NECESSÁRIO se o meio de pagamento for DC,CC,TR,CH, e se for para indicar uma conta bancária específica. Associação à conta bancária da empresa de onde o pagamento foi feito
        "data": {
          "type": "bank_accounts",
          "id": "<id da conta bancária associada>" // Este id pode ser obtido por um GET /company_bank_accounts?filter[iban]=<IBAN da conta>, ou GET /company_bank_accounts?filter[name]=<nome da conta>
        }
      },
      "cash_accounts": { // SÓ NECESSÁRIO se o meio de pagamento for MO, e se for para indicar uma conta de caixa específica. Associação à conta de caixa da empresa de onde o pagamento foi feito
        "data": {
          "type": "cash_accounts",
          "id": "<id da conta de caixa associada>" // 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") da compra criada. Este identificador será necessário para a criação de todas as linhas.

### 2. Criação de Linha de Pagamento

Em todos os pedidos seguintes, é necessário saber qual o id do documento de compra. Este id pode ser guardado a partir da resposta (JSON) ao pedido de criação anterior, ou pode ser consultado via API. Via API, o id do documento pode ser obtido por um

```
GET /commercial_purchases_payments?filter[document_no]=<número do documento,  ex: PF 2020/1> 
```

De modo a inserir linhas na compra criada, deverá realizar o seguinte pedido

{% openapi src="/files/LrXEg3IjIacAycCz7IWE" path="/api/commercial\_purchases\_payment\_lines" method="post" %}
[TOConline Open API.yaml](https://1863668386-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fk7sif7BY0rPzivMcj1HB%2Fuploads%2Fgit-blob-1f7bd9dd692716d3f3f93d9c9a4f7226d78277e3%2FTOConline%20Open%20API.yaml?alt=media)
{% endopenapi %}

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth. O payload JSON deverá vir no seguinte formato, dependendo se se trata de um produto, ou categoria de despesa

NOTA: É na linha que se indica qual o documento de compra (FC ou DSP) a pagar. Se necessário, podem criar-se mais do que uma linha (e nesse caso o pagamento é feito de uma só vez para todos os documentos)

#### Linha de pagamento

```json
{
  "data": {
    "type": "commercial_purchases_payment_lines",
    "attributes": {
      "payment_id": "<id do pagamento a que pertence esta linha>", // NOTA: quando a API estiver concluída, isto vai ser também uma "relationship", mas por agora indica-se aqui, nos atributos
      "payable_type": "Purchases::Document",
      "payable_id": "<id do documento de compra a pagar>",
      "paid_value": 50, // Valor total a pagar (não é necessário pagar a totalidade do documento, ou pode pagar-se mais do que um documento)
      // Indicar o atributo seguinte apenas se existir desconto no pagamento (3%, neste exemplo)
      "settlement_percentage": 3
      
      "commercial_purchases_documents_id":"<id do documento de compra a pagar>"
    }
  }
}
```

###


---

# 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://api-docs.toconline.pt/apis/versoes-anteriores/compras/pagamentos.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.
