Financial Statements (Mexico)

The Financial Statements resource provides a detailed overview of a company, including balance sheets and income statements, specific to Mexico. These financial statements offer a comprehensive view of a company's financial position and performance, covering assets, liabilities, equity, revenues, and expenses for a given year. This resource is essential for understanding the financial health and operational results of companies operating in Mexico.

At the moment, the Financial Statements resource is available for:

  • 🇲🇽 Mexico (SAT)

📘

Financial Statement Data Dictionary

For a detailed list of data that our Financial Statement resource returns, please see our dedicated Financial Statements Data (Mexico) guide.


Retrieve data for new links

Create a link

👍

Using the Connect Widget?

If you are using Belvo's Connect Widget to create links, then all you need to do is add FINANCIAL_STATEMENTS to the fetch_resources parameter when generating your access_token. For more details, check out our dedicated Widget SDK and Hosted Widgetguides.

To create a link, you just need to make the following POST Register a new link request:

curl --location 'https://api.belvo.com/api/links/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic BASE64(SECRET_ID:SECRET_PASSWORD) \
--data '{see examples below}'
{
  "institution": "sat_mx_fiscal",
  "username": "sat_username",
  "password": "user_sat_password",
  "fetch_resources": ["FINANCIAL_STATEMENTS"],
  "access_mode": "single",
  "external_id": "COHORT_32_User_6790023X5"
}
ParameterTypeRequiredDescriptionExample
institutionstringtrueThe institution where you want to create the linksat_mx_fiscal
usernamestringtrueThe SAT username of the individual.PMO010101000
passwordstringtrueThe SAT password of the individual.superSecretPas$$word
fetch_resourcesarraytrueThe resources you want Belvo to retrieve.["FINANCIAL_STATEMENTS"]
access_modestringtrueThe type of link to create. For employment data, we recommend using single links.single
external_idstringrecommendedYour internal reference for this user. This is extremely useful for you as you'll be able to relate the data that Belvo retrieves for this user in your system.COHORT_32_User_6790023X5

You will receive a 201 - Created response once the link is succesfully created.

{
    "id": "2f8ca7a1-c28f-46f2-bb41-21633099a280",
    "institution": "sat_mx_fiscal",
    "access_mode": "single",
    "status": "valid",
    "refresh_rate": null,
    "created_by": "6e9be884-4781-4143-b673-aca02475ee8c",
    "last_accessed_at": "2024-06-26T16:25:54.344113Z",
    "external_id": "COHORT_32_User_6790023X5",
    "created_at": "2024-06-26T16:25:54.334413Z",
    "institution_user_id": "BidIxnZkKvQx0_F0oSYVx6Jnsh4Zmoat2ot2iOoG018=",
    "credentials_storage": "365d",
    "stale_in": null,
    "fetch_resources": [
        "FINANCIAL_STATEMENTS"
    ]
}

Wait for Webhook

You will receive 201 - Created and Belvo will asynchronously load the last three years of Financial Statement data for the link. When the information has been retrieved, Belvo will send you the following webhook:

{
  "webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
  "webhook_type": "FINANCIAL_STATEMENTS",
  "webhook_code": "historical_update",
  "process_type": "historical_update",
  "link_id": "2f8ca7a1-c28f-46f2-bb41-21633099a280",
  "request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
  "external_id": "COHORT_32_User_6790023X5",
  "data": {
    "new_financial_statements": 3
  }
}

Get data

Once you receive the webhook, you just need to make the following GET Financial Statements request to retrieve the data for the given link:

