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

# Sicredi Cobrança as a data source

> Bring your Sicredi boleto liquidations, the financial movements of your Cobrança portfolio and the data of each paid boleto to Nekt.

Sicredi is a Brazilian cooperative financial institution. Its Cobrança product lets companies issue and manage boletos, and the Cobrança API gives programmatic access to them. This connector brings to the Catalog the boletos liquidated (paid) each day, the daily financial movements of your Cobrança portfolio (the "francesinha", with credits and debits such as fees) and the full data of each paid boleto (payer, due date, status, amounts), so you can reconcile what was received with your other systems.

> [!NOTE]
>
> The connector only reads data. It never registers, changes or writes off a boleto in Sicredi.

> [!NOTE]
>
> This connector reads the **Cobrança** API (boletos). Sicredi's **Pix** API is a separate product with its own credentials and a digital certificate, and it is not covered by this connector.

## Before you start

The connector logs in with credentials that **your company generates** at Sicredi; Nekt cannot generate them for you. You need:

* The **Cobrança** product contracted with your cooperative in the **API (Cobrança Online)** modality, with the adhesion term signed. If you are not sure, ask your account manager at the cooperative.
* Access to Sicredi's **Internet Banking** with the account that holds the Cobrança agreement.
* An account in the [Sicredi Developer Portal](https://developer.sicredi.com.br) (anyone can create one, for example the person in your company who handles integrations).

**1. Find your cooperative, posto and beneficiary codes**

Sicredi's Cobrança manual points to the Internet Banking menu **Cobrança**, option **Cadastrar títulos**, which shows three codes (if you cannot find them, ask your cooperative):

* **Cooperativa**: 4 digits (for example `0101`). It is also the cooperative number you use, with the account number, to log in to the Internet Banking.
* **Posto**: 2 characters, usually digits (for example `03`), the agency of the account. Some postos contain letters; type it exactly as shown.
* **Código de beneficiário**: 5 digits (for example `12345`), the code of your Cobrança agreement (also called código do convênio).

If your company has more than one account with Cobrança, use the codes of the account you want to read. Each account needs its own source in Nekt, with its own API key and its own access code.

**2. Create an app in the Developer Portal**

Log in to the [Sicredi Developer Portal](https://developer.sicredi.com.br), open **Minha Conta** > **Minhas Apps** and click **Cadastrar Nova App** (the portal's current label; Sicredi's manual calls it "criar uma nova aplicação"). Give it a name that identifies it as your production app, for example `API Cobrança 0101 12345 Produção` (your cooperative and beneficiary codes), and select these two APIs from the list:

* **Open API - Cobranca - Parceiros** (called "API COBRANÇA BOLETO" in Sicredi's manual)
* **Open API - OAuth - Parceiros** (called "OPEN API – OAUTH - PARCEIROS" in the manual)

The portal shows a Client ID and a Client Secret for the app. Do **not** enter them in Nekt: the Client ID is only used in the next step, to identify the app in the request for the token.

**3. Request the production access token (API key)**

In the Developer Portal, open **Suporte** > **Abra um chamado** (it opens Sicredi's support center) and fill in:

* subject: **API Cobrança Boletos**
* reason: **Solicitar Token de Acesso**
* environment: **Produção**
* the **Client ID** of the app you created

These options are not in Sicredi's manual; they come from the guides of other systems that integrate with Sicredi. Sicredi issues the token after reviewing the request.

When it is issued, open **Minha Conta** > **Minhas Apps** and, in the **Access Tokens** column of your app, click **detalhes** (the portal's current screen, as other integrators also describe it; the manual calls it "Ver detalhes"). Copy the access token: it looks like `1a2b3c4d-1234-5678-9abc-1234567890ab`. You will paste it in Nekt as the **API Key (x-api-key)**.

**4. Generate the access code in the Internet Banking**

Do this step last, right before you create the source in Nekt. In the Internet Banking, logged in with the account of the Cobrança agreement, open **Cobrança** > **Código de Acesso** > **Gerar** and confirm with your security device. Copy the code that is shown and keep it as a password: you will paste it in Nekt as the **Access Code**.

The **Código de Acesso** menu only appears when the agreement is in the API (Cobrança Online) modality. If you don't see it, ask your account manager to enable it.

> [!TIP]
>
> Create the source and run its first sync right after generating the access code. Sicredi's manual gives no validity for the code, but other integrators report that it stays available for 24 hours.

> [!WARNING]
>
> Use the **production** token. Sicredi issues a different token for its test environment (sandbox), and it does not work with real data.

## Configuring Sicredi Cobrança as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Sicredi Cobrança option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

The following configurations are available:

* **Cooperative Code**: the 4-digit cooperative number from step 1 (for example `0101`). If you type fewer digits, the leading zeros are added.

* **Posto Code**: the posto from step 1, usually 2 digits (for example `03`) but it may contain letters. A single digit gets its leading zero (`3` becomes `03`); letters are sent in upper case (`a1` becomes `A1`).

* **Beneficiary Code**: the 5-digit beneficiary code of your Cobrança agreement from step 1 (for example `12345`).

* **Access Code**: the access code generated in the Internet Banking in step 4.

* **API Key (x-api-key)**: the production access token of your Developer Portal app from step 3 (one per account; not the Client ID or the Client Secret).

* **Start Date**: the first day to read. Liquidations and financial movements are read from this day on. For example, `2026-01-01`. The connector reads Sicredi one day at a time, so an older date makes the first run longer. If you select the **Boletos** stream, prefer a recent date: it makes one request per paid boleto.

* **Lookback Days** (advanced): (Default: 5) each run reads again this many days before the last day already read, to catch payments Sicredi reports on a later business day, for example after a long holiday. From 0 to 60.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis.

> Tip: The stream can be found more easily by typing its name.

**Boletos** makes one request to Sicredi for each paid boleto, so it is the slowest stream: with a Start Date far in the past, the first run can take hours. Select it when you need the payer, due date or status of each boleto, preferably with a recent Start Date; **Boletos Liquidados** already has the amounts paid. Boletos saves its progress at the end of each day it reads, so a first run that stops halfway continues from the last complete day.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.

* **Layer**: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: a folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: all streams are INCREMENTAL, which is the recommended type: each run reads only the days since the last run (plus the lookback). Read more about Sync Types [here](https://docs.nekt.com/get-started/core-concepts/types-of-sync).

> [!WARNING]
>
> A full sync (FULL\_TABLE, or an [Additional Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync)) reads every day again since the Start Date and **replaces** the table with what Sicredi returns at that moment. Sicredi does not document how long it keeps old days available: if it no longer serves very old days, their rows leave the table. Prefer incremental sync, and avoid full syncs on **Boletos**, which also repeat one request per boleto.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how often you want data to be extracted from this source. **Once a day** is enough for most uses: Sicredi lists liquidations by day, and each run also reads the current day again.

Optionally, you can define some additional settings:

* Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an [Additional Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync). See the warning above before enabling it.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

> [!WARNING]
>
> For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.

> [!NOTE]
>
> Each run first logs in and makes one request per listing the selected streams use, so a wrong access code or API key stops the run before any table is written, with a message saying what to check. Sicredi answers "not found" for days without data. While a source has never listed any row, a week or more of "not found" in every listing stops the run and asks you to check the codes, since wrong codes look the same; once the source has listed rows with its current codes, a quiet week is only a warning (after you edit the codes, the first week counts as a new source again). If one listing has rows and the other answers "not found" for a week or more (the posto and the cooperative filter the financial movements differently), the run also stops, unless both listings had rows before. Every day is read completely (all its pages) before it is saved. If a day's listing changes while it is read, it is read again; if Sicredi keeps returning an inconsistent listing, fewer financial movements than it announces, or exactly the 1,000 movements per day it documents as its limit, the run stops before writing that stream, so its table is never updated with a partial read.

## How the data is organized

* **Boletos Liquidados** has one row per liquidation Sicredi lists for a day. Pix payments made on weekends and holidays are listed by Sicredi on the next business day. `tipo_liquidacao` can be a payment notice (`AVISO DE PAGAMENTO REDE` or `AVISO DE PAGAMENTO COMPE`) or the liquidation itself (`REDE`, `COMPE`, `PIX` and others). When Sicredi lists a notice and the liquidation of the same boleto, they are separate rows: filter by `tipo_liquidacao` before summing amounts.
* **Movimentações** has every credit and debit posted to your Cobrança portfolio on each day: liquidations (credits) and charges such as fees (debits), with the payer and the account the amount was distributed to.
* **Boletos** has the boleto's own data (payer, issue and due dates, status, interest and discounts, liquidation date and amounts, expected credit date) for each boleto in Boletos Liquidados. Sicredi has no listing of all boletos: open, overdue or written-off boletos that were not paid inside the synced period are not available through the API.

Two identical rows listed together on the same day (for example a boleto paid twice with the same data) are kept as two rows, told apart by the `ocorrencia` column. In the financial movements, a row that Sicredi repeats on two pages is a copy and is saved once, as long as the rows kept add up to the total Sicredi announces. In the liquidated boletos, which have no total, a row repeated on two pages means another one was left out, so the run stops instead (see Troubleshooting).

## Troubleshooting

| What the run log says | What to do |
| :- | :- |
| Sicredi did not accept the API key (x-api-key) | Copy the production access token again from **Minhas Apps** > your app > **Access Tokens** > **detalhes** in the Developer Portal. The sandbox token, the Client ID and the Client Secret do not work as the API key. |
| Sicredi did not accept the login of this source | Check the Cooperative Code, the Beneficiary Code and the Access Code. Generate a new Access Code in the Internet Banking (**Cobrança** > **Código de Acesso** > **Gerar**) if needed. If the code was generated a while ago, it may no longer be valid: generate a new one and update the source right away. |
| The Cooperative code or the Beneficiary code is not the one of the Sicredi login | The codes in the source belong to another agreement than the access code. Use the codes shown in **Cobrança** > **Cadastrar títulos** for the account where the access code was generated. |
| Sicredi denied access (403) | Check that your Developer Portal app includes the APIs **Open API - Cobranca - Parceiros** ("API COBRANÇA BOLETO" in the manual) and **Open API - OAuth - Parceiros** ("OPEN API – OAUTH - PARCEIROS"), and that the agreement is in the API (Cobrança Online) modality. |
| Sicredi answered 'not found' for every day ... and has never listed a row for it | The Cooperative Code, Posto Code or Beneficiary Code does not match the Cobrança agreement, or the agreement is not in the API (Cobrança Online) modality. Check the codes with your cooperative. If the agreement has not received any payment yet, the sync passes once Sicredi lists the first one. |
| Sicredi listed liquidated boletos (or financial movements) but answered 'not found' for every day in the other listing | The Posto Code or the Cooperative Code (for the financial movements) or the Beneficiary Code (for the liquidated boletos) is probably wrong: check them with your cooperative. If your agreement does not use that query, deselect its streams instead. |
| Sicredi listed no liquidated boletos and no financial movements ... (warning) | Normal for a period without payments. If payments were expected, check the codes with your cooperative. |
| Sicredi returned exactly 1,000 financial movements for a day | 1,000 per day is the limit Sicredi documents for this listing, so the day may have more. Ask your cooperative to raise the limit of the financial movements query, or contact Nekt support. |
| Sicredi returned only X of the Y financial movements of a day | Sicredi returned fewer movements than it announced. Run the sync again later; if it repeats, ask your cooperative about the limit of the financial movements query, or contact Nekt support. |
| Sicredi's listing ... showed boletos (or movements) on two pages | Sicredi's listing changed or repeated rows while it was read, so some rows could be missing. Run the sync again later; if it repeats, contact Nekt support. |
| Sicredi refused the date ... when listing the financial movements | Contact Nekt support with the date and Sicredi's answer shown in the message. |
| Sicredi's boleto lookup did not find most of the liquidated boletos | Check that your Developer Portal app includes the API **Open API - Cobranca - Parceiros** ("API COBRANÇA BOLETO" in the manual). You can deselect the Boletos stream meanwhile: Boletos Liquidados has every liquidation. |
| Sicredi is limiting the number of requests | No action needed: the run waits and retries, so it takes longer. |

# Streams and Fields

## Available streams

The table below lists every stream, its **slug** (the exact identifier to pass when creating the source via API) and a short description.

| Stream | Slug | Description |
| - | - | - |
| Boletos Liquidados | `boletos_liquidados` | Every boleto liquidation (payment) Sicredi lists for each day, with the amounts paid, interest, discount, late fee and how it was paid. |
| Movimentações | `movimentacoes` | Every credit and debit posted to the Cobrança portfolio on each day (the "francesinha"), with the payer and the distribution account. |
| Boletos | `boletos` | The full data of each paid boleto: payer, issue and due dates, status, interest, discounts, liquidation and expected credit date. |

Amounts are decimals. Dates are the business dates Sicredi gives; the liquidation timestamp is in UTC. Lists of objects (the boleto's discounts and credit distribution) are JSON text.

> [!NOTE]
>
> The connector was built from Sicredi's Manual da API de Cobrança (version 3.9). Some values are not fully listed in the manual (for example every portfolio type); the first runs confirm them.

## Fields by stream

> **Boletos Liquidados**
>
> One row per boleto liquidation that Sicredi lists for a day.
>
> Table: `boletos_liquidados` · Primary key: `liquidacao_id` · Sync: Incremental (`dia_consulta`), the last days re-read on every run
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `liquidacao_id` | String | Identifier of the liquidation built by Nekt from the cooperative, beneficiary, nosso número, payment date, liquidation type and occurrence. |
> | `cooperativa` | String | Cooperative code of the beneficiary of the boleto. |
> | `codigo_beneficiario` | String | Beneficiary code (Cobrança agreement) of the boleto. |
> | `cooperativa_posto_beneficiario` | String | Cooperative and posto (agency) code of the beneficiary. |
> | `nosso_numero` | String | Nosso número: Sicredi's identifier of the boleto. |
> | `seu_numero` | String | Seu número: the identifier your company gave the boleto. |
> | `tipo_carteira` | String | Portfolio (carteira) of the boleto, for example CARTEIRA\_SIMPLES or CARTEIRA\_CAUCIONADA. |
> | `data_pagamento` | Date | Liquidation (payment) date of the boleto. |
> | `valor` | Decimal | Nominal (face) value of the boleto. |
> | `valor_liquidado` | Decimal | Amount liquidated (paid) for the boleto. |
> | `juros_liquido` | Decimal | Interest charged on the liquidation. |
> | `desconto_liquido` | Decimal | Discount granted on the liquidation. |
> | `multa_liquida` | Decimal | Late fee (multa) charged on the liquidation. |
> | `abatimento_liquido` | Decimal | Rebate (abatimento) granted on the liquidation. |
> | `tipo_liquidacao` | String | How the boleto was liquidated, for example REDE, COMPE, PIX, AVISO DE PAGAMENTO REDE. |
> | `ocorrencia` | Integer | 1 for the first row of a boleto with this payment date and liquidation type in the day's listing, 2 for a second identical one, and so on. |
> | `dia_consulta` | Date | Day of Sicredi's listing in which the row was read; incremental replication key. |
> | `synced_at` | Datetime | When the sync that wrote this row started (UTC). |

> **Movimentações**
>
> Every credit and debit posted to the Cobrança portfolio on each day (the "francesinha").
>
> Table: `movimentacoes` · Primary key: `movimentacao_id` · Sync: Incremental (`dia_consulta`), the last days re-read on every run
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `movimentacao_id` | String | Identifier of the movement built by Nekt from its identifying fields and occurrence. |
> | `agencia` | String | Cooperative (agency) code of the beneficiary. |
> | `posto` | String | Posto (branch) code of the beneficiary. |
> | `beneficiario` | String | Beneficiary code (Cobrança agreement). |
> | `nosso_numero` | String | Nosso número of the boleto of the movement. |
> | `seu_numero` | String | Seu número: the identifier your company gave the boleto. |
> | `nome_pagador` | String | Name of the payer of the boleto. |
> | `ident_pagador` | String | Document (CPF or CNPJ) of the payer of the boleto. |
> | `data_movimento` | Date | Date of the financial movement. |
> | `data_lancamento` | Date | Posting date of the financial movement. |
> | `valor_nominal` | Decimal | Nominal value of the boleto of the movement. |
> | `valor_abatimento` | Decimal | Rebate (abatimento) amount. |
> | `valor_desconto` | Decimal | Discount amount. |
> | `valor_juros` | Decimal | Interest amount. |
> | `valor_multa` | Decimal | Late fee (multa) amount. |
> | `valor_movimento` | Decimal | Amount of the financial movement. |
> | `tipo_movimento` | String | Direction of the movement: CREDITO (credit) or DEBITO (debit). |
> | `desc_movimento` | String | Description of the movement, for example LIQUIDACAO REDE. |
> | `carteira` | String | Portfolio (carteira) of the boleto: SIMPLES, CAUCIONADA, DESCONTADA or VINCULADA. |
> | `ag_distribuicao` | String | Agency of the account the amount was distributed to. |
> | `conta_distribuicao` | String | Account the amount was distributed to. |
> | `perc_distribuicao` | Decimal | Percentage of the amount distributed to that account. |
> | `valor_distribuicao` | Decimal | Amount distributed to that account (credit distribution). |
> | `cod_tx_id` | String | Pix TXID of the boleto, for hybrid boletos (with QR Code). |
> | `ocorrencia` | Integer | 1 for the first row with the same identifying fields in the day's listing, 2 for a second identical one, and so on. |
> | `dia_consulta` | Date | Posting day of Sicredi's listing in which the row was read; incremental replication key. |
> | `synced_at` | Datetime | When the sync that wrote this row started (UTC). |

> **Boletos**
>
> The full data of each boleto listed in Boletos Liquidados, read from Sicredi's boleto lookup (one request per boleto).
>
> Table: `boletos` · Primary key: `cooperativa`, `codigo_beneficiario`, `nosso_numero` · Sync: Incremental (`dia_consulta`)
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `cooperativa` | String | Cooperative code of the beneficiary. |
> | `codigo_beneficiario` | String | Beneficiary code (Cobrança agreement) of the boleto. |
> | `nosso_numero` | String | Nosso número: Sicredi's identifier of the boleto. |
> | `seu_numero` | String | Seu número: the identifier your company gave the boleto. |
> | `id_titulo_empresa` | String | Company identifier (idTituloEmpresa) sent when the boleto was registered. |
> | `linha_digitavel` | String | Typeable line (linha digitável) of the boleto. |
> | `codigo_barras` | String | Barcode of the boleto. |
> | `carteira` | String | Portfolio (carteira): SIMPLES, CAUCIONADA, DESCONTADA or VINCULADA. |
> | `situacao` | String | Status of the boleto, for example LIQUIDADO, LIQUIDADO REDE, LIQUIDADO PIX, BAIXADO POR SOLICITACAO. |
> | `data_emissao` | Date | Issue date of the boleto. |
> | `data_vencimento` | Date | Due date of the boleto. |
> | `valor_nominal` | Decimal | Nominal (face) value of the boleto. |
> | `pagador_codigo` | String | Code of the payer. |
> | `pagador_documento` | String | Document (CPF or CNPJ) of the payer. |
> | `pagador_nome` | String | Name of the payer. |
> | `beneficiario_final_codigo` | String | Code of the final beneficiary, when the boleto has one. |
> | `beneficiario_final_documento` | String | Document (CPF or CNPJ) of the final beneficiary. |
> | `beneficiario_final_nome` | String | Name of the final beneficiary. |
> | `tx_id` | String | Pix transaction identifier (txId), for hybrid boletos. |
> | `codigo_qr_code` | String | Pix QR Code of the hybrid boleto. |
> | `tipo_multa` | String | Type of the late fee: VALOR (amount) or PERCENTUAL (percentage). |
> | `multa` | Decimal | Late fee of the boleto, as an amount or a percentage (see tipo\_multa). |
> | `data_inicio_multa` | Date | Date from which the late fee is charged. |
> | `abatimento` | Decimal | Rebate (abatimento) granted on the boleto. |
> | `tipo_juros` | String | Type of interest: VALOR (amount) or PERCENTUAL (percentage). |
> | `tipo_juros_percentual` | String | Period of percentage interest: DIARIO (daily) or MENSAL (monthly). |
> | `juros` | Decimal | Interest of the boleto, as an amount or a percentage (see tipo\_juros). |
> | `data_inicio_juros` | Date | Date from which interest is charged. |
> | `dias_protesto` | Integer | Days after the due date for the automatic protest. |
> | `dias_negativacao` | Integer | Days after the due date for the credit bureau report (negativação). |
> | `validade_apos_vencimento` | Integer | Days the boleto can still be paid after the due date. |
> | `tipo_desconto` | String | Type of discount: VALOR (amount) or PERCENTUAL (percentage). |
> | `desconto_antecipacao` | Decimal | Early payment discount of the boleto. |
> | `descontos` | String (JSON) | Up to 3 discounts of the boleto (JSON array with numeroOrdem, valorDesconto and dataLimite). |
> | `liquidacao_data` | Datetime | Date and time of the liquidation of the boleto (UTC). |
> | `liquidacao_valor` | Decimal | Amount paid in the liquidation. |
> | `liquidacao_multa` | Decimal | Late fee charged in the liquidation. |
> | `liquidacao_abatimento` | Decimal | Rebate granted in the liquidation. |
> | `liquidacao_juros` | Decimal | Interest charged in the liquidation. |
> | `liquidacao_desconto` | Decimal | Discount granted in the liquidation. |
> | `data_movimento` | Date | Business day on which the liquidation was booked (the next business day for weekend or holiday payments). |
> | `data_previsao_pagamento` | Date | Expected date of the credit in your account. |
> | `boleto_com_split` | String | Whether the boleto has credit distribution (split): SIM or NAO. |
> | `dados_split` | String (JSON) | Credit distribution (split) data of the boleto, when Sicredi returns it (JSON object). |
> | `dia_consulta` | Date | Day of Sicredi's listing in which the boleto was found as liquidated; incremental replication key. |
> | `synced_at` | Datetime | When the sync that wrote this row started (UTC). |

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

> **[Download Sicredi Cobrança skills file](/sources/sicredi-cobranca.md)**
>
> Sicredi Cobrança connector documentation as plain markdown, for use in AI agent contexts.


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