APIX 001 reports must strictly follow the XSD schema defined by BACEN (version 2.5). Reporter automates the XML generation, but you remain responsible for validating the output and ensuring compliance with regulatory requirements.
What is APIX 001?
The APIX 001 is a monthly regulatory report that Pix participants — direct or indirect — must submit to the Brazilian Central Bank. It consolidates operational statistics for the institution’s Pix ecosystem during a given month.
What BACEN expects to receive
The report covers ten data sections:Submission requirements
Header attributes
The root<APIX001> element requires these attributes:
Understanding the data structure
Before building the template, it’s important to understand how the Pix plugin data maps to each APIX 001 section.
Pix plugin data sources
The template queries data from the Pix plugin tables registered as Reporter data sources. The main entities used are:The data source prefix (e.g.
pix_btg) depends on how you register the Pix plugin in Reporter. Replace it with your actual data source name.Transfers table structure
Refunds table structure
Refund reason codes
Fee charge structure (JSONB)
Thefee_charge field is a JSONB column populated only for CASHIN (receiving) transactions:
Data mapping
Transaction detail types
Transaction purposes
The report requires exactly 12 transaction entries — one for each combination of 3 detail types × 4 purposes. Entries with no matching data must still be present with zero values.
Revenue sources
Refund detail types
Cautionary block detail types
Authorization payer types (Pix Automático)
Using Reporter
Here is the complete template for generating APIX 001 in Reporter. This example uses
pix_btg as the data source prefix — replace it with the name configured in your Reporter data source setup.
Code breakdown
Root element
DtArquivo: File generation date, dynamically inserted viadate_timeAnoandMes: Reference year and month — static values you update in the template for each submission (the report request carries no template parameters)ISPB: First 8 digits of the institution’s CNPJ, extracted using theslicefilter from Midaz onboarding dataTipoEnvio:Ifor inclusion,Sfor replacement of previously approved data
Transactions section
The template explicitly declares all 12 required entries (3 detail types × 4 purposes). Dynamic queries are used where data exists:count_bycounts records matching the filter conditionsum_by ... by "field"sums a specific field across matching recordsValorEspecieis0.00for standard transfers (only non-zero for Pix Saque/Troco)
Refunds section
Refunds are split by reason code using thereason field:
FR01maps to BACEN detail type 1 (fraud via MED)- All other reason codes (
BE08,MD06,SL02) map to detail type 2
Revenue section
Revenue is extracted from thefee_charge.totalAmount JSONB field, filtered by transfer type and person type:
The
fee_charge JSONB field uses nested field path syntax (fee_charge.totalAmount). Reporter’s Pongo2 engine navigates the JSON structure to access the nested value.Time metrics and availability
Time metrics (transaction processing times, DICT operation times) and availability index must be sourced from your infrastructure monitoring system — they are not derived from transactional data. Populate these values from your SPI logs and uptime monitoring.DICT queries
dict.entries with your actual DICT query log data source or populate QtdConsultas manually from infrastructure metrics.
Rendered example
Request example with date filter
To generate the APIX 001 for a specific month, send a
POST /v1/reports request with the following body:
Dates must be in ISO 8601 format with UTC timezone (
Z). Make sure to cover the entire reference month — from the first second to the last.XSD validation rules
Key constraints from the official APIX 001 XSD (version 2.5) that your data must satisfy:
Best practices
Zero-value entries
Even when there are no transactions for a given combination, the entry must still appear in the report with zero values. BACEN requires all 12 transaction entries, all 4 revenue entries, all 4 cautionary block entries, and all 2 authorization entries — regardless of whether data exists.Replacement submissions
UseTipoEnvio="S" only to replace a previously approved submission. If your first submission was rejected, resubmit with TipoEnvio="I".
Value precision
All monetary values must have exactly 2 decimal places. Use Reporter’s formatting capabilities or ensure your data source provides pre-formatted values.Time metric sourcing
Transaction time percentiles and DICT operation times must be sourced from your infrastructure monitoring — not from transactional data. These metrics reflect the actual user experience from payment initiation to settlement confirmation. BACEN may audit these values against SPI logs.JSONB nested fields
Revenue calculations use nested field paths (e.g.fee_charge.totalAmount) to access values inside JSONB columns. Make sure your Reporter version supports nested field parsing in aggregation functions.