curl --request GET 'https://api.belvo.com/api/financial-statements/?link={id}' \
-u [Secret Key ID]:[Secret Key PASSWORD]
{
  "count": 130,
  "next": "https://sandbox.belvo.com/api/{endpoint}/?page=2",
  "previous": null,
  "results": [
    {
      "id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d",
      "link": "30cb4806-6e00-48a4-91c9-ca55968576c8",
      "collected_at": "2022-02-09T08:45:50.406032Z",
      "created_at": "2022-02-09T08:45:50.406032Z",
      "error": null,
      "year": 2020,
      "currency": "MXN",
      "balance_sheet": {
        "current_assets": {
          "cash_and_equivalents": 1000000,
          "short_term_investments": 2000000,
          "accounts_receivable": 3000000,
          "notes_receivable": 4000000,
          "other_debtors": 5000000,
          "bad_debt_provision": 6000000,
          "tax_recoverable": 7000000,
          "inventory": 8000000,
          "prepaid_expenses": 9000000,
          "assets_available_for_sale": 10000000,
          "total": 11000000
        },
        "non_current_assets": {
          "property_plant_and_equipment": 1000000,
          "long_term_accounts_receivable": 2000000,
          "prepayment_to_suppliers": 3000000,
          "goodwill": 4000000,
          "intangible_assets": 5000000,
          "investments_in_associates": 6000000,
          "long_term_financial_instruments": 7000000,
          "total": 8000000
        },
        "current_liabilities": {
          "bank_loans": 1000000,
          "accounts_payable": 2000000,
          "notes_payable": 3000000,
          "financial_instruments": 4000000,
          "other_creditors": 5000000,
          "income_tax_payable": 6000000,
          "customer_advances": 7000000,
          "provisions": 8000000,
          "taxes_payable": 9000000,
          "total": 10000000
        },
        "non_current_liabilities": {
          "long_term_accounts_payable": 1000000,
          "long_term_financial_instruments": 2000000,
          "deferred_revenue": 3000000,
          "contributions_for_future_capital_increases": 4000000,
          "deferred_income_tax": 5000000,
          "employee_benefits": 6000000,
          "long_term_provisions": 7000000,
          "total": 8000000
        },
        "equity": {
          "share_capital": 1000000,
          "retained_earnings": 2000000,
          "other_comprehensive_income": 3000000,
          "controlling_interest": 4000000,
          "non_controlling_interest": 5000000,
          "total": 15000000
        }
      },
      "income_statement": {
        "net_revenue": 1000000,
        "domestic_sales": 2000000,
        "foreign_sales": 3000000,
        "materials_used": 4000000,
        "cost_of_goods_sold": 5000000,
        "cost_of_services_sold": 6000000,
        "gross_profit": 7000000,
        "gross_loss": 8000000,
        "operating_expenses": 9000000,
        "operating_income": 10000000,
        "operating_loss": 11000000,
        "financial_result": -114602,
        "equity_in_earnings_of_affiliates": 0,
        "income_before_taxes": 12000000,
        "loss_before_taxes": 13000000,
        "income_taxes": 16838,
        "income_from_continuing_operations": 14000000,
        "loss_from_continuing_operations": 15000000,
        "discontinued_operations": 0,
        "net_income": 16000000,
        "net_loss": 17000000
      }
    }
  ]
}
ParameterTypeRequiredDescriptionExample
idstringtrueThe link_id you receive in your historical_update notification.2f8ca7a1-c28f-46f2-bb41-21633099a280

Retrieve data for existing links

To retrieve Financial Statement data for existing links, you just need to make the following POST Retrieve Financial Statements request for each link.

curl --location 'https://api.belvo.com/api/financial-statements/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic BASE64(SECRET_ID:SECRET_PASSWORD) \
--data '{see example below}'
{
  "link": "link_id"
}
ParameterTypeRequiredDescriptionExample
linkstringtrueThe fiscal link id that you want to retrieve financial statement information for.2f8ca7a1-c28f-46f2-bb41-21633099a280

You will receive 202 - Accepted response and Belvo will asynchronously load the last three years of Financial Statement data for the link. When the information has been retrieved, Belvo will send you the following webhook:

{
  "webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
  "webhook_type": "FINANCIAL_STATEMENTS",
  "webhook_code": "new_financial_statements_available",
  "process_type": "async_post",
  "link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
  "request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
  "external_id": "COHORT_32_User_6790023X5",
  "data": {
    "new_financial_statements": 3
  }
}

Once you receive the webhook, you just need to make the following GET Financial Statements request to retrieve the data for the given link:

