curl --request GET \
--url https://api.example.com/invoices/report/summary \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/invoices/report/summary"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/invoices/report/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/invoices/report/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/invoices/report/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/invoices/report/summary")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/invoices/report/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"subtotal": 12500.5,
"total": 14500.58,
"iva": 2000.08,
"ivaCapped": false,
"retenciones": 350.5,
"ivaIncomplete": false,
"vigenteCount": 48,
"canceladoCount": 2,
"totalCount": 50
}Get a fiscal totals summary for a filtered set of invoices
Subtotal/total are summed via SQL (unbounded). IVA is computed by parsing each matching invoice’s stamped XML — capped at 2000 matching invoices per request; beyond that, iva is null and ivaCapped is true, and the caller should narrow the date range.
curl --request GET \
--url https://api.example.com/invoices/report/summary \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/invoices/report/summary"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/invoices/report/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/invoices/report/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/invoices/report/summary"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/invoices/report/summary")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/invoices/report/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"subtotal": 12500.5,
"total": 14500.58,
"iva": 2000.08,
"ivaCapped": false,
"retenciones": 350.5,
"ivaIncomplete": false,
"vigenteCount": 48,
"canceladoCount": 2,
"totalCount": 50
}Authorizations
API Key for authentication (format: sk_...)
Headers
Required for Supabase session auth. Ignored when authenticating with an API key (the organization resolves from the key).
Query Parameters
Filtra por fecha de registro en Timbrix (createdAt), desde (inclusive, ISO 8601). Un valor de solo fecha (YYYY-MM-DD) se ancla al inicio del día en America/Mexico_City.
"2026-08-01"
Filtra por fecha de registro en Timbrix (createdAt), hasta (inclusive, ISO 8601). Un valor de solo fecha (YYYY-MM-DD) se ancla al final del día (23:59:59.999) en America/Mexico_City, incluyendo el día completo.
"2026-08-31"
Filtra por tipo de comprobante
I, E, T Filtra por estatus
vigente, cancelado Filtra por RFC exacto del receptor
"XAXX010101000"
Filtra por entorno. Ignorado para peticiones autenticadas con API key (siempre se usa el entorno de la key). Para una sesión de Supabase, por defecto es 'production' — pasa este parámetro para incluir CFDI de sandbox.
sandbox, production Response
12500.5
14500.58
Suma de IVA trasladado leído del XML de cada CFDI — null cuando el rango filtrado excede el límite calculable (ver ivaCapped)
2000.08
true cuando el rango filtrado tiene demasiados CFDI para calcular IVA en esta solicitud — reduce el rango de fechas
false
Suma de impuestos retenidos (ISR, IVA retenido, etc.) leída del XML de cada CFDI — null cuando el rango filtrado excede el límite calculable (ver ivaCapped)
350.5
true cuando uno o más CFDI del rango filtrado no pudieron parsearse — iva/retenciones están incompletos (subestimados) para este reporte
false
48
2
50