# QI Tech — Banking-as-a-Service › DDA

Documentação da QI Tech em texto corrido, para colar em um LLM.
Fonte: https://docs.qitech.com.br
9 página(s).

Índice:
- Cadastrar conta no DDA (/documentation/dda/cadastro_dda)
- Remover conta do DDA (/documentation/dda/cancelamento_dda)
- Consultar conta cadastrada no DDA (/documentation/dda/consultar_dados_conta)
- Erros retornados na api (/documentation/dda/erros)
- Introdução (/documentation/dda/introducao)
- Listar contas cadastradas no DDA (/documentation/dda/lista_contas_cadastradas)
- Lista de boletos registrados no DDA (bank slip notification) com filtros (/documentation/dda/lista_notificacoes_de_boletos)
- Simulação de cenários de registro e alteração de boletos (/documentation/dda/simulacoes)
- Formato dos Webhooks (/documentation/dda/webhooks)

---

# Cadastrar conta no DDA

URL: /documentation/dda/cadastro_dda

Para habilitar o recebimento das informações dos boletos, que tenham o titular de uma conta QI como pagador, é necessário cadastrar esta conta no DDA.

As evidências da assinatura do termo de adesão devem ser enviadas na requisição.

## Request

ENDPOINT /account/ ACCOUNT_KEY /dda
MÉTODO POST

Request Body

```json
{
	"authorization_term": {
		"document_number": "12345678910", 
		"signature": {
			"signer": {
				"name": "Jose da Silva",
				"email": "ownermail@mail.com",
				"phone": {
					"number": "0987654321",
					"area_code": "11",
					"country_code": "55"
				},
				"document_number": "12345678910"
			},
			"authentication_type": "opt_in",
			"authenticity": {
				"timestamp": "1970-01-01T00:00:01.080100Z",
				"ip_address": "177.51.1.000",
				"fingerprint": {
					"browser": "Mozila"
				},
				"third_party_additional_data": {},
				"session_id": "10c33308-866f-47e5-bec8-2e512e9c0237"
			},
			"signed_object": {
				"raw_text": "Lorem ipsum dolor sit amet, consectetur a...."
			}
		}
	}
}
```

### Path Params

| Campo         | Tipo   | Descrição                                               | Caracteres |
| ------------- | ------ | ------------------------------------------------------- | ---------- |
| `account_key` | string | Chave de identificação da conta a ser cadastrada no DDA | 36         |

### Body Params

| Campo                | Tipo   | Descrição                                  | Caracteres |
| -------------------- | ------ | ------------------------------------------ | ---------- |
| `authorization_term` | object | Dados da autorização assinada pelo pagador | -          |

## Response

STATUS 201

**Response Body**

```json
{
	"account_key": "e1c891a1-78a0-4915-9cb8-8b6adfc2e83a",
	"dda_account_status": "active",
	"account_number": "12345",
	"account_digit": "6",
	"owner_document_number": "12345678910",
	"owner_person_key": "99784848-36bb-4049-8ce3-0e47938738de",
	"requester_key": "59a63416-073a-45d5-b821-6a39664632ca",
	"created_at": "2023-10-22T20:30:23.459Z"
}
```

