API > SPFE - Facturas recibidas

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)


GET https://{entorno}.ticketbaiws.eus/spfe-recibidas/
$ 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();
{ } Response JSON
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
}
{ } Response sin autorización para consultar JSON
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

Documento representación

Métodos específicos para BATUZ BIZKAIA

Factura electrónica B2B - SPFE (Ley Crea y Crece)

Otros métodos