curl --request GET 'https://api.belvo.com/api/financial-statements/?link={id}' \
-u [Secret Key ID]:[Secret Key PASSWORD]
{
  "count": 130,
  "next": "https://sandbox.belvo.com/api/{endpoint}/?page=2",
  "previous": null,
  "results": [
    {
      "id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d",
      "link": "30cb4806-6e00-48a4-91c9-ca55968576c8",
      "collected_at": "2022-02-09T08:45:50.406032Z",
      "created_at": "2022-02-09T08:45:50.406032Z",
      "error": null,
      "year": 2020,
      "currency": "MXN",
      "balance_sheet": {
        "current_assets": {
          "cash_and_equivalents": 1000000,
          "short_term_investments": 2000000,
          "accounts_receivable": 3000000,
          "notes_receivable": 4000000,
          "other_debtors": 5000000,
          "bad_debt_provision": 6000000,
          "tax_recoverable": 7000000,
          "inventory": 8000000,
          "prepaid_expenses": 9000000,
          "assets_available_for_sale": 10000000,
          "total": 11000000
        },
        "non_current_assets": {
          "property_plant_and_equipment": 1000000,
          "long_term_accounts_receivable": 2000000,
          "prepayment_to_suppliers": 3000000,
          "goodwill": 4000000,
          "intangible_assets": 5000000,
          "investments_in_associates": 6000000,
          "long_term_financial_instruments": 7000000,
          "total": 8000000
        },
        "current_liabilities": {
          "bank_loans": 1000000,
          "accounts_payable": 2000000,
          "notes_payable": 3000000,
          "financial_instruments": 4000000,
          "other_creditors": 5000000,
          "income_tax_payable": 6000000,
          "customer_advances": 7000000,
          "provisions": 8000000,
          "taxes_payable": 9000000,
          "total": 10000000
        },
        "non_current_liabilities": {
          "long_term_accounts_payable": 1000000,
          "long_term_financial_instruments": 2000000,
          "deferred_revenue": 3000000,
          "contributions_for_future_capital_increases": 4000000,
          "deferred_income_tax": 5000000,
          "employee_benefits": 6000000,
          "long_term_provisions": 7000000,
          "total": 8000000
        },
        "equity": {
          "share_capital": 1000000,
          "retained_earnings": 2000000,
          "other_comprehensive_income": 3000000,
          "controlling_interest": 4000000,
          "non_controlling_interest": 5000000,
          "total": 15000000
        }
      },
      "income_statement": {
        "net_revenue": 1000000,
        "domestic_sales": 2000000,
        "foreign_sales": 3000000,
        "materials_used": 4000000,
        "cost_of_goods_sold": 5000000,
        "cost_of_services_sold": 6000000,
        "gross_profit": 7000000,
        "gross_loss": 8000000,
        "operating_expenses": 9000000,
        "operating_income": 10000000,
        "operating_loss": 11000000,
        "financial_result": -114602,
        "equity_in_earnings_of_affiliates": 0,
        "income_before_taxes": 12000000,
        "loss_before_taxes": 13000000,
        "income_taxes": 16838,
        "income_from_continuing_operations": 14000000,
        "loss_from_continuing_operations": 15000000,
        "discontinued_operations": 0,
        "net_income": 16000000,
        "net_loss": 17000000
      }
    }
  ]
}

Where:

{id} is the link_id you receive in your new_financial_statements_available notification.


Errors while extracting Financial Statements

In order to provide you greater visibility regarding the extraction of Financial Statement data, we have included a new error field in the response payload for each financial statement you will still receive.

If, for a given year where a financial statement is available, we are not able to retrieve data due to the institution not providing the information in the correct format, the error field will indicate the reason behind the unsuccessful extraction:

[
  {
    "id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d",
    "link": "30cb4806-6e00-48a4-91c9-ca55968576c8",
    "collected_at": "2022-02-09T08:45:50.406032Z",
    "created_at": "2022-02-09T08:45:50.406032Z",
    "error": "Unable to validate if the user has an available financial statement for the specified year.",
    "year": 2020,
    "currency": "MXN",
    "balance_sheet": null,
    "income_statement": null
  }
]

The possible error messages are:

  • Unable to validate if the user has an available financial statement for the specified year.
  • No available financial statement found for the user for the specified year, preventing data extraction.
  • Unable to verify if the user has _conceptos vigentes_ for the specified year.
  • The fiscal institution provided the financial statement in an unrecognized format.

If you receive financial statement payloads with these errors, please contact our support team.