SPFE - Facturas recibidas
GET https://{entorno}.ticketbaiws.eus/spfe-recibidas/
La Ley 18/2022 «Crea y Crece» (desarrollada por el RD 238/2026 y la Orden HAC/1028/2026) obliga a expedir las facturas entre empresas y profesionales en formato electrónico y a informar de su estado: pago, cobro, rechazo o impago. Ticketbai WS envía automáticamente a la Solución Pública de Facturación Electrónica (SPFE) de la AEAT las facturas completas a clientes españoles con NIF que emites con el API, en formato UBL, y descarga las facturas que recibes de tus proveedores.
Estos métodos solo están disponibles para las empresas que tienen activado el envío a la SPFE. Se activa en los datos de la empresa del área privada (Factura electrónica B2B) o con el parámetro spfe de los métodos Nueva empresa y Editar datos empresa. Al activarlo se envían las facturas desde ese día.
Devuelve las facturas que tu empresa ha recibido de sus proveedores a través de la SPFE. Ticketbai WS las consulta y descarga de la AEAT automáticamente cada hora, junto con su estado (si ya se ha comunicado su pago o su rechazo).
Para sincronizar tu programa, guarda el id más alto recibido y en la siguiente llamada pásalo en desde_id: obtendrás solo las facturas nuevas, de la más antigua a la más reciente. Para comunicar el pago o el rechazo de una factura usa POST spfe-estados con sus campos factura, fecha_factura, nif_emisor y nombre_emisor.
Autorización: la AEAT solo permite consultar las facturas recibidas a la propia empresa o a un apoderado. Ticketbai WS realiza la consulta con el certificado electrónico cargado en la ficha de la empresa. Si no hay certificado, está caducado o la AEAT lo indica como revocado, la respuesta lo avisa en msg.
Los métodos GET permiten el envío de los parámetros en el body como payload JSON o mediante query string en la URL como se ve en el ejemplo cURL.
PARÁMETROS
| desde_id integer opcional Solo facturas con id mayor que este, en orden ascendente. Para recoger las nuevas desde la última consulta | 56 |
| id integer opcional Una factura concreta | 57 |
| estado string opcional pendiente, pagada o rechazada | pendiente |
| nif_emisor string opcional Facturas de un proveedor | B01000012 |
| factura string opcional Serie y número de la factura | F2026-0153 |
| desde string opcional Fecha de factura desde, en formato dd/mm/yyyy | 01/11/2026 |
| hasta string opcional Fecha de factura hasta, en formato dd/mm/yyyy | 30/11/2026 |
| limite integer opcional Número máximo de facturas. Por defecto 100, máximo 500 | 100 |
| ubl boolean opcional true para incluir en cada factura el XML UBL completo tal como lo entrega la AEAT | false |
RESPUESTA (return, una fila por factura)
| id integer Identificador de la factura recibida en Ticketbai WS | 57 |
| factura string Serie y número de la factura | F2026-0153 |
| fecha_factura string Fecha de expedición (dd/mm/yyyy) | 03/11/2026 |
| tipo_factura string Código de tipo de factura UBL: 380 factura, 381 abono, 384 rectificativa, 389 autofactura, 386 anticipo | 380 |
| copia boolean Es una copia de la factura | false |
| nif_emisor / nombre_emisor string Proveedor que emite la factura | B01000012 |
| base / cuota / total number Base imponible, cuota de IVA y total a pagar | 302.5 |
| vencimiento string Fecha de vencimiento (dd/mm/yyyy) o null | 03/12/2026 |
| estado string pendiente, pagada o rechazada | pendiente |
| localizador string Localizador de la factura en la SPFE | |
| fecha_descarga string Fecha en la que Ticketbai WS la descargó de la AEAT | 04/11/2026 10:05:12 |
| ubl string XML UBL de la factura (solo con ubl=true) |
$ curl --request GET \
--url 'https://api-test.ticketbaiws.eus/spfe-recibidas/?desde_id=56' \
--header 'Accept: application/json' \
--header 'Token: xxx' \
--header 'Nif: 00000014Z'
$ composer require guzzlehttp/guzzle
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api-test.ticketbaiws.eus/spfe-recibidas/?desde_id=56', [
'headers' => [
'Accept' => 'application/json',
'Token' => 'xxx',
'Nif' => '00000014Z'
],
]);
echo $response->getBody();
$ python -m pip install requests
import requests
url = "https://api-test.ticketbaiws.eus/spfe-recibidas/?desde_id=56"
headers = {"Accept": "application/json", "Token": "xxx", "Nif": "00000014Z"}
response = requests.request("GET", url, headers=headers)
print(response.text)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-test.ticketbaiws.eus/spfe-recibidas/?desde_id=56");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Token: xxx");
headers = curl_slist_append(headers, "Nif: 00000014Z");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api-test.ticketbaiws.eus/spfe-recibidas/?desde_id=56")
.get()
.addHeader("Accept", "application/json")
.addHeader("Token", "xxx")
.addHeader("Nif", "00000014Z")
.build();
Response response = client.newCall(request).execute();
HTTP/1.1 200 OK
{
"result": "OK",
"return": [
{
"id": 57,
"factura": "F2026-0153",
"fecha_factura": "03\/11\/2026",
"tipo_factura": "380",
"copia": false,
"nif_emisor": "B01000012",
"nombre_emisor": "Empresa de ejemplo S.L.",
"base": 250.0,
"cuota": 52.5,
"total": 302.5,
"vencimiento": "03\/12\/2026",
"estado": "pendiente",
"localizador": "LOCGENV1:O:NdjdSHy1PAqwlw\/WxTadoIW1lNqFECdDUIGVNyLwO2eDPnFUDys2wo6vFeQGNwGM5pf27bTi1w1Vx4mLbSVJg=",
"fecha_descarga": "04\/11\/2026 10:05:12"
},
{
"id": 58,
"factura": "2026\/0098",
"fecha_factura": "05\/11\/2026",
"tipo_factura": "380",
"copia": false,
"nif_emisor": "A48000016",
"nombre_emisor": "Suministros del Norte S.A.",
"base": 1200.0,
"cuota": 252.0,
"total": 1452.0,
"vencimiento": "05\/01\/2027",
"estado": "pagada",
"localizador": "LOCGENV1:O:tqkR9VoBCDcZ6NEtjWWCxChWU4M5+dYPjdhQzpsJwP2yfWATu9pJ+PCR+6HUgFJxUiVfBKSPtFzbSg=",
"fecha_descarga": "06\/11\/2026 09:15:40"
}
],
"msg": null
}
HTTP/1.1 200 OK
{
"result": "OK",
"return": [],
"msg": "SPFE: not authorized to query received invoices (10\/11\/2026 09:40). Upload the company certificate or grant power of attorney to Berein at the AEAT"
}
Métodos TicketBAI / Verifactu
- POST Nueva factura / subsanación (zuzendu) TicketBAI / Verifactu
- POST Completar factura simplificada
- GET Consulta factura TicketBAI / Verifactu
- GET Listado facturas TicketBAI / Verifactu
- GET Descarga XML TicketBAI / Verifactu
- GET Descarga factura en formato FacturaE
- GET Descarga factura en PDF
- GET Estado sistema
- DEL Anular factura TicketBAI / Verifactu
- PUT Forzar reenvío TicketBAI / Verifactu
- POST Validar NIF en la AEAT
- POST Validar NIF en el VIES
Documento representación
- GET Documento Representación - Descargar modelo
- POST Documento Representación - Enviar documento
- GET Documento Representación - Descargar documento cargado
- DELETE Documento Representación - Revocar documento cargado
Métodos específicos para BATUZ BIZKAIA
- GET Listado de epígrafes
- POST LROE - Facturas recibidas - Envío (BATUZ)
- PUT LROE - Facturas recibidas - Modificar (BATUZ)
- GET LROE - Facturas recibidas - Consulta (BATUZ)
- DEL LROE - Facturas recibidas - Anular (BATUZ)
- POST LROE - Criterio Caja COBROS - Envío (BATUZ)
- PUT LROE - Criterio Caja COBROS - Modificar (BATUZ)
- GET LROE - Criterio Caja COBROS - Consulta (BATUZ)
- DEL LROE - Criterio Caja COBROS - Anular (BATUZ)
- POST LROE - Criterio Caja PAGOS - Envío (BATUZ)
- PUT LROE - Criterio Caja PAGOS - Modificar (BATUZ)
- GET LROE - Criterio Caja PAGOS - Consulta (BATUZ)
- DEL LROE - Criterio Caja PAGOS - Anular (BATUZ)
Factura electrónica B2B - SPFE (Ley Crea y Crece)
- POST SPFE - Comunicar pago, cobro, rechazo o impago
- GET SPFE - Consulta de pagos, cobros, rechazos e impagos
- GET SPFE - Facturas recibidas
