Belvo API Docs (1.216.0)

Introduction

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:

Available Information and Payment Methods

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

Data Dictionaries

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).

Environments

We currently offer two environments: sandbox and production.

Sandbox

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.

Production

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.com to api.belvo.com.
  • If you're using webhooks, make sure to set a Production URL for your webhooks.

Response codes

We use the following HTTP status code in the response depending on the success or failure:

Status CodeDescription
200Success - The content is available in the response body.
201Success - The content was created successfully on Belvo.
204Success - No content to return.
400Bad Request Error - Request returned an error, detail in the content.
401Unauthorized - The Belvo credentials provided are not valid.
404Not Found - The resource you try to access cannot be found.
405Method Not Allowed - The HTTP method you are using is not accepted for this resource.
408Request Timeout - The request timed out and was terminated by the server.
428MFA Token Required - MFA token was required by the institution to connect.
500Internal Server Error - The detail of the error is available in the response body.

Error handling

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.

Request identifier

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.

Error codes and troubleshooting

For a full list of errors and how to troubleshoot them, please see our dedicated Error Handling article.

Retry policy

50x errors

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).

40x errors

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.

Deprecated fields

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.

OpenAPI: required and nullable fields

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.

Download OpenAPI description
Languages
Servers
Mock server
https://developers.belvo.com/_mock/apis/belvoopenapispec/
Sandbox
https://sandbox.belvo.com/

Institutions

An institution is an entity that Belvo can access information from. It can be a:

  • bank institution, such as Banamex retail banking or HSBC business banking.
  • fiscal institution, such as the Servicio de Administración Tributaria (SAT) in Mexico.

You can see a complete list of institutions by either consulting our Institutions article or making a List request to this endpoint.

Operations

Widget Access Token

Operations

Consents

Operations

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
Operations

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.
Operations

Balances

Operations

Transactions

A transaction contains the detailed information of each movement inside an account. For example, a purchase at a store or a restaurant.

Operations

Bills

A bill refers to the credit card bill a user receives for given account.

Note: Only available for OFDA.

Operations

Investments Brazil

Operations

Investment Transactions Brazil

Operations

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)
Operations

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)
Operations

Invoices

Operations

Get an invoice's details

Request

Get the details of a specific invoice.

ℹ️ Note: This resource may return deprecated fields. Please check the response documentation for more information.

Path
idstring(uuid)required

The invoice.id you want to get detailed information about.

Query
omitstring

Omit certain fields from being returned in the response. For more information, see our Filtering responses DevPortal article.

fieldsstring

Return only the specified fields in the response. For more information, see our Filtering responses DevPortal article.

curl -i -X GET \
  -u <username>:<password> \
  'https://developers.belvo.com/_mock/apis/belvoopenapispec/api/invoices/{id}/?fields=string&omit=string'

Responses

Ok

Bodyapplication/json
idstring(uuid)

Belvo's unique identifier for the current item.

Example: "0d3ffb69-f83b-456e-ad8e-208d0998d71d"
linkstring or null(uuid)

The link.id the data belongs to.

Example: "30cb4806-6e00-48a4-91c9-ca55968576c8"
collected_atstring(date-time)required

The ISO-8601 timestamp when the data point was collected.

Example: "2022-02-09T08:45:50.406032Z"
created_atstring(date-time)

The ISO-8601 timestamp of when the data point was created in Belvo's database.

Example: "2022-02-09T08:45:50.406032Z"
invoice_identificationstring or nullrequired

The fiscal institution's unique ID for the invoice.

Example: "A1A1A1A1-2B2B-3C33-D44D-555555E55EE"
invoice_datestring or nullrequired

The date of the invoice, in YYYY-MM-DD format.

Example: "2019-12-01"
statusstring or nullrequired

The status of the invoice. Can be either Vigente (valid) or Cancelado (cancelled).

Example: "Vigente"
invoice_typestring or nullrequired

The fiscal institution's classification of the invoice.

For Mexico's SAT, we return one of the following values:

  • Egreso
  • Ingreso
  • Nómina
  • Pago
  • Traslado
Enum"Egreso""Ingreso""Nómina""Pago""Traslado"
Example: "Ingreso"
typestring or nullrequired

The direction of the invoice (from the perspective of the Link owner).

  • OUTFLOW indicates a sent invoice.
  • INFLOW indicates a received invoice.
Enum"OUTFLOW""INFLOW"null
Example: "INFLOW"
sender_idstring or nullrequired

The fiscal ID of the invoice sender

Example: "AAA111111AA11"
sender_namestring or nullrequired

The name of the invoice sender.