| Campo                   | Tipo   | Descrição                                                | Caracteres |
| ----------------------- | ------ | -------------------------------------------------------- | ---------- |
| `account_key`           | string | Account_key da conta cadastrada no DDA.                  | 36         |
| `dda_account_status`    | enum   | [Enumeradores de status da conta.](#enumeradores-status) | -          |
| `account_number`        | string | Número da conta.                                         | 20         |
| `account_digit`         | string | Dígito da conta.                                         | 1          |
| `owner_document_number` | string | Documento do dono da conta.                              | 14         |
| `owner_person_key`      | string | Person key do dono da conta.                             | 36         |
| `requester_key`         | string | Requester key de quem abriu a conta.                     | 36         |
| `created_at`            | string | Data de criação e ativação no DDA.                       | 24         |

### Enumeradores Status

| Enumerador  | Descrição                           |
| ----------- | ----------------------------------- |
| `active`    | Conta ativa no DDA.                 |
| `cancelled` | Relacionamento com o DDA encerrado. |

---

# Remover conta do DDA

URL: /documentation/dda/cancelamento_dda

Após a remoção da conta no DDA, as notificações de registro de boletos tendo o titular da conta como pagador, não serão mais recebidas.

:::info Informação
Caso o titular da conta ainda possua outra(s) conta(s), aberta(s) pelo parceiro integrador e cadastrada(s) no DDA, as notificações continuarão sendo enviadas.

Para interrupção das notificações, é necessário remover todas as contas do titular cadastradas no DDA.
:::

As evidências da assinatura do termo de cancelamento devem ser enviadas na requisição.

## Request

ENDPOINT /account/ ACCOUNT_KEY /dda/cancel
MÉTODO PATCH

Request Body

```json
{
	"authorization_term": {
		"document_number": "12345678910", 
		"signature": {
			"signer": {
				"name": "Jose da Silva",
				"email": "ownermail@mail.com",
				"phone": {
					"number": "0987654321",
					"area_code": "11",
					"country_code": "55"
				},
				"document_number": "12345678910"
			},
			"authentication_type": "opt_in",
			"authenticity": {
				"timestamp": "1970-01-01T00:00:01.080100Z",
				"ip_address": "177.51.1.000",
				"fingerprint": {
					"browser": "Mozila"
				},
				"third_party_additional_data": {},
				"session_id": "10c33308-866f-47e5-bec8-2e512e9c0237"
			},
			"signed_object": {
				"raw_text": "Lorem ipsum dolor sit amet, consectetur a...."
			}
		}
	}
}
```

### Path Params

| Campo         | Tipo   | Descrição                                         | Caracteres |
| ------------- | ------ | ------------------------------------------------- | ---------- |
| `account_key` | string | Chave de identificação da conta cadastrada no DDA | 36         |

### Body Params

| Campo                | Tipo   | Descrição                                  | Caracteres |
| -------------------- | ------ | ------------------------------------------ | ---------- |
| `authorization_term` | object | Dados da autorização assinada pelo pagador | -          |

## Response

STATUS 200

```json
{
	"account_key": "e1c891a1-78a0-4915-9cb8-8b6adfc2e83a",
	"dda_account_status": "cancelled",
	"account_number": "12345",
	"account_digit": "6",
	"owner_document_number": "12345678910",
	"owner_person_key": "99784848-36bb-4049-8ce3-0e47938738de",
	"requester_key": "59a63416-073a-45d5-b821-6a39664632ca",
	"created_at": "2023-10-22T20:30:23.459Z"
}
```

| Campo                   | Tipo   | Descrição                                                | Caracteres |
| ----------------------- | ------ | -------------------------------------------------------- | ---------- |
| `account_key`           | string | Account_key da conta cadastrada no DDA.                  | 36         |
| `dda_account_status`    | enum   | [Enumeradores de status da conta.](#enumeradores-status) | -          |
| `account_number`        | string | Número da conta.                                         | 20         |
| `account_digit`         | string | Dígito da conta.                                         | 1          |
| `owner_document_number` | string | Documento do dono da conta.                              | 14         |
| `owner_person_key`      | string | Person key do dono da conta.                             | 36         |
| `requester_key`         | string | Requester key de quem abriu a conta.                     | 36         |
| `created_at`            | string | Data de criação e ativação no DDA.                       | 24         |

### Enumeradores Status

| Enumerador  | Descrição                           |
| ----------- | ----------------------------------- |
| `active`    | Conta ativa no DDA.                 |
| `cancelled` | Relacionamento com o DDA encerrado. |

---

# Consultar conta cadastrada no DDA

URL: /documentation/dda/consultar_dados_conta

Consulta uma conta ativa no DDA para o requester.
## Request

ENDPOINT /account/ ACCOUNT_KEY /dda
MÉTODO GET

### Path Params

| Campo         | Tipo   | Descrição                                         | Caracteres |
| ------------- | ------ | ------------------------------------------------- | ---------- |
| `account_key` | string | chave de identificação da conta cadastrada no DDA | 36         |

## Response

STATUS 200

Response Body

```json
{
	"account_key": "e1c891a1-78a0-4915-9cb8-8b6adfc2e83a",
	"dda_account_status": "active",
	"account_number": "12345",
	"account_digit": "6",
	"owner_document_number": "12345678910",
	"owner_person_key": "99784848-36bb-4049-8ce3-0e47938738de",
	"requester_key": "59a63416-073a-45d5-b821-6a39664632ca",
	"created_at": "2023-10-22T20:30:23.459Z"
}
```

| Campo                   | Tipo   | Descrição                                                | Caracteres |
| ----------------------- | ------ | -------------------------------------------------------- | ---------- |
| `account_key`           | string | Account_key da conta cadastrada no DDA.                  | 36         |
| `dda_account_status`    | enum   | [Enumeradores de status da conta.](#enumeradores-status) | -          |
| `account_number`        | string | Número da conta.                                         | 20         |
| `account_digit`         | string | Dígito da conta.                                         | 1          |
| `owner_document_number` | string | Documento do dono da conta.                              | 14         |
| `owner_person_key`      | string | Person key do dono da conta.                             | 36         |
| `requester_key`         | string | Requester key de quem abriu a conta.                     | 36         |
| `created_at`            | string | Data de criação e ativação no DDA.                       | 24         |

### Enumeradores Status

| Enumerador  | Descrição                           |
| ----------- | ----------------------------------- |
| `active`    | Conta ativa no DDA.                 |
| `cancelled` | Relacionamento com o DDA encerrado. |

---

# Erros retornados na api

URL: /documentation/dda/erros

STATUS 400

Response Body

```json
{
  "data": "{\"title\": \"Bad Request\", \"description\": \"Invalid request body.\", \"translation\": \"Corpo da requisição inválido.\", \"extra_fields\": {}, \"code\": \"LEG000069\"}",
  "title": "Bad Request", 
  "description": "Invalid request body.", 
  "translation": "Corpo da requisição inválido.", 
  "extra_fields": {}, 
  "code": "LEG000069"
}
```

STATUS 403

Response Body

```json
{
  "data": "{\"title\": \"Forbidden\", \"description\": \"Has no permission to this account\", \"translation\": \"Não possui permissão nesta conta\", \"extra_fields\": {}, \"code\": \"QIT000079\"}",
  "title": "Forbidden", 
  "description": "Has no permission to this account",
  "translation": "Não possui permissão nesta conta", 
  "extra_fields": {}, 
  "code": "QIT000079"
  
}

```

STATUS 404

Response Body

```json
{
  "data": "{\"title\": \"Not Found\", \"description\": \"Not found account for the given key\", \"translation\": \"Não foi encontrada uma conta com a chave fornecida\", \"extra_fields\": {}, \"code\": \"QIT000099\"}",
  "title": "Not Found", 
  "description": "Not found account for the given key", 
  "translation": "Não foi encontrada uma conta com a chave fornecida",
  "extra_fields": {}, 
  "code": "QIT000099"
}

```

STATUS 400

Response Body

```json
{
  "data": "{\"title\": \"Bad Request\", \"description\": \"Error on electronic payer subscription\", \"translation\": \"Erro ao inscrever pagador eletronico.\", \"extra_fields\": {}, \"code\": \"QIT000011\"}",
  "title": "Bad Request", 
  "description": "Error on electronic payer subscription", 
  "translation": "Erro ao inscrever pagador eletronico.", 
  "extra_fields": {}, 
  "code": "QIT000011"
}

```

STATUS 409

Response Body

```json
{
  "data": "{\"title\": \"Bad Request\", \"description\": \"Bank slip already registered\", \"translation\": \"Boleto já cadastrado.\", \"extra_fields\": {}, \"code\": \"QIT100012\"}",
  "title": "Duplicated Bank Slip", 
  "description": "Bank slip already registered", 
  "translation": "Boleto já cadastrado.", 
  "extra_fields": {}, 
  "code": "QIT100012"
}

```

STATUS 409

Response Body

```json
{
  "data": "{\"title\": \"Bad Request\", \"description\": \"Account already registered\", \"translation\": \"Conta já cadastrada.\", \"extra_fields\": {}, \"code\": \"QIT200012\"}",
  "title": "Account already registered", 
  "description": "Account already registered", 
  "translation": "Conta já cadastrada.", 
  "extra_fields": {}, 
  "code": "QIT200012"
}

```

---

# Introdução

URL: /documentation/dda/introducao

A API do Débito Direto Autorizado (DDA) possibilita que uma conta dentro da QI Tech, receba as informações de todos os boletos que tenham o titular da conta como pagador.

:::danger Observações Gerais:
- Para esta API, a **conta** cadastrada no DDA é obrigatoriamente conta QI.
- A divulgação e aceite dos termos é de responsabilidade do parceiro (integrador).
:::

---

# Listar contas cadastradas no DDA

URL: /documentation/dda/lista_contas_cadastradas

## Request

ENDPOINT /dda/accounts
MÉTODO GET

### QUERY PARAMS

| Campo         | Descrição                              |
| ------------- | -------------------------------------- |
| `page_number` | Página atual que está sendo consultada |
| `page_size`   | Quantidade de resultados por página    |

## Response

STATUS 200

Response Body

```json
{
  "data": [
    {
      "account_key": "e1c891a1-78a0-4915-9cb8-8b6adfc2e83a",
      "dda_account_status": "active",
      "account_number": "12345",
      "account_digit": "6",
      "owner_document_number": "12345678910",
      "owner_person_key": "99784848-36bb-4049-8ce3-0e47938738de",
      "requester_key": "59a63416-073a-45d5-b821-6a39664632ca",
      "created_at": "2023-10-22T20:30:23.459Z"
    },
    {
      "account_key": "e1c891a1-78a0-4915-9cb8-8b6adfc2e832",
      "dda_account_status": "active",
      "account_number": "54321",
      "account_digit": "6",
      "owner_document_number": "12345678911",
      "owner_person_key": "99784848-36bb-4049-8ce3-0e47938738d2",
      "requester_key": "59a63416-073a-45d5-b821-6a39664632ca",
      "created_at": "2023-11-22T20:30:23.459Z"
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": null,
    "rows_per_page": 10
  }
}

```

| Campo                   | Tipo   | Descrição                                                | Caracteres |
| ----------------------- | ------ | -------------------------------------------------------- | ---------- |
| `account_key`           | string | Account_key da conta cadastrada no DDA.                  | 36         |
| `dda_account_status`    | enum   | [Enumeradores de status da conta.](#enumeradores-status) | -          |
| `account_number`        | string | Número da conta.                                         | 20         |
| `account_digit`         | string | Dígito da conta.                                         | 1          |
| `owner_document_number` | string | Documento do dono da conta.                              | 14         |
| `owner_person_key`      | string | Person key do dono da conta.                             | 36         |
| `requester_key`         | string | Requester key de quem abriu a conta.                     | 36         |
| `created_at`            | string | Data de criação e ativação no DDA.                       | 24         |

### Enumeradores Status

| Enumerador  | Descrição                           |
| ----------- | ----------------------------------- |
| `active`    | Conta ativa no DDA.                 |
| `cancelled` | Relacionamento com o DDA encerrado. |

---

# Lista de boletos registrados no DDA (bank slip notification) com filtros

URL: /documentation/dda/lista_notificacoes_de_boletos

Método que permite a listagem de títudos de boletos de conta registrada no DDA permitindo filtragem por status e intervalo de tempo.

## Request
ENDPOINT /account/ ACCOUNT_KEY /dda/bank_slips
MÉTODO GET

### Path Params

| Campo         | Tipo   | Descrição                                         | Caracteres |
| ------------- | ------ | ------------------------------------------------- | ---------- |
| `account_key` | string | Chave de identificação da conta cadastrada no DDA | 36         |

### QUERY PARAMS

| Campo         | Descrição                              |
| ------------- | -------------------------------------- |
| `status`      | status de um boleto                    |
| `start_date`  | Data de início da listagem.            |
| `end_date`    | Data de fim da listagem.               |
| `page_number` | Página atual que está sendo consultada |
| `page_size`   | Quantidade de resultados por página    |

## Response

STATUS 200

Response Body

```json
{
  "data": [
    {
        "barcode": "00193000000001000000500000001234567890123456",
        "digitable_line": "00193000000001000000500000001234567890123456123",
        "status": "registered",
        "nominal_amount": 1050,
        "total_amount": 999,
        "total_payment_amount": null,
        "partial_payment_allowed": true,
        "paid_fine": null,
        "paid_interest": null,
        "discount_amount": null,
        "expiration": "2024-07-19",
        "max_payment_date": "2024-09-02",
        "beneficiary": {
            "name": "Tech Solutions Ltda.",
            "bank_code": "123",
            "bank_ispb": "12345678",
            "person_type": "legal",
            "document_number": "12345678000100"
        },
        "payer": {
            "name": "João Carlos",
            "person_type": "natural",
            "document_number": "12345678900"
        },
        "guarantor": { 
            "name": "Maria Junior", 
            "person_type": "natural",
            "document_number": "03903984900" 
        },
        "rebate_amount": 30.00,
        "interest": [
            {
                "interest_amount_type": "workdays_daily_amount",
                "interest_billing_start_date": "2024-07-21",
                "interest_amount": 10.00
            }
        ],
        "fine": [
            {
                "fine_billing_start_date": "2024-07-29",
                "fine_amount_type": "absolute",
                "fine_amount": 100.00
            }
        ],
        "discounts": [
            {
                "discount_limit_date": "2024-07-05",
                "discount_type": "absolute",
                "discount_amount": 50.00
            }
        ],
        "calculations": [],
        "calculation_model": "01",
    },
    {
        "barcode": "00193000000001000000500000001234567890123457",
        "digitable_line": "00193000000001000000500000001234567890123456123",
        "status": "paid",
        "nominal_amount": 1050,
        "total_amount": 1200,
        "total_payment_amount": 1200,
        "partial_payment_allowed": false,
        "paid_fine": 150,
        "paid_interest": 50,
        "discount_amount": 0,
        "expiration": "2024-05-30",
        "max_payment_date": "2024-07-01",
        "beneficiary": {
            "name": "Tech Solutions Ltda.",
            "bank_code": "123",
            "bank_ispb": "12345678",
            "person_type": "legal",
            "document_number": "12345678000100"
        },
        "payer": {
            "name": "João Carlos",
            "person_type": "natural",
            "document_number": "12345678900"
        },
        "guarantor": { 
            "name": "Maria Junior", 
            "person_type": "natural",
            "document_number": "03903984900" 
        },
        "rebate_amount": 30.00,
        "interest": [
            {
                "interest_amount_type": "workdays_daily_amount",
                "interest_billing_start_date": "2024-05-21",
                "interest_amount": 10.00
            }
        ],
        "fine": [
            {
                "fine_billing_start_date": "2024-05-29",
                "fine_amount_type": "absolute",
                "fine_amount": 100.00
            }
        ],
        "discounts": [
            {
                "discount_limit_date": "2024-05-05",
                "discount_type": "absolute",
                "discount_amount": 50.00
            }
        ],
        "calculations": [],
        "calculation_model": "01",
    }
  ],
  "pagination": {
    "current_page": 1,
    "next_page": null,
    "rows_per_page": 10
  }
}
```

### Body Params

| Campo                     | Tipo    | Descrição                                                                           | Caracteres |
| ------------------------- | ------- | ----------------------------------------------------------------------------------- | ---------- |
| `barcode`                 | string  | Código de barras do boleto.                                                         | 44         |
| `digitable_line`          | string  | Linha digitável do boleto.                                                          | 47         |
| `status`                  | enum    | [Enumeradores de status de um boleto.](#enumeradores-status)                        | -          |
| `nominal_amount`          | float   | Valor nominal do boleto.                                                            | -          |
| `total_amount`            | float   | Valor calculado do boleto.                                                          | -          |
| `total_payment_amount`    | float   | Valor de pagamento do boleto.                                                       | -          |
| `partial_payment_allowed` | boolean | Indicador de aceite de pagamento parcial.                                           | -          |
| `paid_fine`               | float   | Total de multa efetivado no pagamento do boleto, calculado a partir do valor total. | -          |
| `paid_interest`           | float   | Total de juros efetivado no pagamento do boleto, calculado a partir do valor total. | -          |
| `discount_amount`         | float   | Total de descontos no pagamento do boleto, calculado a partir do valor total.       | -          |
| `expiration`              | string  | Data de vencimento do boleto.                                                       | 10         |
| `max_payment_date`        | string  | Data limite de pagamento do boleto.                                                 | 10         |
| `payer`                   | object  | [Objeto pagador do boleto.](#objeto-payer)                                          | -          |
| `beneficiary`             | object  | [Objeto beneficiário do boleto.](#objeto-beneficiary)                               | -          |
| `guarantor`               | object  | [Objeto sacador avalista do boleto](#objeto-guarantor)                              | -          |
| `rebate_amount`           | float   | Valor de rebate.                                                                    | -          |
| `interest`                | list    | [Lista de objetos interest.](#objeto-interest)                                      | -          |
| `fine`                    | list    | [Lista de objetos fine.](#objeto-fine)                                              | -          |
| `discounts`               | list    | [Lista de objetos discount.](#objeto-discount)                                      | -          |
| `calculations`            | list    | Lista do grupo cálculo de boleto.                                                   | -          |
| `calculation_model`       | string  | Método de cálculo do valor atual do boleto.                                         | 2          |

### Enumeradores Status

| Enumerador       | Descrição                              |
| ---------------- | -------------------------------------- |
| `registered`     | Código de barras do boleto registrado. |
| `paid`           | Boleto pago.                           |
| `partially_paid` | Boleto pago parcialmente.              |
| `written_off`    | Boleto baixado.                        |

### Objeto Payer

| Campo             | Tipo   | Descrição                  | Caracteres |
| ----------------- | ------ | -------------------------- | ---------- |
| `name`            | string | Nome do pagador.           | -          |
| `person_type`     | string | Tipo de pessoa do pagador. | 7          |
| `document_number` | string | Documento do pagador.      | 14         |

### Objeto Beneficiary

| Campo             | Tipo   | Descrição                        | Caracteres |
| ----------------- | ------ | -------------------------------- | ---------- |
| `name`            | string | Nome do beneficiário.            | -          |
| `person_type`     | string | Tipo de pessoa do beneficiário.  | 7          |
| `document_number` | string | Documento do beneficiário.       | 14         |
| `bank_code`       | string | Código do banco do beneficiário. | 3          |
| `bank_ispb`       | string | ISPB do banco do beneficiário.   | 8          |

### Objeto guarantor

| Campo             | Tipo   | Descrição                           | Caracteres |
| ----------------- | ------ | ----------------------------------- | ---------- |
| `name`            | string | Nome do sacador avalista.           | -          |
| `person_type`     | string | Tipo de pessoa do sacador avalista. | 7          |
| `document_number` | string | Documento do sacador avalista.      | 14         |

### Objeto interest

| Campo                         | Tipo   | Descrição                | Caracteres |
| ----------------------------- | ------ | ------------------------ | ---------- |
| `interest_billing_start_date` | string | Data de início do juros. | 10         |
| `interest_amount_type`        | string | Tipo de juros.           | -          |
| `interest_amount`             | string | Valor do juros.          | -          |

### Objeto fine

| Campo                     | Tipo   | Descrição                | Caracteres |
| ------------------------- | ------ | ------------------------ | ---------- |
| `fine_billing_start_date` | string | Data de início da multa. | 10         |
| `fine_amount_type`        | string | Tipo de multa.           | -          |
| `fine_amount`             | string | Valor da multa.          | -          |

### Objeto discount

| Campo                 | Tipo   | Descrição                | Caracteres |
| --------------------- | ------ | ------------------------ | ---------- |
| `discount_limit_date` | string | Data limite do disconto. | 10         |
| `discount_type`       | string | Tipo de desconto.        | -          |
| `discount_amount`     | string | Valor do desconto.       | -          |

---

# Simulação de cenários de registro e alteração de boletos

URL: /documentation/dda/simulacoes

Para gerar simulações de uma notificação de registro de um boleto onde o titular da conta seja o pagador, o parceiro integrador pode utilizar os endpoints abaixo:

:::info Informação
Para receber os webhooks de teste, a conta informada no endpoint deve ser uma conta válida do requester e ativa no DDA.
:::

## Request registro de boleto

ENDPOINT /mock/account/ ACCOUNT-KEY /dda/bank_slip
MÉTODO POST

Request Body

```json
{
  "status": "registered",
  "amount": 1050,
  "partial_payment_allowed": false,
  "expiration": "2024-05-30",
  "max_payment_date": "2024-07-01",
  "beneficiary": {
    "name": "Tech Solutions Ltda.",
    "bank_code": "123",
    "bank_ispb": "12345678",
    "person_type": "legal",
    "document_number": "12345678000100"
  },
  "guarantor": {
    "name": "Maria Junior",
    "person_type": "natural",
    "document_number": "03903984900"
  },
  "rebate_amount": 30.0,
  "interest": [
    {
      "interest_amount_type": "workdays_daily_amount",
      "interest_billing_start_date": "2024-05-21",
      "interest_amount": 10.0
    }
  ],
  "fine": [
    {
      "fine_billing_start_date": "2024-05-29",
      "fine_amount_type": "absolute",
      "fine_amount": 100.0
    }
  ],
  "discounts": [
    {
      "discount_limit_date": "2024-05-05",
      "discount_type": "absolute",
      "discount_amount": 50.0
    }
  ],
  "calculations": [],
  "calculation_model": "01"
}
```

| Campo                       | Tipo    | Descrição                                                    | Caracteres |
| --------------------------- | ------- | ------------------------------------------------------------ | ---------- |
| `status` *                  | enum    | [Enumeradores de status de um boleto.](#enumeradores-status) | -          |
| `amount` *                  | float   | Valor nominal do boleto.                                     | -          |
| `partial_payment_allowed` * | boolean | Indicador de aceite de pagamento parcial.                    | -          |
| `expiration` *              | string  | Data de vencimento do boleto.                                | 10         |
| `max_payment_date` *        | string  | Data limite de pagamento do boleto.                          | 10         |
| `beneficiary` *             | object  | [Objeto beneficiário do boleto.](#objeto-beneficiary)        | -          |
| `guarantor`                 | object  | [Objeto sacador avalista do boleto](#objeto-guarantor)       | -          |
| `rebate_amount`             | float   | Valor de rebate.                                             | -          |
| `interest`                  | list    | [Lista de objetos interest.](#objeto-interest)               | -          |
| `fine`                      | list    | [Lista de objetos fine.](#objeto-fine)                       | -          |
| `discounts`                 | list    | [Lista de objetos discount.](#objeto-discount)               | -          |
| `calculations`              | list    | Lista do grupo cálculo de boleto.                            | -          |
| `calculation_model` *       | string  | Método de cálculo do valor atual do boleto.                  | 2          |

### Enumeradores Status

| Enumerador       | Descrição                              |
| ---------------- | -------------------------------------- |
| `registered`     | Código de barras do boleto registrado. |
| `paid`           | Boleto pago.                           |
| `partially_paid` | Boleto pago parcialmente.              |
| `written_off`    | Boleto baixado.                        |

### Objeto Beneficiary

| Campo               | Tipo   | Descrição                        | Caracteres |
| ------------------- | ------ | -------------------------------- | ---------- |
| `name` *            | string | Nome do beneficiário.            | -          |
| `person_type` *     | string | Tipo de pessoa do beneficiário.  | 7          |
| `document_number` * | string | Documento do beneficiário.       | 14         |
| `bank_code` *       | string | Código do banco do beneficiário. | 3          |
| `bank_ispb` *       | string | ISPB do banco do beneficiário.   | 8          |

### Objeto guarantor

| Campo               | Tipo   | Descrição                           | Caracteres |
| ------------------- | ------ | ----------------------------------- | ---------- |
| `name` *            | string | Nome do sacador avalista.           | -          |
| `person_type` *     | string | Tipo de pessoa do sacador avalista. | 7          |
| `document_number` * | string | Documento do sacador avalista.      | 14         |

### Objeto interest

| Campo                           | Tipo   | Descrição                | Caracteres |
| ------------------------------- | ------ | ------------------------ | ---------- |
| `interest_billing_start_date` * | string | Data de início do juros. | 10         |
| `interest_amount_type` *        | string | Tipo de juros.           | -          |
| `interest_amount` *             | string | Valor do juros.          | -          |

### Objeto fine

| Campo                       | Tipo   | Descrição                | Caracteres |
| --------------------------- | ------ | ------------------------ | ---------- |
| `fine_billing_start_date` * | string | Data de início da multa. | 10         |
| `fine_amount_type` *        | string | Tipo de multa.           | -          |
| `fine_amount` *             | string | Valor da multa.          | -          |

### Objeto discount

| Campo                   | Tipo   | Descrição                | Caracteres |
| ----------------------- | ------ | ------------------------ | ---------- |
| `discount_limit_date` * | string | Data limite do disconto. | 10         |
| `discount_type` *       | string | Tipo de desconto.        | -          |
| `discount_amount` *     | string | Valor do desconto.       | -          |

## Response

STATUS 200

```json
{}
```

## Request alteração de boleto

Apenas alguns campos do boleto podem ser alterados, como ilustrado na request abaixo. Alguns campos, como beneficiário, pagador e aceite de pagamento parcial, não aceitam alteração. 

:::info Informação
Os campos que são listas de objetos não devem ser passados caso não deseje alterá-los. Se uma lista vazia for passada, ou qualquer outro valor for passado dentro da lista todos os objetos serão substituídos. 
:::

ENDPOINT /mock/account/ ACCOUNT-KEY /dda/bank_slip/ BARECODE
MÉTODO PATCH

Request Body

```json
{
  "status": "registered",
  "amount": 1200,
  "expiration": "2024-05-30",
  "max_payment_date": "2024-07-01",
  "guarantor": {
    "name": "Maria Junior",
    "person_type": "natural",
    "document_number": "03903984900"
  },
  "rebate_amount": 30.0,
  "interest": [],
  "fine": [
    {
      "fine_billing_start_date": "2024-05-29",
      "fine_amount_type": "absolute",
      "fine_amount": 100.0
    },
    {
      "fine_billing_start_date": "2024-06-29",
      "fine_amount_type": "absolute",
      "fine_amount": 100.0
    }
  ],
  "discounts": [
    {
      "discount_limit_date": "2024-05-05",
      "discount_type": "absolute",
      "discount_amount": 50.0
    }
  ],
  "calculations": [],
  "calculation_model": "01"
}
```

| Campo               | Tipo   | Descrição                                                    | Caracteres |
| ------------------- | ------ | ------------------------------------------------------------ | ---------- |
| `status` *          | enum   | [Enumeradores de status de um boleto.](#enumeradores-status) | -          |
| `amount`            | float  | Valor nominal do boleto.                                     | -          |
| `expiration`        | string | Data de vencimento do boleto.                                | 10         |
| `max_payment_date`  | string | Data limite de pagamento do boleto.                          | 10         |
| `guarantor`         | object | [Objeto sacador avalista do boleto](#objeto-guarantor)      | -          |
| `rebate_amount`     | float  | Valor de rebate.                                             | -          |
| `interest`          | list   | [Lista de objetos interest.](#objeto-interest)              | -          |
| `fine`              | list   | [Lista de objetos fine.](#objeto-fine)                      | -          |
| `discounts`         | list   | [Lista de objetos discount.](#objeto-discount)              | -          |
| `calculations`      | list   | Lista do grupo cálculo de boleto.                            | -          |
| `calculation_model` | string | Método de cálculo do valor atual do boleto.                  | 2          |

## Response

STATUS 200

```json
{}
```

## Request baixa por pagamento de boleto

ENDPOINT /mock/account/ ACCOUNT-KEY /dda/bank_slip/ BARECODE
MÉTODO PATCH

Request Body

```json
{
  "status": "paid",
  "paid_amount": 1200,
}
```

| Campo           | Tipo  | Descrição                                                    | Caracteres |
| --------------- | ----- | ------------------------------------------------------------ | ---------- |
| `status` *      | enum  | [Enumeradores de status de um boleto.](#enumeradores-status) | -          |
| `paid_amount` * | float | Valor pago do boleto.                                        | -          |

## Response

STATUS 200

```json
{}
```

## Request baixa por cancelamento de boleto

ENDPOINT /mock/account/ ACCOUNT-KEY /dda/bank_slip/ BARECODE
MÉTODO PATCH

Request Body

```json
{
  "status": "written_off",
}
```

| Campo      | Tipo | Descrição                                                    | Caracteres |
| ---------- | ---- | ------------------------------------------------------------ | ---------- |
| `status` * | enum | [Enumeradores de status de um boleto.](#enumeradores-status) | -          |

## Response

STATUS 200

```json
{}
```

---

# Formato dos Webhooks

URL: /documentation/dda/webhooks

:::danger Atenção!
Os webhooks da QI Tech não devem ser mapeadas de forma restrita. 
Campos adicionais podem ser incluídos aos payloads dos webhooks retornados em nossas APIs.
:::

:::info Reenvio de Webhooks
Você pode consultar e reenviar webhooks seguindo as instruções detalhadas na documentação: [Reenvio de Webhooks](/documentation/notificacoes/reenvio_de_notificacoes).
:::

Existem dois tipos de eventos no dda que serão diferenciados no webhook pelo atributo webhook_type

## Webhook de captura de boleto

Registration webhook

```json
    {
      "webhook_type": "baas.dda.bankslip.registration",
      "key": "7c52d5f6-9db1-4a3c-bb03-1f76a2e8f9d2",
      "data": {
        "barcode": "00193000000001000000500000001234567890123456",
        "digitable_line": "00193000000001000000500000001234567890123456123",
        "status": "registered",
        "nominal_amount": 1050,
        "total_amount": 999,
        "total_payment_amount": null,
        "paid_fine": null,
        "paid_interest": null,
        "discount_amount": null,
        "partial_payment_allowed": true,
        "expiration": "2024-07-19",
        "max_payment_date": "2024-09-02",
        "beneficiary": {
            "name": "Tech Solutions Ltda.",
            "bank_code": "123",
            "bank_ispb": "12345678",
            "person_type": "legal",
            "document_number": "12345678000100"
        },
        "payer": {
            "name": "João Carlos",
            "person_type": "natural",
            "document_number": "12345678900"
        },
        "guarantor": { 
            "name": "Maria Junior", 
            "person_type": "natural",
            "document_number": "03903984900" 
        },
        "rebate_amount": 30.00,
        "interest": [
            {
                "interest_amount_type": "workdays_daily_amount",
                "interest_billing_start_date": "2024-07-21",
                "interest_amount": 10.00
            }
        ],
        "fine": [
            {
                "fine_billing_start_date": "2024-07-29",
                "fine_amount_type": "absolute",
                "fine_amount": 100.00
            }
        ],
        "discounts": [
            {
                "discount_limit_date": "2024-07-05",
                "discount_type": "absolute",
                "discount_amount": 50.00
            }
        ],
        "calculations": [],
        "calculation_model": "01",
      }
    }
```

### Body Params

| Campo                     | Tipo    | Descrição                                                    | Caracteres |
| ------------------------- | ------- | ------------------------------------------------------------ | ---------- |
| `barcode`                 | string  | Código de barras do boleto.                                  | 44         |
| `digitable_line`          | string  | Linha digitável do boleto.                                   | 47         |
| `status`                  | enum    | [Enumeradores de status de um boleto.](#enumeradores-status) | -          |
| `nominal_amount`          | float   | Valor nominal do boleto.                                     | -          |
| `total_amount`            | float   | Valor calculado do boleto.                                   | -          |
| `total_payment_amount`    | float   | Valor de pagamento do boleto.                                | -          |
| `partial_payment_allowed` | boolean | Indicador de aceite de pagamento parcial.                    | -          |
| `expiration`              | string  | Data de vencimento do boleto.                                | 10         |
| `max_payment_date`        | string  | Data limite de pagamento do boleto.                          | 10         |
| `payer`                   | object  | [Objeto pagador do boleto.](#objeto-payer)                   | -          |
| `beneficiary`             | object  | [Objeto beneficiário do boleto.](#objeto-beneficiary)        | -          |
| `guarantor`               | object  | [Objeto sacador avalista do boleto](#objeto-guarantor)       | -          |
| `rebate_amount`           | float   | Valor de rebate.                                             | -          |
| `interest`                | list    | [Lista de objetos interest.](#objeto-interest)               | -          |
| `fine`                    | list    | [Lista de objetos fine.](#objeto-fine)                       | -          |
| `discounts`               | list    | [Lista de objetos discount.](#objeto-discount)               | -          |
| `calculations`            | list    | Lista do grupo cálculo de boleto.                            | -          |
| `calculation_model`       | string  | Método de cálculo do valor atual do boleto.                  | 2          |

### Enumeradores Status

| Enumerador       | Descrição                              |
| ---------------- | -------------------------------------- |
| `registered`     | Código de barras do boleto registrado. |
| `paid`           | Boleto pago.                           |
| `partially_paid` | Boleto pago parcialmente.              |
| `written_off`    | Boleto baixado.                        |

### Objeto Payer

| Campo             | Tipo   | Descrição                  | Caracteres |
| ----------------- | ------ | -------------------------- | ---------- |
| `name`            | string | Nome do pagador.           | -          |
| `person_type`     | string | Tipo de pessoa do pagador. | 7          |
| `document_number` | string | Documento do pagador.      | 14         |

### Objeto Beneficiary

| Campo             | Tipo   | Descrição                        | Caracteres |
| ----------------- | ------ | -------------------------------- | ---------- |
| `name`            | string | Nome do beneficiário.            | -          |
| `person_type`     | string | Tipo de pessoa do beneficiário.  | 7          |
| `document_number` | string | Documento do beneficiário.       | 14         |
| `bank_code`       | string | Código do banco do beneficiário. | 3          |
| `bank_ispb`       | string | ISPB do banco do beneficiário.   | 8          |

### Objeto guarantor

| Campo             | Tipo   | Descrição                           | Caracteres |
| ----------------- | ------ | ----------------------------------- | ---------- |
| `name`            | string | Nome do sacador avalista.           | -          |
| `person_type`     | string | Tipo de pessoa do sacador avalista. | 7          |
| `document_number` | string | Documento do sacador avalista.      | 14         |

### Objeto interest

| Campo                         | Tipo   | Descrição                | Caracteres |
| ----------------------------- | ------ | ------------------------ | ---------- |
| `interest_billing_start_date` | string | Data de início do juros. | 10         |
| `interest_amount_type`        | string | Tipo de juros.           | -          |
| `interest_amount`             | string | Valor do juros.          | -          |

### Objeto fine

| Campo                     | Tipo   | Descrição                | Caracteres |
| ------------------------- | ------ | ------------------------ | ---------- |
| `fine_billing_start_date` | string | Data de início da multa. | 10         |
| `fine_amount_type`        | string | Tipo de multa.           | -          |
| `fine_amount`             | string | Valor da multa.          | -          |

### Objeto discount

| Campo                 | Tipo   | Descrição                | Caracteres |
| --------------------- | ------ | ------------------------ | ---------- |
| `discount_limit_date` | string | Data limite do disconto. | 10         |
| `discount_type`       | string | Tipo de desconto.        | -          |
| `discount_amount`     | string | Valor do desconto.       | -          |

## Webhook de alteração de boleto

Update webhook

```json
    {
      "webhook_type": "baas.dda.bankslip.update",
      "key": "7c52d5f6-9db1-4a3c-bb03-1f76a2e8f9d2",
      "data": {
        "barcode": "00193000000001000000500000001234567890123457",
        "digitable_line": "00193000000001000000500000001234567890123456123",
        "status": "paid",
        "nominal_amount": 1050,
        "total_amount": 1200,
        "total_payment_amount": 1200,
        "partial_payment_allowed": false,
        "paid_fine": 150,
        "paid_interest": 50,
        "discount_amount": 0,
        "expiration": "2024-05-30",
        "max_payment_date": "2024-07-01",
        "beneficiary": {
            "name": "Tech Solutions Ltda.",
            "bank_code": "123",
            "bank_ispb": "12345678",
            "person_type": "legal",
            "document_number": "12345678000100"
        },
        "payer": {
            "name": "João Carlos",
            "person_type": "natural",
            "document_number": "12345678900"
        },
        "guarantor": { 
            "name": "Maria Junior", 
            "person_type": "natural",
            "document_number": "03903984900" 
        },
        "rebate_amount": 30.00,
        "interest": [
            {
                "interest_amount_type": "workdays_daily_amount",
                "interest_billing_start_date": "2024-05-21",
                "interest_amount": 10.00
            }
        ],
        "fine": [
            {
                "fine_billing_start_date": "2024-05-29",
                "fine_amount_type": "absolute",
                "fine_amount": 100.00
            }
        ],
        "discounts": [
            {
                "discount_limit_date": "2024-05-05",
                "discount_type": "absolute",
                "discount_amount": 50.00
            }
        ],
        "calculations": [],
        "calculation_model": "01",
      }
    }
```

### Body Params

| Campo                     | Tipo    | Descrição                                                                           | Caracteres |
| ------------------------- | ------- | ----------------------------------------------------------------------------------- | ---------- |
| `barcode`                 | string  | Código de barras do boleto.                                                         | 44         |
| `digitable_line`          | string  | Linha digitável do boleto.                                                          | 47         |
| `status`                  | enum    | [Enumeradores de status de um boleto.](#enumeradores-status)                        | -          |
| `nominal_amount`          | float   | Valor nominal do boleto.                                                            | -          |
| `total_amount`            | float   | Valor calculado do boleto.                                                          | -          |
| `total_payment_amount`    | float   | Valor de pagamento do boleto.                                                       | -          |
| `partial_payment_allowed` | boolean | Indicador de aceite de pagamento parcial.                                           | -          |
| `paid_fine`               | float   | Total de multa efetivado no pagamento do boleto, calculado a partir do valor total. | -          |
| `paid_interest`           | float   | Total de juros efetivado no pagamento do boleto, calculado a partir do valor total. | -          |
| `discount_amount`         | float   | Total de descontos no pagamento do boleto, calculado a partir do valor total.       | -          |
| `expiration`              | string  | Data de vencimento do boleto.                                                       | 10         |
| `max_payment_date`        | string  | Data limite de pagamento do boleto.                                                 | 10         |
| `payer`                   | object  | [Objeto pagador do boleto.](#objeto-payer)                                          | -          |
| `beneficiary`             | object  | [Objeto beneficiário do boleto.](#objeto-beneficiary)                               | -          |
| `guarantor`               | object  | [Objeto sacador avalista do boleto](#objeto-guarantor)                              | -          |
| `rebate_amount`           | float   | Valor de rebate.                                                                    | -          |
| `interest`                | list    | [Lista de objetos interest.](#objeto-interest)                                      | -          |
| `fine`                    | list    | [Lista de objetos fine.](#objeto-fine)                                              | -          |
| `discounts`               | list    | [Lista de objetos discount.](#objeto-discount)                                      | -          |
| `calculations`            | list    | Lista do grupo cálculo de boleto.                                                   | -          |
| `calculation_model`       | string  | Método de cálculo do valor atual do boleto.                                         | 2          |