A consent is a permission given by the end user to access their financial data in the Open Finance Network in Brazil.
Belvo API Docs (1.223.0)
Reach new audiences and convert more users by easily and safely connecting to their financial data, understanding their behavior and enabling instant payments with open finance. Through our API, you can access:
Belvo is an open banking API for Latin America that allows companies to access banking and fiscal information in a secure as well as agile way.
Through our API, you can access:
- Banking Information in Brazil
- Employment Information in Brazil
- Employment Information in Mexico
- Fiscal Information in Mexico
- Fiscal Information in Chile
You can also use our API to make payments in:
- Brazil
- Mexico
If you woud like the response documentation in Excel or CSV form, please download them from our public GitHub Reposiitory: Belvo Open Finance Data Dictionaries.
Our EXCEL and CSV files are additionally localized into Spanish and Portuguese (Brazil).
Available for:
- 🟢 Aggregation and Enrichment
- ⚪️ Payment Initiation
Use our Sandbox environment to build your integration. We offer dummy data that mimics that of real-world use cases, which means you can test out all the endpoints, use the widget, and implement webhooks - just as you would with real-world data!
All you need to get started with the Sandbox environment is to get your API keys. We really recommend that you start creating your integration in this environment.
Available for:
- 🟢 Aggregation and Enrichment
- 🟢 Payment Initiation
After you have tested your integration in the Sandbox environment and are ready to go live, you'll need to request access to our Production environment. After you request access, our Sales Team will get in contact with you to schedule a meeting just to ensure your needs are met, and then you'll just need to go through a certification process with one of our engineers to make sure that your integration is running optimally. To prepare for the certification meeting, just follow our Integration checklist.
Once your integration is certified, all you'll need to do is:
- Request Production API keys (and change your Sandbox API keys in the code to these new ones).
- Change the base URL that you make requests to from
sandbox.belvo.comtoapi.belvo.com. - If you're using webhooks, make sure to set a Production URL for your webhooks.
We use the following HTTP status code in the response depending on the success or failure:
| Status Code | Description |
|---|---|
200 | ✅ Success - The content is available in the response body. |
201 | ✅ Success - The content was created successfully on Belvo. |
204 | ✅ Success - No content to return. |
400 | ❌ Bad Request Error - Request returned an error, detail in the content. |
401 | ❌ Unauthorized - The Belvo credentials provided are not valid. |
404 | ❌ Not Found - The resource you try to access cannot be found. |
405 | ❌ Method Not Allowed - The HTTP method you are using is not accepted for this resource. |
408 | ❌ Request Timeout - The request timed out and was terminated by the server. |
428 | ❌ MFA Token Required - MFA token was required by the institution to connect. |
500 | ❌ Internal Server Error - The detail of the error is available in the response body. |
Belvo API errors are returned in JSON format. For example, an error might look like this:
[
{
"request_id": "a6e1c493d7a29d91aed4338e6fcf077d",
"message": "This field is required.",
"code": "required",
"field": "link"
}
]Typically, an error response will have the following parameters:
request_id: a unique ID for the request, you should share it with the Belvo support team for investigations.message: human-readable description of the error.code: a unique code for the error. Check the table below to see how to handle each error code.field(optional): The specific field in the request body that has an issue.
When you need help with a specific error, include the request identifier (request_id) in your message to the Belvo support team. This will speed up investigations and get you back up and running in no time at all.
For a full list of errors and how to troubleshoot them, please see our dedicated Error Handling article.
Implement an automated exponential backoff of up to five retries. We recommend using a base interval of three seconds with a factor of two. For example, the first retry should be after three seconds, the second retry after six seconds (2 * 3), the third retry after 12 seconds (2 * 6), the fourth retry after 24 seconds (2 * 12), and the fifth retry after 48 seconds (2 * 24).
You should not retry making requests if you receive a 40x response, as this is a client error.
The only exception is the “Too Many Sessions” error, as it means that your end-user is accessing the account from another browser at the same time. In this case, please implement the same retry policy as with 50x errors.
In our schema, you may see that a field has been marked as deprecated. This means that this field is no longer maintained by the Belvo team. You may still receive data for this field depending on the institution, however, you should not rely on this field.
In our API specification, you'll see that some response parameters will have a required annotation. According to the OpenAPI specification, when a response parameter is marked as required, this means that the response key must be returned. However, the value of that response parameter can be null.
📘 Info
In short, any response parameter marked as required will be returned by our API, but the value can be set to null.
Institutions
An institution is an entity that Belvo can access information from. It can be a:
- bank institution, such as Nubank Brazil.
- fiscal institution, such as the Servicio de Administración Tributaria (SAT) in Mexico.
- employment institutions, such as Instituto Mexicano del Seguro Social (IMSS) in Mexico or Instituto Nacional do Seguro Social (INSS) in Brazil.
Links
A Link is a set of credentials associated to an end-user's access to an institution. You will need to register a Link before accessing information from that specific end-user, such as account or transaction details.
We recommend using the Belvo Hosted Widget to manage the connection process.
Owners
An owner represents the person who has access to a Link and is the owner of all the accounts inside the Link.
You can use this endpoint in order to get useful information about your client, such as:
- their full name
- key contact information
- information about the ID document they used when opening the account
Accounts
An account is the representation of a bank account inside a financial institution. A user can have one or more accounts in an institution.
For example, one user (or link) can have a checking account, several credit cards, and a loan account.
Querying for a user's account information is useful as you can get information regarding:
- what types of accounts the user has.
- the balance for each account (savings, checking, credit card, loan, and so on).
- detailed information regarding their credit card spending.
- the current situation of any loans they may have.
Exchanges
An exchange is a currency exchange operation in the Brazilian Open Finance Network. The resource contains details of foreign exchange operations, including exchange rates, amounts in local and foreign currencies, and settlement information. Each exchange operation can have associated history events that record any modifications to the original contract.
Exchange History Object (Brazil)
Details regarding modification events for an exchange operation in the Brazilian Open Finance Network.
Each history entry represents a modification event (an audit trail) for an exchange operation. The Exchange object holds the original contract data, while any changes to the contract (alterations, changes to settlements, etc.) are recorded as history events.
Belvo's unique identifier for the current item.
The link.id the data belongs to.
The Belvo-generated unique identifier for the original exchange operation.
The ISO-8601 timestamp of when the data point was created in Belvo's database.
The ISO-8601 timestamp when the data point was collected.
The network's unique identifier for the exchange operation.
The sequence number of the event record at the Central Bank (Bacen).
The type of event that occurred for the exchange operation.
We return one of the following enum values:
1- Contract in the primary market2- Modification of exchange operation in the primary market3- Cancellation of exchange operation in the primary market4- Settlement of exchange operation in the primary market5- Write-off of outstanding amount to be settled in the primary market6- Reinstatement of written-off outstanding amount in the primary market9- Nullification of exchange operation in the primary market (used, for example, in the nullification of a settlement/cancellation event)
Note: Codes follow the messaging layout sent by institutions to the Central Bank of Brazil.
The ISO-8601 timestamp when the event occurred.
The date when the operation (buy or sell), after the event, is scheduled to be settled, in YYYY-MM-DD format.
The exchange rate applied to the operation after the event.
The three-letter currency code (ISO-4217) for the exchange rate.
The total value of the operation in local currency after the event.
The three-letter currency code (ISO-4217) for the local currency.
The total value of the operation in foreign currency after the event.
The three-letter currency code (ISO-4217) for the foreign currency.
The outstanding balance to be settled in foreign currency after the event.
This field is mandatory for events created (event_created_at) from April 15, 2024 onwards, in cases of exchange operations with future settlement.
The currency of the outstanding balance. Required if operation_outstanding_balance_amount is not null.
The "All-in Rate" (Valor Efetivo Total/Total Effective Cost), representing the total cost of the operation after the event.
This field is required for spot exchange operations that reach up to the limit of $100,000 USD or equivalent in other currencies.
The currency of the VET (always BRL). Required if tev_amount_amount is not null.
The percentage of the foreign currency value that was granted to the client in advance after the event.
This field is mandatory in cases of exchange operations with future settlement.
The method of delivery for the foreign currency.
We return one of the following enum values:
CARTA_CREDITO_A_VISTA(Code 10) - Sight letter of creditCARTA_CREDITO_A_PRAZO(Code 15) - Term letter of creditCONTA_DEPOSITO(Code 20) - Deposit accountCONTA_DEPOSITO_MOEDA_ESTRANGEIRA_PAIS(Code 21) - Foreign currency deposit account in countryCONTA_DEPOSITO_EXPORTADOR_MANTIDA_NO_EXTERIOR(Code 22) - Exporter's deposit account maintained abroadCONTA_DEPOSITO_OU_PAGAMENTO_EXPORTADOR_INSTITUICAO_EXTERIOR(Code 23) - Deposit account or payment to exporter at foreign institutionCONVENIO_PAGAMENTOS_E_CREDITOS_RECIPROCOS(Code 25) - Reciprocal payments and credits agreementCHEQUE(Code 30) - CheckESPECIE_CHEQUES_VIAGEM(Code 50) - Cash or traveler's checksCARTAO_PREPAGO(Code 55) - Prepaid cardTELETRANSMISSAO(Code 65) - Wire transferTITULOS_VALORES(Code 75) - Securities/bondsSIMBOLICA(Code 90) - SymbolicSEM_MOVIMENTACAO_VALORES(Code 91) - No movement of fundsDEMAIS(Code 99) - OthersOUTRO_NAO_MAPEADO_OFB- Other not mapped by Open Finance Brazilnull
The 5-digit Central Bank code that classifies the "nature" of the operation.
This code must comply with the nature codes referenced in Resolution 277 or Circular 3690, as applicable to the exchange contract.
The code indicating the relationship between the customer and the foreign payer/receiver.
This code must comply with the relationship codes referenced in Resolution 277 or Circular 3690, as applicable to the exchange contract.
Note: This field is optional when:
- The
settlement_methodfield isESPECIE_CHEQUES_VIAGEMorCARTAO_PREPAGO.- The
event_typefield is different from4(Settlement of exchange operation in the primary market).If the institution has this information, it is mandatory to send it. If the information is updated after contracting, it must be sent through events.
The name of the foreign payer or receiver.
Note: This field is optional when:
- The
settlement_methodfield isESPECIE_CHEQUES_VIAGEMorCARTAO_PREPAGO.- The
event_typefield is different from4(Settlement of exchange operation in the primary market).If the institution has this information, it is mandatory to send it. If the information is updated after contracting, it must be sent through events.
The country code of the foreign payer or receiver, following the ISO 3166-1 standard.
Note: This field is optional when:
- The
settlement_methodfield isESPECIE_CHEQUES_VIAGEMorCARTAO_PREPAGO.- The
event_typefield is different from4(Settlement of exchange operation in the primary market).If the institution has this information, it is mandatory to send it. If the information is updated after contracting, it must be sent through events.
{ "id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d", "link": "30cb4806-6e00-48a4-91c9-ca55968576c8", "exchange_id": "c4bfecf9-4eb6-4920-9f9f-e1f1e60ef321", "created_at": "2022-02-09T08:45:50.406032Z", "collected_at": "2022-02-09T08:45:50.406032Z", "operation_identifier": "92792126019929240", "event_sequence_number": "493874649457", "event_type": 2, "event_created_at": "2023-03-10T14:00:00Z", "operation_due_date": "2023-03-20", "local_operation_tax_amount": 1.4, "local_operation_tax_currency": "BRL", "local_operation_value_amount": 950, "local_operation_value_currency": "BRL", "foreign_operation_value_amount": 678.57, "foreign_operation_value_currency": "USD", "operation_outstanding_balance_amount": 678.57, "operation_outstanding_balance_currency": "USD", "tev_amount_amount": 1002, "tev_amount_currency": "BRL", "local_currency_advance_percentage": 0.12, "settlement_method": "CARTA_CREDITO_A_PRAZO", "operation_category_code": "90302", "foreign_partie_relationship_code": "50", "foreign_partie_name": "Global Tech Imports LLC", "foreign_partie_country_code": "US" }
Request
This endpoint is currently undergoing development. As such, minor changes or bugs may occur. If you encounter any issues, please contact your Belvo representative.
With the List Exchanges method, you can:
- [Required] List exchanges related to a specific
link.id(using thelinkquery parameter). - Get the details of a specific
exchange.id(using theidquery parameter).
Please see the query list below for a list of fields that you can filter your responses by. For more information on how to use filters, see our Filtering responses article.
This method returns a paginated response (default: 100 items per page). You can use the page_size query parameter to increase the number of items returned to a maximum of 1000 items. You can use the page query parameter to navigate through the results. For more details on how to navigate Belvo's paginated responses, see our Pagination Tips article.
The link.id you want to filter by.
Return information only for this resource id.
Return results only for these link.ids.
Return information for these resource ids.
Indicates how many results to return per page. By default we return 100 results per page.
ℹ️ The minimum number of results returned per page is 1 and the maximum is 1000. If you enter a value greater than 1000, our API will default to the maximum value (1000).
Omit certain fields from being returned in the response. For more information, see our Filtering responses DevPortal article.
Return only the specified fields in the response. For more information, see our Filtering responses DevPortal article.
Return items that were retrieved from the institution on this date (YYYY-MM-DD or full ISO-8601 timestamp).
Return items that were retrieved from the institution after this date (YYYY-MM-DD or full ISO-8601 timestamp).
Return items that were retrieved from the institution after or on this date (YYYY-MM-DD or full ISO-8601 timestamp).
Return items that were retrieved from the institution before this date (YYYY-MM-DD or full ISO-8601 timestamp).
Return items that were retrieved from the institution before or on this date (YYYY-MM-DD or full ISO-8601 timestamp).
Return items that were retrieved from the institution between two dates (YYYY-MM-DD or full ISO-8601 timestamp). The first value indicates the start of the range and the second value indicates the end of the range.
Return items that were last updated in Belvo's database on this date (in YYYY-MM-DD format).
Return items that were last updated in Belvo's database after this date (in YYYY-MM-DD format).
Return items that were last updated in Belvo's database after or on this date (in YYYY-MM-DD format).
Return items that were last updated in Belvo's database before this date (in YYYY-MM-DD format).
Return items that were last updated in Belvo's database before or on this date (in YYYY-MM-DD format).
Return accounts that were last updated in Belvo's database between two dates (in YYYY-MM-DD format). The first value indicates the start of the range and the second value indicates the end of the range.
- Sandboxhttps://sandbox.belvo.com/api/br/exchanges/
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
-u <username>:<password> \
'https://sandbox.belvo.com/api/br/exchanges/?link=8848bd0c-9c7e-4f53-a732-ec896b11d4c4&id=24ccab1d-3a86-4136-a6eb-e04bf52b356f&link__in=5722d0ba-69d7-42dc-8ff5-33767b83c5d6&id__in=6b3dea0f-be29-49d1-aabe-1a6d588642e6&page_size=100&page=1&omit=string&fields=string&collected_at=2022-05-01&collected_at__gt=2022-05-05&collected_at__gte=2022-05-04&collected_at__lt=2022-04-01&collected_at__lte=2022-03-30&collected_at__range=2022-01-01%2C2022-12-31&created_at=2022-05-05&created_at__gt=2022-05-05&created_at__gte=2022-05-04&created_at__lt=2022-04-01&created_at__lte=2022-03-30&created_at__range=2022-01-01%2C2022-12-31'OK - Exchanges Retrieved
The URL to next page of results. Each page consists of up to 100 items. If there are not enough results for an additional page, the value is null.
In our documentation example, we use {endpoint} as a placeholder value. In production, this value will be replaced by the actual endpoint you are currently using (for example, accounts or owners).
The URL to the previous page of results. If there is no previous page, the value is null.
{ "count": 130, "next": "https://sandbox.belvo.com/api/{endpoint}/?link=1bd948f7-245d-4313-b604-34d1044cb908page=2", "previous": null, "results": [ { … } ] }
Request
This endpoint is currently undergoing development. As such, minor changes or bugs may occur. If you encounter any issues, please contact your Belvo representative.
Retrieve exchange operations for an existing link. By default, we retrieve exchange data for the last 365 days.
Note: When you retrieve exchanges, we automatically retrieve the exchange history for each exchange operation found.
Omit certain fields from being returned in the response. For more information, see our Filtering responses DevPortal article.
Return only the specified fields in the response. For more information, see our Filtering responses DevPortal article.
The link.id you want to retrieve information for.
The starting date for which you want to retrieve exchange data, in YYYY-MM-DD format. If not provided, we retrieve data for the last 365 days.
The ending date for which you want to retrieve exchange data, in YYYY-MM-DD format. If not provided, we retrieve data up to today.
- Sandboxhttps://sandbox.belvo.com/api/br/exchanges/
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
-u <username>:<password> \
'https://sandbox.belvo.com/api/br/exchanges/?omit=string&fields=string' \
-H 'Content-Type: application/json' \
-d '{
"link": "c81a1dea-6dd6-4999-8b9f-541ee8197058",
"date_from": "2022-01-01",
"date_to": "2022-12-31",
"save_data": true
}'OK - Exchanges Retrieved (when save_data=false)
Belvo's unique identifier for the current item.
The link.id the data belongs to.
The ISO-8601 timestamp of when the data point was created in Belvo's database.
The ISO-8601 timestamp when the data point was collected.
The network's unique identifier for the exchange operation.
The 12-digit operation registration number from the Brazil Central Bank (Bacen). This can be null if the operation has not yet been registered.
The type of exchange operation.
We return one of the following enum values:
COMPRA- Buy (client is buying foreign currency)VENDA- Sell (client is selling foreign currency)
The ISO-8601 timestamp when the exchange operation was contracted.
The CNPJ of the institution authorized to conduct the operation.
The name of the authorized institution.
The CNPJ of the intermediary institution, if one was used.
The name of the intermediary institution. Must be present if intermediary_institution_identifier is available.
The currently scheduled settlement date for the operation, in YYYY-MM-DD format.
Note: This field is updated if any changes are made to the exchange operation.
The exchange rate applied to the operation.
The three-letter currency code (ISO-4217) for the exchange rate.
The total value of the operation in local currency.
The three-letter currency code (ISO-4217) for the local currency.
The total value of the operation in the foreign currency.
The three-letter currency code (ISO-4217) for the foreign currency.
The outstanding balance to be settled, in the foreign currency. In the case that the exchange operation is scheduled to be settled within two days of the operation_requested_at, this value can be null.
The currency of the outstanding balance. Required if operation_outstanding_balance_amount is not null.
The "All-in Rate" (Valor Efetivo Total/Total Effective Cost), representing the total cost of the operation. Required when the operation is scheduled to be settled within two days of the operation_requested_at and does not exceed $100,000 USD.
The currency of the VET (always BRL). Required if tev_amount_amount is not null.
The percentage of the foreign currency value that was granted to the client in advance. In the case that the exchange operation is scheduled to be settled within two days of the operation_requested_at, this value can be null.
The method of delivery for the foreign currency.
We return one of the following enum values:
CARTA_CREDITO_A_VISTA(Code 10) - Sight letter of creditCARTA_CREDITO_A_PRAZO(Code 15) - Term letter of creditCONTA_DEPOSITO(Code 20) - Deposit accountCONTA_DEPOSITO_MOEDA_ESTRANGEIRA_PAIS(Code 21) - Foreign currency deposit account in countryCONTA_DEPOSITO_EXPORTADOR_MANTIDA_NO_EXTERIOR(Code 22) - Exporter's deposit account maintained abroadCONTA_DEPOSITO_OU_PAGAMENTO_EXPORTADOR_INSTITUICAO_EXTERIOR(Code 23) - Deposit account or payment to exporter at foreign institutionCONVENIO_PAGAMENTOS_E_CREDITOS_RECIPROCOS(Code 25) - Reciprocal payments and credits agreementCHEQUE(Code 30) - CheckESPECIE_CHEQUES_VIAGEM(Code 50) - Cash or traveler's checksCARTAO_PREPAGO(Code 55) - Prepaid cardTELETRANSMISSAO(Code 65) - Wire transferTITULOS_VALORES(Code 75) - Securities/bondsSIMBOLICA(Code 90) - SymbolicSEM_MOVIMENTACAO_VALORES(Code 91) - No movement of fundsDEMAIS(Code 99) - OthersOUTRO_NAO_MAPEADO_OFB- Other not mapped by Open Finance Brazilnull
The 5-digit Central Bank code that classifies the "nature" of the operation.
This code must comply with the nature codes referenced in Resolution 277 or Circular 3690, as applicable to the exchange contract.
[ { "id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d", "link": "30cb4806-6e00-48a4-91c9-ca55968576c8", "created_at": "2022-02-09T08:45:50.406032Z", "collected_at": "2022-02-09T08:45:50.406032Z", "operation_identifier": "92792126019929240", "operation_number": "393874649456", "operation_type": "COMPRA", "operation_requested_at": "2023-03-07T08:30:00Z", "authorized_institution_identifier": 11225860000140, "authorized_institution_name": "AGENCIA CORRETORA", "intermediary_institution_identifier": 11225860000140, "intermediary_institution_name": "AGENCIA CORRETORA", "operation_due_date": "2018-02-15", "local_operation_tax_amount": 1.3, "local_operation_tax_currency": "BRL", "local_operation_value_amount": 1000.04, "local_operation_value_currency": "BRL", "foreign_operation_value_amount": 1000.04, "foreign_operation_value_currency": "USD", "operation_outstanding_balance_amount": 1000.04, "operation_outstanding_balance_currency": "USD", "tev_amount_amount": 1000.000004, "tev_amount_currency": "BRL", "local_currency_advance_percentage": 0.12, "settlement_method": "CARTA_CREDITO_A_PRAZO", "operation_category_code": "90302" } ]
Employments Brazil
Our employments resource for Brazil lets you get a comprehensive view of your user's current employment history and salary information.
For each user, we return the:
- work history (including occupations and employer data)
- historical and current salary information (per employer)
At the moment, the employments resource is available for:
- 🇧🇷 Brazil (INSS)
Employment Records Mexico
Our employment records resource for Mexico lets you get a comprehensive view of your user’s current social security contributions and employment history.
With Belvo's employment records resource for Mexico, you can access information about your user's current social security contributions and employment history. For the each user, we return the:
- personal data
- work history
- historical and current daily base salary
- and more!
At the moment, the employment records resource is available for:
- 🇲🇽 Mexico (IMSS)
- 🇲🇽 Mexico (ISSSTE)
Current Employments Mexico
The Current Employments resource provides real-time access to the current employment status of individuals in Mexico. This resource offers detailed information about whether an individual is currently employed or unemployed, along with their active employment records.
Incomes
Use the Incomes endpoint to gather insights on an account's income sources for the past 365 days. The endpoint is particularly useful when you want to verify a person's income.
📘 Info
The incomes resource is only available for Checking and Savings accounts associated with banking links.
Recurring Expenses
Belvo's Recurring Expenses API allows you to identify a user's regular payments for subscription services, such as Netflix or gym memberships, as well as utility payments, such as electricity or phone bills. We return information for up to 365 days.
📘 Info
The recurring expenses resource is only available for Checking, Savings and Credit Card accounts associated with banking links.
Customers (Brazil)
A customer is the payer that's going to push funds into your bank account. You need to create a customer in order to receive inflow payments to your organization's bank account.
This endpoint supports resource-level versioning. By including the header X-Belvo-API-Resource-Version: Payments-BR.V2, you can access the latest (V2) request and response formats. If the header is not provided, the default (V1) format will be used. See the API documentation for details on the differences between versions.
Bank Accounts (Brazil)
To receive inflow payments to your organization's bank account, you must register the bank accounts (individual and business) using Belvo's Payments API.
- Individual bank accounts must be created for each payer (your customer).
- Business bank accounts need to be created for the beneficiary of the payment (your organization).
This endpoint supports resource-level versioning. By including the header X-Belvo-API-Resource-Version: Payments-BR.V2, you can access the latest (V2) request and response formats. If the header is not provided, the default (V1) format will be used. See the API documentation for details on the differences between versions.
Payment Intents (Brazil)
A payment intent is a single point of access to create payments using any payment method offered by Belvo.
A payment intent captures all payment information (such as the amount to be charged, the description of the payment, the provider, and so on) and guides your customers through the payment flow.