Example: "ACME CORP"
sender_tax_fraud_statusstring or null

Indicates whether or not the sender is on SAT's tax fraud list for having submitted incorrect data, having outstanding payments, or having conducted business that is in violation of the fiscal institution's regulations.

SAT updates the tax fraud list every three months.

For more information regarding the reason's a taxpayer can be put on the tax fraud list, please see Article 69 and Article 69-B of Mexico's Código Fiscal de la Federación.

Possible statuses are:

  • INVESTIGATING
    The fiscal institution has identified irregularities and open an investigation regarding the taxpayer.
  • DISMISSED
    The fiscal institution has investigated the taxpayer and declared them innocent.
  • CONFIRMED
    The fiscal institution has confirmed that the taxpayer is guilty.
  • OVERTURNED
    The fiscal institution has reassessed a previously confirmed taxpayer and, based on new evidence, has taken the taxpayer off the tax fraud list.
  • NO_TAX_FRAUD_STATUS
    The receiver or sender is not found in the list (in other words, they are complying with the fiscal institution's regulations).
Example: "NO_TAX_FRAUD_STATUS"
receiver_idstring or nullrequired

The fiscal ID of the invoice receiver.

Example: "BBB222222BB22"
receiver_namestring or nullrequired

The name of the invoice receiver.

Example: "BELVO CORP"
receiver_tax_fraud_statusstring or null

Indicates whether or not the receiver is on SAT's tax fraud list for having submitted incorrect data, having outstanding payments, or having conducted business that is in violation of the fiscal institution's regulations.

SAT updates the tax fraud list every three months.

For more information regarding the reason's a taxpayer can be put on the tax fraud list, please see Article 69 and Article 69-B of Mexico's Código Fiscal de la Federación.

Possible statuses are:

  • INVESTIGATING
    The fiscal institution has identified irregularities and open an investigation regarding the taxpayer.
  • DISMISSED
    The fiscal institution has investigated the taxpayer and declared them innocent.
  • CONFIRMED
    The fiscal institution has confirmed that the taxpayer is guilty.
  • OVERTURNED
    The fiscal institution has reassessed a previously confirmed taxpayer and, based on new evidence, has taken the taxpayer off the tax fraud list.
  • NO_TAX_FRAUD_STATUS
    The receiver or sender is not found in the list (in other words, they are complying with the fiscal institution's regulations).
Example: "NO_TAX_FRAUD_STATUS"
cancelation_statusstring or nullrequired

If the invoice is cancelled, this field indicates the status of the cancellation.

cancelation_update_datestring or null(date)required

The date of the invoice cancelation, in YYYY-MM-DD format.

Example: "2019-12-02"
certification_datestring or null(date)required

The date of the fiscal certification, in YYYY-MM-DD format.

Example: "2019-12-01"
certification_authoritystring or nullrequired

The fiscal ID of the certification provider.

Example: "CCC333333CC33"
payment_typestring or nullrequired
Example: "99"
payment_methodstring or null

The payment method code used for this invoice, as defined by the legal entity of the country.

Enum"PUE""PPD"null
Example: "PUE"
usagestring or null
Example: "P01"
versionstring or null

The CFDI version of the invoice.

Example: "3.3"
place_of_issuestring or null

The postcode of where the invoice was issued.

Example: "01165"
invoice_detailsArray of objectsrequired

A list of descriptions for each item (purchased product or service provided) in the invoice.

descriptionstring or nullrequired

The description of the invoice item (an invoice can have one or more items).

Example: "December 2019 accounting fees"
product_identificationstring or nullrequired

The identification code of the product or the service, as defined by the legal entity in the country.\n- \U0001F1F2\U0001F1FD Mexico.

Example: "84101600"
quantitynumber or null(float)required

The quantity of this invoice item.

Example: 10
unit_codestring or nullrequired

The unit of measure, as defined by the legal entity in the country. \n- \U0001F1F2\U0001F1FD Mexico SAT catalog reference.

Example: "E48"
unit_descriptionstring or nullrequired

The description of the item, as defined by the legal entity in the country.\n- \U0001F1F2\U0001F1FD Mexico SAT catalog reference.

Example: "Unidad de servicio"
unit_amountnumber or null(float)required

The price of one a singular item.

Example: 200
tax_typestring or null

The item's tax type.

Example: null
pre_tax_amountnumber or null(float)required

The total price for this item before tax is applied (quantity x unit_amount).

Example: 400
tax_percentagenumber or null(float)required

The tax percentage to apply.

Example: 16
tax_amountnumber or null(float)required

The amount of tax for this invoice item (pre_tax_amount x tax_percentage).

Example: 64
total_amountnumber or null(float)required

The total price for this invoice item (pre_tax_amount + tax_amount).

Example: 464
retained_taxesArray of objects

The retained tax on the invoice item.

collected_atstring(date-time)

The ISO-8601 timestamp when the data point was collected.

Example: "2022-02-09T08:45:50.406032Z"
currencystring or nullrequired

The currency of the invoice. For example:

  • 🇧🇷 BRL (Brazilian Real)
  • 🇨🇴 COP (Colombian Peso)
  • 🇲🇽 MXN (Mexican Peso)
  • 🇺🇸 USD (United States Dollar)
Example: "MXN"
subtotal_amountnumber or null(float)required

The pretax amount of this invoice (sum of each item's pre_tax_amount).

Example: 400
exchange_ratenumber or null(float)required

The exchange rate used in this invoice for the currency.

Example: 0.052
tax_amountnumber or null(float)required

The amount of tax for this invoice (sum of each item's tax_amount).

Example: 64
discount_amountnumber or null(float)required

The total amount discounted in this invoice.

Example: 10
total_amountnumber or null(float)required

The total amount of the invoice (subtotal_amount + tax_amount - discount_amount)

Example: 454
paymentsArray of objectsrequired

A list detailing all the invoice payments.

datestring or null(date-time)required

ISO-8601 timestamp when the payment was made.

Example: "2020-03-17T12:00:00.000Z"
payment_typestring or nullrequired
Example: "03"
currencystring or nullrequired

The currency of the payment. For example:

  • 🇧🇷 BRL (Brazilian Real)
  • 🇨🇴 COP (Colombian Peso)
  • 🇲🇽 MXN (Mexican Peso)

Please note that other currencies other than in the list above may be returned.

Example: "BRL"
exchange_ratestring or nullrequired

The currency to MXN currency exchange rate when the payment was made.

Example: "3.75"
amountnumber or null(float)required

The invoice amount, in the currency of the original invoice.

Example: 8000.5
operation_numberstring or nullrequired

The fiscal institution's internal identifier for the operation.

Example: "831840"
beneficiary_rfcstring or null

The fiscal ID of the payment beneficiary.

Example: "BNM840515VB1"
beneficiary_account_numberstring or nullrequired

The bank account number of the payment beneficiary.

Example: "12343453245633"
payer_rfcstring or nullrequired

The fiscal ID of the payment issuer.

Example: "BKJM840515VB1"
payer_account_numberstring or nullrequired

The bank account number of the payment issuer.

Example: "13343663245699"
payer_bank_namestring or nullrequired

The banking institution that was used by the payment issuer.

Example: "CITI BANAMEX"
related_documentsArray of objectsrequired

A list of all the related deferred invoices affected by the payment.

invoice_identificationstring or nullrequired

The fiscal institution's unique ID for the related deferred invoice.

Example: "7EE015F3-6311-11EA-B02A-00155D014007"
currencystring or nullrequired

The currency of the related invoice. For example:

  • 🇧🇷 BRL (Brazilian Real)

  • 🇨🇴 COP (Colombian Peso)

  • 🇲🇽 MXN (Mexican Peso)

    Please note that other currencies other than in the list above may be returned.

Example: "MXN"
payment_methodstring or nullrequired

The payment method of the related invoice.

Example: "PPD"
partiality_numberinteger(int32)

The payment installment number.

Example: 1
previous_balancenumber or null(float)required

The invoice amount before the payment.

Example: 18877.84
amount_paidnumber or null(float)required

The amount paid in this installment.

Example: 8000
outstanding_balancenumber or null(float)required

The amount remaining to be paid.

Example: 10877.84
payrollobject or nullrequired

Details regarding the payroll payment. Only applicable for payroll invoices.

daysinteger or null(int32)required

The number of days covered by the payment.

Example: 30
typestring or nullrequired
Example: "O"
amountnumber(float)required

The total amount of the payroll payment.

Example: 20400.1
versionstringrequired

The version of the payroll object.

Example: "1.2"
date_fromstring or null(date)required

The start date of the payment period, in YYYY-MM-DD format.

Example: "2018-07-01"
date_tostring or null(date)required

The end date of the payment period, in YYYY-MM-DD format.

Example: "2018-07-31"
collected_atstring(date-time)

The ISO-8601 timestamp when the data point was collected.

Example: "2022-02-09T08:45:50.406032Z"
payment_datestring(date)required

The payment date, in YYYY-MM-DD format.

Example: "2018-07-16"
periodicitystring or null

How often the payroll payment is made.

For Mexico's SAT, we return one of the following values:

  • DAILY
  • WEEKLY
  • TENTH_DAY
  • FOURTEENTH_DAY
  • FIFTEENTH_DAY
  • MONTHLY
  • BIMONTHLY
  • PER_TASK
  • COMMISSION
  • ONE_OFF
  • OTHER_PERIODICITY
Enum"DAILY""WEEKLY""TENTH_DAY""FOURTEENTH_DAY""FIFTEENTH_DAY""MONTHLY""BIMONTHLY""PER_TASK""COMMISSION""ONE_OFF"
Example: "MONTHLY"
earnings_breakdownArray of objects or null or null

A breakdown of the earnings for the payroll payment.

tax_deductionsArray of objects or null or null

A breakdown of the tax deductions on the payroll payment.

other_paymentsArray of objects or null or null

A breakdown of other payments for the payroll.

foliostring or null

The internal control number that the taxpayer assigns to the invoice.

Example: "26"
xmlstring or null

XML of the invoice document.

warningsobject or null

Object containing information about any warnings related to this invoice.

payment_type_descriptionstring or nullDeprecatedrequired

This field has been deprecated. For more information regarding Belvo and deprecation, see our Deprecated fields explanation.

Example: null
payment_method_descriptionstring or nullDeprecated

This field has been deprecated. For more information regarding Belvo and deprecation, see our Deprecated fields explanation.

The description of the payment method used for this invoice.

Example: null
sender_blacklist_statusstring or nullDeprecated

This field has been deprecated. For more information regarding Belvo and deprecation, see our Deprecated fields explanation. Please use sender_tax_fraud_status instead.

Example: null
receiver_blacklist_statusstring or nullDeprecated

This field has been deprecated. For more information regarding Belvo and deprecation, see our Deprecated fields explanation. Please use receiver_tax_fraud_status instead.

Example: null
Response
application/json

Example of an Igreso type invoice.

{ "id": "90d90e38-0087-4b6d-b6dc-94ea561bb9cb", "link": "1bd948f7-245d-4313-b604-34d1044cb908", "collected_at": "2022-02-09T08:45:50.406032Z", "created_at": "2022-02-09T08:46:20.406032Z", "invoice_identification": "862B9918-3K6H-4E0B-NAI9-2BE2D833B840", "invoice_date": "2020-12-24", "status": "Vigente", "invoice_type": "Ingreso", "type": "OUTFLOW", "sender_id": "GHTF980303F7", "sender_name": "Roberto Martinez Diaz", "sender_tax_fraud_status": "NO_TAX_FRAUD_STATUS", "receiver_id": "MNMK3203409H1", "receiver_name": "ACNE SA DE CV", "receiver_tax_fraud_status": "NO_TAX_FRAUD_STATUS", "cancelation_status": null, "cancelation_update_date": null, "certification_date": "2020-12-24", "certification_authority": "FGV330542BG6", "payment_type": "04", "payment_type_description": null, "payment_method": "PUE", "usage": "G03", "place_of_issue": "11000", "version": "3.3", "invoice_details": [ {} ], "currency": "MXN", "subtotal_amount": 25, "exchange_rate": 1, "tax_amount": 4, "discount_amount": 0, "total_amount": 29, "payments": [], "payroll": null, "folio": "28", "xml": "=XML-STRING=", "warnings": { "code": "warning_code", "message": "warning message" } }

Delete an invoice

Request

Delete a specific invoice from your Belvo account.

Path
idstring(uuid)required

The invoice.id that you want to delete.

curl -i -X DELETE \
  -u <username>:<password> \
  'https://developers.belvo.com/_mock/apis/belvoopenapispec/api/invoices/{id}/'

Responses

No content

Response
No content

Tax compliance status

Operations

Tax returns

Operations

Tax retentions

Operations

Tax status

Operations

Financial Statements

Operations

Invoices Chile

Operations

Tax Status Chile

Operations

Debt Reports Chile

Operations

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.

Operations

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.

Operations

Risk Insights

Operations

Employment Metrics

Operations

Payment Institutions (Brazil)

A payment institution is an entity that Belvo can access information from. You can see a complete list of institutions available for payments by making a List request to this endpoint.

Operations

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.

Operations

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).
Operations

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.

Note: For institutions that require the username_type in the form_fields array, you must send through this value in your PATCH request.

Operations

Biometric Pix Widget Access Token (Brazil)

Use the Biometric Pix Widget Token requests to create a access token for Biometric Payments.

Operations

Payment Transactions (Brazil)

Each time you receive an inflow payment from your customer, a transaction is created in the Belvo database.

You can use the Payment Transactions resource in order to get useful information about a transaction as well as the specific charge associated with it.

Operations