Factura TicketBAI a una administración pública con FacturaE
Cuerpo JSON de una factura TicketBAI que también genera el XML FacturaE para una administración pública.
El ejemplo corresponde a una persona jurídica de Bizkaia que presta un
servicio de consultoría a una administración pública. La misma petición genera
la factura TicketBAI y el XML FacturaE. Envía este cuerpo mediante
POST /invoicing/invoices.
Cuerpo de la petición
{
"sender_data": {
"sender_ticketbai_territory_id": "b4039144-5069-4584-88e1-7086c9f01adc",
"sender_is_individual": false,
"sender_full_name": "Empresa Consultora Ejemplo S.L.",
"sender_id_card_number": "B12345674",
"sender_address": "Gran Vía de Don Diego López de Haro 1",
"sender_postal_code": "48001",
"sender_town": "Bilbao",
"sender_province": "Bizkaia"
},
"recipients": [
{
"tax_id_number": "P1234567D",
"full_name": "Ayuntamiento de Ejemplo",
"postal_code": "48002",
"address": "Plaza del Ayuntamiento 1",
"is_legal_entity": true,
"town": "Municipio de Ejemplo",
"province": "Bizkaia",
"facturae_country_code": "ESP",
"administrative_centers": [
{
"role": "01",
"code": "L01234567",
"name": "Oficina Contable de Ejemplo",
"address": "Plaza del Ayuntamiento 1",
"postal_code": "48002",
"town": "Municipio de Ejemplo",
"province": "Bizkaia",
"facturae_country_code": "ESP"
},
{
"role": "02",
"code": "L01234568",
"name": "Órgano Gestor de Ejemplo",
"address": "Plaza del Ayuntamiento 1",
"postal_code": "48002",
"town": "Municipio de Ejemplo",
"province": "Bizkaia",
"facturae_country_code": "ESP"
},
{
"role": "03",
"code": "L01234569",
"name": "Unidad Tramitadora de Ejemplo",
"address": "Plaza del Ayuntamiento 1",
"postal_code": "48002",
"town": "Municipio de Ejemplo",
"province": "Bizkaia",
"facturae_country_code": "ESP"
}
]
}
],
"invoice_data": {
"fiscal_year": 2026,
"series_code": "FAC",
"invoice_number": "2026-001",
"invoice_datetime": "2026-07-22 15:00:00",
"description": "Servicios de consultoría técnica",
"total_amount": 12100,
"vat_keys": [
{
"transaction_of_tax_significance_code": "01"
}
],
"concepts": [
{
"description": "Servicios de consultoría técnica",
"quantity": 100,
"unit_price": 10000000000,
"total_price": 12100,
"vat_rate": 2100
}
],
"local_subject_not_exempt_items": [
{
"vat_not_exempt_type": "S1",
"vat_breakdown_items": [
{
"taxable_amount": 10000,
"tax_rate": 2100,
"tax_quota": 2100
}
]
}
]
},
"generate_facturae": true,
"async_mode": "none"
}
Recuperar el XML FacturaE
Con async_mode: "none", la respuesta síncrona contiene el XML en
data.facturae_xml_contents. El valor Base64 se abrevia en este fragmento:
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"series_code": "FAC",
"invoice_number": "2026-001",
"facturae_xml_contents": "{FACTURAE_XML_BASE64}",
"tbai_post_status": "success"
}
}
Si guardas la respuesta completa en respuesta.json, puedes decodificar el
contenido en Linux con:
jq -r '.data.facturae_xml_contents' respuesta.json \
| base64 --decode > facturae.xml
En macOS, sustituye base64 --decode por base64 -D.