MENU navbar-image

Introducción

La API Verifactu es una herramienta potente para que adaptes tu Software de Facturación o tu ERP Sistema de Facturación a Verifactu. Permite una integración sencilla con múltiples entornos de desarrollo. Te ofrecemos nuestra API como un servicio, hospedada en nuestros servidores como un SAAS. Para ti, menos preocupaciones, soporte y facilidad en la integración.

Link a nuestro GitHub: https://github.com/NemonInvocash

Descarga la colección Postman para realizar pruebas sobre la API Verifactu de NEMON INVOCASH aquí.

Pasos a seguir:

Endpoints con autenticación

Para autenticar las peticiones, incluye un encabezado Authorization con el valor "Bearer your-token".

Todos los endpoints autenticados están marcados con un badge requiere autenticación en la documentación a continuación.

Autentificación

LogIn

Iniciar sesión para obtener el token de la API y asi poder utilizar sus funcionalidades.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/login';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "email": "ejemplo@verifatuAPI.com",
    "password": "123456789"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "ejemplo@verifatuAPI.com",
    "password": "123456789"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/login" \
    --header "Content-Type: application/json" \
    --data "{
    \"email\": \"ejemplo@verifatuAPI.com\",
    \"password\": \"123456789\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/login'
payload = {
    "email": "ejemplo@verifatuAPI.com",
    "password": "123456789"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "user_name": "VerifactuAPI",
    "user_email": "ejemplo@verifatuAPI.com",
    "message": "Inicio de sesión exitoso",
    "token": "1234567890"
}
 

Example response (401):


{
    "success": false,
    "message": "Credenciales incorrectas",
    "error": 401,
    "code": 401
}
 

Request   

POST api/login

Headers

Content-Type      

Example: application/json

Body Parameters

email   string   

El email del usuario. Example: ejemplo@verifatuAPI.com

password   string   

La contraseña del usuario. Example: 123456789

Login Emisor

Iniciar sesión como emisor para obtener el token de la API para utilizar las funcionalidades limitadas al propio nif del emisor usando la APIKey. Aqui se muestra como generar el APIKey y username para el emisor.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/loginEmisor';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "username": "aa.aaaaaaaaa",
    "api_key": "5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/loginEmisor"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "username": "aa.aaaaaaaaa",
    "api_key": "5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/loginEmisor" \
    --header "Content-Type: application/json" \
    --data "{
    \"username\": \"aa.aaaaaaaaa\",
    \"api_key\": \"5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/loginEmisor'
payload = {
    "username": "aa.aaaaaaaaa",
    "api_key": "5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16"
}
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "user_name": "aa.aaaaaaaaa",
    "message": "Inicio de sesión exitoso",
    "token": "1234567890"
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el emisor especificado.",
    "error": 401,
    "code": 401
}
 

Request   

POST api/loginEmisor

Headers

Content-Type      

Example: application/json

Body Parameters

username   string   

El nombre de usuario del emisor. Example: aa.aaaaaaaaa

api_key   string   

APIKey unica del emisor. Example: 5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16

Emisores

Listado de emisores

requires authentication

Obtener el listado de todos los emisores de la base de datos vinculados al usuario actual. Añadiendo los campos del body se puede filtrar el listado.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 6ghE4dkVfcZa6b81a3PeD5v',
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'nif' => 'P1716358E',
            'nombre' => 'Nombre del emisor',
            'type' => 'verifactu',
            'id_zona_tbai' => '1',
            'enviar_aeat' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor"
);

const params = {
    "nif": "P1716358E",
    "nombre": "Nombre del emisor",
    "type": "verifactu",
    "id_zona_tbai": "1",
    "enviar_aeat": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 6ghE4dkVfcZa6b81a3PeD5v",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/emisor?nif=P1716358E&nombre=Nombre+del+emisor&type=verifactu&id_zona_tbai=1&enviar_aeat=1" \
    --header "Authorization: Bearer 6ghE4dkVfcZa6b81a3PeD5v" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor'
params = {
  'nif': 'P1716358E',
  'nombre': 'Nombre del emisor',
  'type': 'verifactu',
  'id_zona_tbai': '1',
  'enviar_aeat': '1',
}
headers = {
  'Authorization': 'Bearer 6ghE4dkVfcZa6b81a3PeD5v',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
  "success": true,
  "code": 200,
  "message": "Emisores listed successfully",
  "data": {
     "items": [
         {
             "id": 1,
             "nif": "P1716358E",
             "nombre": "Nombre del emisor",
             "created_at": "2024-12-16T11:01:37.000000Z",
             "updated_at": "2024-12-16T11:01:37.000000Z",
             "deleted_at": null,
             "representante_razon_social": null,
             "representante_nif": null,
             "default_webhook_id": 1,
             "enviar_aeat": 1,
             "sistema_informatico_id": 1
             "cp": "43791",
             "type": "verifactu",
             "id_zona_tbai": null,
             "test_production": "t",
             "datos_otorgamiento": "null",
             "datos_otorgamiento_representante": null,
             "otorgamiento_base64": "null",
             "software_tbai": null
         },
     ],
     "count": 1
 },
 "pagination": {
     "total": 1,
     "perPage": 1,
     "currentPage": 1,
     "lastPage": 1
 }
}
 

Request   

GET api/emisor

Headers

Authorization      

Example: Bearer 6ghE4dkVfcZa6b81a3PeD5v

Content-Type      

Example: application/json

Query Parameters

nif   string  optional  

El nif del emisor. Example: P1716358E

nombre   string  optional  

El nombre del emisor. Example: Nombre del emisor

type   string  optional  

El tipo de emisor(verifactu/tbai). Example: verifactu

id_zona_tbai   integer  optional  

El id de la zona de TBAI(1(Álava), 2(Gipuzkoa), 3(Bizkaia), 4(Todos)). Example: 1

enviar_aeat   boolean  optional  

El indicador de si el emisor envía AEAT(true(verifactu)/false(no verifactu)). Example: true

Obtener un emisor

requires authentication

Obtener los datos de un emisor en concreto filtrando por el ID del emisor

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer EZfg6c6PVd415Dvaha8bk3e',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/1"
);

const headers = {
    "Authorization": "Bearer EZfg6c6PVd415Dvaha8bk3e",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/emisor/1" \
    --header "Authorization: Bearer EZfg6c6PVd415Dvaha8bk3e" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/1'
headers = {
  'Authorization': 'Bearer EZfg6c6PVd415Dvaha8bk3e',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
 "success": true,
 "code": 200,
 "message": "Emisor obtained successfully",
 "data": {
         "items": {
             "id": 1,
             "nif": "P1716358E",
             "nombre": "Nombre del emisor",
             "created_at": "2024-12-16T11:01:37.000000Z",
             "updated_at": "2024-12-16T11:01:37.000000Z",
             "deleted_at": null,
             "representante_razon_social": null,
             "representante_nif": null,
             "default_webhook_id": 1,
             "enviar_aeat": 1,
             "sistema_informatico_id": 1
             "cp": "43791",
             "type": "verifactu",
             "id_zona_tbai": null,
             "test_production": "t",
             "datos_otorgamiento": "null",
             "datos_otorgamiento_representante": null,
             "otorgamiento_base64": "null",
             "software_tbai": null
             "sistema_informatico": {
                 "id": 1,
                 "nombre_razon": "NEMON INVOICE TO CASH, SL",
                 "nif": "B70912613",
                 "nombre_sistema_informatico": "NEMON INVOCASH VERIFACTU API",
                 "id_sistema_informatico": "01",
                 "version": "1.0",
                 "numero_instalacion": "20241211164012_103290",
                 "tipo_uso_posible_solo_verifactu": false,
                 "tipo_uso_posible_multi_ot": true,
                 "indicador_multiples_ot": true,
                 "created_at": "2024-12-11T15:40:12.000000Z",
                 "updated_at": "2024-12-11T15:40:12.000000Z",
                 "is_test": true
             }
         }
     },
     "count": 1
 }
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el emisor especificado.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/emisor/{id}

Headers

Authorization      

Example: Bearer EZfg6c6PVd415Dvaha8bk3e

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del emisor que se desea obtener. Example: 1

Crear un nuevo emisor

requires authentication

Crea un nuevo emisor en la base de datos.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3he51dgE46bDvaZk68VafcP',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "nif": "P1716358E",
    "nombre": "Nombre del emisor",
    "cp": "43791",
    "default_webhook_id": 1,
    "enviar_aeat": true
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor"
);

const headers = {
    "Authorization": "Bearer 3he51dgE46bDvaZk68VafcP",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nif": "P1716358E",
    "nombre": "Nombre del emisor",
    "cp": "43791",
    "default_webhook_id": 1,
    "enviar_aeat": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/emisor" \
    --header "Authorization: Bearer 3he51dgE46bDvaZk68VafcP" \
    --header "Content-Type: application/json" \
    --data "{
    \"nif\": \"P1716358E\",
    \"nombre\": \"Nombre del emisor\",
    \"cp\": \"43791\",
    \"default_webhook_id\": 1,
    \"enviar_aeat\": true
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor'
payload = {
    "nif": "P1716358E",
    "nombre": "Nombre del emisor",
    "cp": "43791",
    "default_webhook_id": 1,
    "enviar_aeat": true
}
headers = {
  'Authorization': 'Bearer 3he51dgE46bDvaZk68VafcP',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "success": true,
    "message": "Emisor created successfully",
    "code": 201,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 14,
                "nombre": "Nombre del emisor",
                "nif": "P1716358E",
                "representante_razon_social": null,
                "representante_nif": null,
                "default_webhook_id": 1,
                "enviar_aeat": 1,
                "cp": "43791",
                "type": "verifactu",
                "id_zona_tbai": null,
                "test_production": "t"
            }
        ]
    }
}
 

Example response (409):


{
    "success": false,
    "message": "El NIF proporcionado ya está registrado para otro emisor.",
    "error": 409,
    "code": 409
}
 

Request   

POST api/emisor

Headers

Authorization      

Example: Bearer 3he51dgE46bDvaZk68VafcP

Content-Type      

Example: application/json

Body Parameters

nif   string   

El NIF/CIF del emisor. Example: P1716358E

nombre   string   

El nombre del emisor. Example: Nombre del emisor

cp   string   

El Codigo Postal del emisor. Example: 43791

representante_razon_social   string  optional  

El nombre de la razón social del representante del emisor.

representante_nif   string  optional  

El NIF/CIF del representante del emisor.

default_webhook_id   integer  optional  

El ID del webhook por defecto. Example: 1

enviar_aeat   boolean  optional  

El indicador de si el emisor envía AEAT(true(verifactu)/false(no verifactu)). Default: true. Example: true

Actualizar un emisor

requires authentication

Permite actualizar el nombre y el cp de un emisor

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/1';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer bg1h4eZP5c3fdV6k8DaE6av',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "nombre": "Nombre del emisor",
    "cp": "12345"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/1"
);

const headers = {
    "Authorization": "Bearer bg1h4eZP5c3fdV6k8DaE6av",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nombre": "Nombre del emisor",
    "cp": "12345"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request PUT \
    "https://app.verifactuapi.es/api/emisor/1" \
    --header "Authorization: Bearer bg1h4eZP5c3fdV6k8DaE6av" \
    --header "Content-Type: application/json" \
    --data "{
    \"nombre\": \"Nombre del emisor\",
    \"cp\": \"12345\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/1'
payload = {
    "nombre": "Nombre del emisor",
    "cp": "12345"
}
headers = {
  'Authorization': 'Bearer bg1h4eZP5c3fdV6k8DaE6av',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
 "success": true,
 "message": "Emisor updated successfully",
 "code": 200,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 1,
             "nif": "A39200019",
             "nombre": "EMPRESA TEST",
             "created_at": "2025-04-23T14:33:21.000000Z",
             "updated_at": "2025-04-23T14:33:21.000000Z",
             "deleted_at": null,
             "representante_razon_social": null,
             "representante_nif": null,
             "default_webhook_id": null,
             "enviar_aeat": 1,
             "sistema_informatico_id": 1,
             "cp": "43791",
             "type": "verifactu",
             "id_zona_tbai": null,
             "test_production": "t",
             "software_tbai": null
         }
     ]
 }
 

Example response (400):


{
 "success": false,
 "message": "Solo se permiten actualizar los campos nombre y cp. Campos no permitidos: nif",
 "error": 400,
 "code": 400
 

Request   

PUT api/emisor/{id}

Headers

Authorization      

Example: Bearer bg1h4eZP5c3fdV6k8DaE6av

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del emisor que se desea actualizar. Example: 1

Body Parameters

nombre   string  optional  

El nombre del emisor. Example: Nombre del emisor

cp   string  optional  

El cp del emisor. Example: 12345

Credenciales

Estos enpoints te permiten generar las credenciales de acceso para el emisor. El "username" se genera automaticamente con cualquiera de los dos metodos, no se regenera si ya existe, se mantiene el mismo.

Generar ApiKey

requires authentication

Genera un Api Key y username para el emisor indicado a traves del id. Este Api Key se usa para obtener un token limitado al nif del emisor y que solo pueda gestionar sus facturas.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/1/api-key';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer gafVZa6eE8D4khPb1dvc365',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/1/api-key"
);

const headers = {
    "Authorization": "Bearer gafVZa6eE8D4khPb1dvc365",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/emisor/1/api-key" \
    --header "Authorization: Bearer gafVZa6eE8D4khPb1dvc365" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/1/api-key'
headers = {
  'Authorization': 'Bearer gafVZa6eE8D4khPb1dvc365',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "ApiKey generated successfully",
    "username": "em.p1716358e",
    "api_key": "5d4f3d3bb1284e7cb3f5b7e7881d55d22ef5c1b35d693e6e4b9e5d2293ff1c16"
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el emisor especificado.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/emisor/{id}/api-key

Headers

Authorization      

Example: Bearer gafVZa6eE8D4khPb1dvc365

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del emisor que se desea generar el Api Key. Example: 1

Generar Contraseña

requires authentication

Genera la contraseña y username para el emisor indicado a traves del id. Esta contraseña se usa para que el emisor pueda entrar en modo lectura al entorno web. La contraseña caduca cada 180 días.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/1/credentials';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer g164dka3ZP8aVv65fEbcehD',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/1/credentials"
);

const headers = {
    "Authorization": "Bearer g164dka3ZP8aVv65fEbcehD",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/emisor/1/credentials" \
    --header "Authorization: Bearer g164dka3ZP8aVv65fEbcehD" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/1/credentials'
headers = {
  'Authorization': 'Bearer g164dka3ZP8aVv65fEbcehD',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Credentials generated successfully",
    "username": "em.p1716358e",
    "password": "****************",
    "expiration_date": "2025-07-28"
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el emisor especificado.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/emisor/{id}/credentials

Headers

Authorization      

Example: Bearer g164dka3ZP8aVv65fEbcehD

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del emisor que se desea generar las credenciales. Example: 1

Otorgamiento

Endpoints para la generación y subida de otorgamientos

Generar el PDF de otorgamiento

requires authentication

Generar el PDF de otorgamiento de un emisor

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/pdf-otorgamiento';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer b6dcf6g8Pva4kV1EeD35Zah',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "nif": "A39200019",
    "municipio": "Castellon",
    "via_publica": "C/Principal",
    "numero": "5",
    "representante": []
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/pdf-otorgamiento"
);

const headers = {
    "Authorization": "Bearer b6dcf6g8Pva4kV1EeD35Zah",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nif": "A39200019",
    "municipio": "Castellon",
    "via_publica": "C\/Principal",
    "numero": "5",
    "representante": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/emisor/pdf-otorgamiento" \
    --header "Authorization: Bearer b6dcf6g8Pva4kV1EeD35Zah" \
    --header "Content-Type: application/json" \
    --data "{
    \"nif\": \"A39200019\",
    \"municipio\": \"Castellon\",
    \"via_publica\": \"C\\/Principal\",
    \"numero\": \"5\",
    \"representante\": []
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/pdf-otorgamiento'
payload = {
    "nif": "A39200019",
    "municipio": "Castellon",
    "via_publica": "C\/Principal",
    "numero": "5",
    "representante": []
}
headers = {
  'Authorization': 'Bearer b6dcf6g8Pva4kV1EeD35Zah',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
 "success": true,
 "message": "Otorgamiento generado correctamente",
 "code": 200,
 "data": {
     "nombre": "Lluis Martinez Borrell",
     "nif": "47859447N",
     "municipio": "Ascó",
     "via_publica": "C/test",
     "numero": "5",
     "representante": null,
     "otorgamiento_base64": "pdf en base 64"
 }
 

Example response (400):


{
    "success": false,
    "message": "El NIF es obligatorio.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/emisor/pdf-otorgamiento

Headers

Authorization      

Example: Bearer b6dcf6g8Pva4kV1EeD35Zah

Content-Type      

Example: application/json

Body Parameters

nif   string   

El NIF del emisor. Example: A39200019

municipio   string   

El municipio del emisor. Example: Castellon

via_publica   string   

La via publica del emisor. Example: C/Principal

numero   string   

El numero de la via publica del emisor. Example: 5

representante   object  optional  

Objeto con los datos del representante del emisor

nombre   string  optional  

El nombre del representante del emisor.

nif   string  optional  

El NIF del representante del emisor.

municipio   string  optional  

El municipio del representante del emisor.

via_publica   string  optional  

La via publica del representante del emisor.

numero   string  optional  

El numero de la via publica del representante del emisor.

Importar el PDF de otorgamiento

requires authentication

Importar el PDF de otorgamiento de un emisor y sus adjuntos

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/importar-pdf-otorgamiento';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer avdZ153gf8b6D6P4VkaceEh',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "nif": "A39200019",
    "otorgamiento_base64": "pdf en base 64",
    "adjuntos_base64": null
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/importar-pdf-otorgamiento"
);

const headers = {
    "Authorization": "Bearer avdZ153gf8b6D6P4VkaceEh",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "nif": "A39200019",
    "otorgamiento_base64": "pdf en base 64",
    "adjuntos_base64": null
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/emisor/importar-pdf-otorgamiento" \
    --header "Authorization: Bearer avdZ153gf8b6D6P4VkaceEh" \
    --header "Content-Type: application/json" \
    --data "{
    \"nif\": \"A39200019\",
    \"otorgamiento_base64\": \"pdf en base 64\",
    \"adjuntos_base64\": null
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/importar-pdf-otorgamiento'
payload = {
    "nif": "A39200019",
    "otorgamiento_base64": "pdf en base 64",
    "adjuntos_base64": null
}
headers = {
  'Authorization': 'Bearer avdZ153gf8b6D6P4VkaceEh',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "success": true,
    "message": "Otorgamiento importado correctamente",
    "code": 200,
    "data": {
        "nif": "47859447N",
        "nombre": "Lluis Martinez",
        "otorgamiento_importado_base64": "pdf en base 64"
    }
}
 

Example response (400):


{
    "success": false,
    "message": "El otorgamiento_base64 es obligatorio.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/emisor/importar-pdf-otorgamiento

Headers

Authorization      

Example: Bearer avdZ153gf8b6D6P4VkaceEh

Content-Type      

Example: application/json

Body Parameters

nif   string   

El NIF del emisor. Example: A39200019

otorgamiento_base64   string   

El otorgamiento firmado en base 64. Example: pdf en base 64

adjuntos_base64   string[]   

Los adjuntos en base 64. Puede ser un array de 1 o 2 elementos. Formatos soportados: pdf, png, jpg, jpeg.

Facturas

Alta-Facturas

Registrar una factura.

requires authentication

Registra una nueva factura en la base de datos para ser procesada y enviada donde corresponda.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/alta-registro-facturacion';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer k66VEP8ed1hacbfv5Z4g3Da',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/alta-registro-facturacion"
);

const headers = {
    "Authorization": "Bearer k66VEP8ed1hacbfv5Z4g3Da",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/alta-registro-facturacion" \
    --header "Authorization: Bearer k66VEP8ed1hacbfv5Z4g3Da" \
    --header "Content-Type: application/json" \
    --data "{
    \"IDEmisorFactura\": \"A39200019\",
    \"NumSerieFactura\": \"AX\\/202412-1\",
    \"FechaExpedicionFactura\": \"2025-1-1\",
    \"NombreRazonEmisor\": \"EMPRESA TEST\",
    \"RefExterna\": \"Test Ref Externa\",
    \"TipoFactura\": \"F1\",
    \"DescripcionOperacion\": \"test\",
    \"Destinatarios\": [
        {
            \"NombreRazon\": \"IVAN SOLE MARTINEZ\",
            \"NIF\": \"39707287H\"
        }
    ],
    \"Desglose\": [
        {
            \"Impuesto\": 1,
            \"ClaveRegimen\": 1,
            \"CalificacionOperacion\": 1,
            \"TipoImpositivo\": 21,
            \"BaseImponibleOImporteNoSujeto\": 100,
            \"BaseImponibleACoste\": 100,
            \"CuotaRepercutida\": 21
        }
    ],
    \"CuotaTotal\": 21,
    \"ImporteTotal\": 121,
    \"webhook_id\": 1,
    \"tag\": \"test\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/alta-registro-facturacion'
payload = {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
}
headers = {
  'Authorization': 'Bearer k66VEP8ed1hacbfv5Z4g3Da',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
 "success": true,
 "message": "AltaRegistroFacturacion created successfully",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 1,
             "previous_id": null,
             "alta_o_anulacion": 1,
             "id_registro_anulado": null,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": "test",
             "NombreRazonDestinatario": "IVAN SOLE MARTINEZ",
             "NIFDestinatario": "39707287H",
             "RefExterna": "Test Ref Externa",
             "CuotaTotal": 21,
             "ImporteTotal": 121,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": test,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"type\":\"verifactu\",\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-1-1\",\"NombreRazonEmisor\":\"EMPRESA TEST\",\"RefExterna\":\"Test Ref Externa\",\"TipoFactura\":1,\"DescripcionOperacion\":\"test\",\"Destinatarios\":[{\"NombreRazon\":\"IVAN SOLE MARTINEZ\",\"NIF\":\"39707287H\"}],\"Desglose\":[{\"Impuesto\":1,\"ClaveRegimen\":1,\"CalificacionOperacion\":1,\"TipoImpositivo\":21,\"BaseImponibleOImporteNoSujeto\":100,\"CuotaRepercutida\":21}],\"CuotaTotal\":21,\"ImporteTotal\":121,\"Subsanacion\":2,\"RechazoPrevio\":1,\"FacturaSimplificadaArt7273\":2,\"Art61d\":2,\"Macrodato\":2,\"Cupon\":2,\"verifactu\":true}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": "https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=A39200019&numserie=AX/202412-1&fecha=01-01-2025&importe=121",
             "qr_image": "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",
             "qr_x": null,
             "qr_y": null,
             "qr_page": 1,
             "IDVersion": 1,
             "Subsanacion": 2,
             "RechazoPrevio": 1,
             "TipoFactura": 1,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": 2,
             "FacturaSinIdentifDestinatarioArt61d": 2,
             "Macrodato": 2,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": 2,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": null,
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": null,
             "IDEmisorFacturaAnterior": null,
             "NumSerieFacturaAnterior": null,
             "FechaExpedicionFacturaAnterior": null,
             "HuellaAnterior": null,
             "xml_aeat": null,
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (400):


{
    "success": false,
    "message": "El campo IDEmisorFactura es obligatorio y no puede ser null.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/alta-registro-facturacion

Headers

Authorization      

Example: Bearer k66VEP8ed1hacbfv5Z4g3Da

Content-Type      

Example: application/json

Body Parameters

IDEmisorFactura   string   

El NIF del emisor. Example: A39200019

NumSerieFactura   string   

El número de serie de la factura. Example: AX/202412-1

FechaExpedicionFactura   string   

La fecha de expedición de la factura. Example: 2025-1-1

NombreRazonEmisor   string   

Nombre o razón social del emisor. Example: EMPRESA TEST

RefExterna   string  optional  

optional Referencia externa de la factura. Example: Test Ref Externa

TipoFactura   string   

Tipo de factura (lista_l2). Example: F1

DescripcionOperacion   string   

Descripción de la operación. Example: test

Destinatarios   string[]   

Lista de destinatarios de la factura.

*   object  optional  
NombreRazon   string   

Nombre o razón social del destinatario. Example: "IVAN SOLE MARTINEZ"

NIF   string   

NIF del destinatario. Example: "39707287H"

Desglose   string[]   

Lista de desgloses de la factura.

*   object  optional  
Impuesto   string  optional  

optional Código del impuesto. Example: 01

ClaveRegimen   integer  optional  

optional Clave del régimen especial. Example: 1

CalificacionOperacion   integer  optional  

optional Calificación de la operación. Example: 1

TipoImpositivo   numeric  optional  

optional Tipo impositivo aplicado. Example: 21

BaseImponibleOImporteNoSujeto   numeric  optional  

optional Base imponible. Example: 100

CuotaRepercutida   numeric  optional  

optional Cuota repercutida. Example: 21

CuotaTotal   number   

Cuota total de la factura. Example: 21

ImporteTotal   number   

Importe total de la factura. Example: 121

webhook_id   integer  optional  

optional El ID del webhook asociado a la factura. Example: 1

tag   string  optional  

optional Etiqueta personalizada para la factura. Example: test

Registrar una factura.

requires authentication

Registra una nueva factura en la base de datos para ser procesada y enviada donde corresponda.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/alta-registro-tbai';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 6EZca61hkeabP34D5Vvdg8f',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/alta-registro-tbai"
);

const headers = {
    "Authorization": "Bearer 6EZca61hkeabP34D5Vvdg8f",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/alta-registro-tbai" \
    --header "Authorization: Bearer 6EZca61hkeabP34D5Vvdg8f" \
    --header "Content-Type: application/json" \
    --data "{
    \"IDEmisorFactura\": \"A39200019\",
    \"NumSerieFactura\": \"AX\\/202412-1\",
    \"FechaExpedicionFactura\": \"2025-1-1\",
    \"NombreRazonEmisor\": \"EMPRESA TEST\",
    \"RefExterna\": \"Test Ref Externa\",
    \"TipoFactura\": \"F1\",
    \"DescripcionOperacion\": \"test\",
    \"Destinatarios\": [
        {
            \"NombreRazon\": \"IVAN SOLE MARTINEZ\",
            \"NIF\": \"39707287H\"
        }
    ],
    \"Desglose\": [
        {
            \"Impuesto\": 1,
            \"ClaveRegimen\": 1,
            \"CalificacionOperacion\": 1,
            \"TipoImpositivo\": 21,
            \"BaseImponibleOImporteNoSujeto\": 100,
            \"BaseImponibleACoste\": 100,
            \"CuotaRepercutida\": 21
        }
    ],
    \"CuotaTotal\": 21,
    \"ImporteTotal\": 121,
    \"webhook_id\": 1,
    \"tag\": \"test\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/alta-registro-tbai'
payload = {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-1-1",
    "NombreRazonEmisor": "EMPRESA TEST",
    "RefExterna": "Test Ref Externa",
    "TipoFactura": "F1",
    "DescripcionOperacion": "test",
    "Destinatarios": [
        {
            "NombreRazon": "IVAN SOLE MARTINEZ",
            "NIF": "39707287H"
        }
    ],
    "Desglose": [
        {
            "Impuesto": 1,
            "ClaveRegimen": 1,
            "CalificacionOperacion": 1,
            "TipoImpositivo": 21,
            "BaseImponibleOImporteNoSujeto": 100,
            "BaseImponibleACoste": 100,
            "CuotaRepercutida": 21
        }
    ],
    "CuotaTotal": 21,
    "ImporteTotal": 121,
    "webhook_id": 1,
    "tag": "test"
}
headers = {
  'Authorization': 'Bearer 6EZca61hkeabP34D5Vvdg8f',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
 "success": true,
 "message": "AltaRegistroFacturacion created successfully",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 1,
             "previous_id": null,
             "alta_o_anulacion": 1,
             "id_registro_anulado": null,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": "test",
             "NombreRazonDestinatario": "IVAN SOLE MARTINEZ",
             "NIFDestinatario": "39707287H",
             "RefExterna": "Test Ref Externa",
             "CuotaTotal": 21,
             "ImporteTotal": 121,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": test,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"type\":\"verifactu\",\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-1-1\",\"NombreRazonEmisor\":\"EMPRESA TEST\",\"RefExterna\":\"Test Ref Externa\",\"TipoFactura\":1,\"DescripcionOperacion\":\"test\",\"Destinatarios\":[{\"NombreRazon\":\"IVAN SOLE MARTINEZ\",\"NIF\":\"39707287H\"}],\"Desglose\":[{\"Impuesto\":1,\"ClaveRegimen\":1,\"CalificacionOperacion\":1,\"TipoImpositivo\":21,\"BaseImponibleOImporteNoSujeto\":100,\"CuotaRepercutida\":21}],\"CuotaTotal\":21,\"ImporteTotal\":121,\"Subsanacion\":2,\"RechazoPrevio\":1,\"FacturaSimplificadaArt7273\":2,\"Art61d\":2,\"Macrodato\":2,\"Cupon\":2,\"verifactu\":true}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": "https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=A39200019&numserie=AX/202412-1&fecha=01-01-2025&importe=121",
             "qr_image": "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",
             "qr_x": null,
             "qr_y": null,
             "qr_page": 1,
             "IDVersion": 1,
             "Subsanacion": 2,
             "RechazoPrevio": 1,
             "TipoFactura": 1,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": 2,
             "FacturaSinIdentifDestinatarioArt61d": 2,
             "Macrodato": 2,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": 2,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": null,
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": null,
             "IDEmisorFacturaAnterior": null,
             "NumSerieFacturaAnterior": null,
             "FechaExpedicionFacturaAnterior": null,
             "HuellaAnterior": null,
             "xml_aeat": null,
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (400):


{
    "success": false,
    "message": "El campo IDEmisorFactura es obligatorio y no puede ser null.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/alta-registro-tbai

Headers

Authorization      

Example: Bearer 6EZca61hkeabP34D5Vvdg8f

Content-Type      

Example: application/json

Body Parameters

IDEmisorFactura   string   

El NIF del emisor. Example: A39200019

NumSerieFactura   string   

El número de serie de la factura. Example: AX/202412-1

FechaExpedicionFactura   string   

La fecha de expedición de la factura. Example: 2025-1-1

NombreRazonEmisor   string   

Nombre o razón social del emisor. Example: EMPRESA TEST

RefExterna   string  optional  

optional Referencia externa de la factura. Example: Test Ref Externa

TipoFactura   string   

Tipo de factura (lista_l2). Example: F1

DescripcionOperacion   string   

Descripción de la operación. Example: test

Destinatarios   string[]   

Lista de destinatarios de la factura.

*   object  optional  
NombreRazon   string   

Nombre o razón social del destinatario. Example: "IVAN SOLE MARTINEZ"

NIF   string   

NIF del destinatario. Example: "39707287H"

Desglose   string[]   

Lista de desgloses de la factura.

*   object  optional  
Impuesto   string  optional  

optional Código del impuesto. Example: 01

ClaveRegimen   integer  optional  

optional Clave del régimen especial. Example: 1

CalificacionOperacion   integer  optional  

optional Calificación de la operación. Example: 1

TipoImpositivo   numeric  optional  

optional Tipo impositivo aplicado. Example: 21

BaseImponibleOImporteNoSujeto   numeric  optional  

optional Base imponible. Example: 100

CuotaRepercutida   numeric  optional  

optional Cuota repercutida. Example: 21

CuotaTotal   number   

Cuota total de la factura. Example: 21

ImporteTotal   number   

Importe total de la factura. Example: 121

webhook_id   integer  optional  

optional El ID del webhook asociado a la factura. Example: 1

tag   string  optional  

optional Etiqueta personalizada para la factura. Example: test

Baja-Facturas

Registrar una anulacion.

requires authentication

Registra una anulacion de factura en la base de datos para ser procesada y enviada donde corresponda. Si la factura a anular no existe en la API, usar el campo SinRegistroPrevio.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/anulacion-registro-facturacion';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer VcaZed81D5g6EPhkvf63ba4',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/anulacion-registro-facturacion"
);

const headers = {
    "Authorization": "Bearer VcaZed81D5g6EPhkvf63ba4",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/anulacion-registro-facturacion" \
    --header "Authorization: Bearer VcaZed81D5g6EPhkvf63ba4" \
    --header "Content-Type: application/json" \
    --data "{
    \"type\": \"tbai\",
    \"IDEmisorFactura\": \"A39200019\",
    \"NumSerieFactura\": \"AX\\/202412-1\",
    \"FechaExpedicionFactura\": \"2025-11-11\",
    \"SinRegistroPrevio\": true
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/anulacion-registro-facturacion'
payload = {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
}
headers = {
  'Authorization': 'Bearer VcaZed81D5g6EPhkvf63ba4',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
 "success": true,
 "message": "Anulacion creada correctamente",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 2,
             "previous_id": null,
             "alta_o_anulacion": 2,
             "id_registro_anulado": 1,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": null,
             "NombreRazonDestinatario": null,
             "NIFDestinatario": null,
             "RefExterna": null,
             "CuotaTotal": null,
             "ImporteTotal": null,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": null,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": null,
             "qr_image": null,
             "qr_x": null,
             "qr_y": null,
             "qr_page": null,
             "IDVersion": 1,
             "Subsanacion": null,
             "RechazoPrevio": null,
             "TipoFactura": null,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": null,
             "FacturaSinIdentifDestinatarioArt61d": null,
             "Macrodato": null,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": null,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
             "IDEmisorFacturaAnterior": "A39200019",
             "NumSerieFacturaAnterior": "CHAT-50/0240",
             "FechaExpedicionFacturaAnterior": "2025-01-20",
             "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
             "xml_aeat": "xml_aeat",
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (400):


{
    "success": false,
    "message": "El tipo de factura no es válido. Campo \"type\" no encontrado.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/anulacion-registro-facturacion

Headers

Authorization      

Example: Bearer VcaZed81D5g6EPhkvf63ba4

Content-Type      

Example: application/json

Body Parameters

type   string   

El tipo de factura. Example: tbai

IDEmisorFactura   string   

El ID del emisor de la factura. Example: A39200019

NumSerieFactura   string   

El número de serie de la factura. Example: AX/202412-1

FechaExpedicionFactura   string   

La fecha de expedición de la factura. Example: 2025-11-11

SinRegistroPrevio   boolean  optional  

Si la factura a anular no existe en la API, usar el campo SinRegistroPrevio. Example: true

Anular factura por id.

requires authentication

Anula una factura existente en la base de datos usando el id, registra la anulacion y se procesa.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/anulacion-registro-facturacion/1';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer E46kP3vhb6d5gVeaDZ8afc1',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/anulacion-registro-facturacion/1"
);

const headers = {
    "Authorization": "Bearer E46kP3vhb6d5gVeaDZ8afc1",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/anulacion-registro-facturacion/1" \
    --header "Authorization: Bearer E46kP3vhb6d5gVeaDZ8afc1" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/anulacion-registro-facturacion/1'
headers = {
  'Authorization': 'Bearer E46kP3vhb6d5gVeaDZ8afc1',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (201):


{
 "success": true,
 "message": "Anulacion creada correctamente",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 2,
             "previous_id": null,
             "alta_o_anulacion": 2,
             "id_registro_anulado": 1,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": null,
             "NombreRazonDestinatario": null,
             "NIFDestinatario": null,
             "RefExterna": null,
             "CuotaTotal": null,
             "ImporteTotal": null,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": null,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": null,
             "qr_image": null,
             "qr_x": null,
             "qr_y": null,
             "qr_page": null,
             "IDVersion": 1,
             "Subsanacion": null,
             "RechazoPrevio": null,
             "TipoFactura": null,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": null,
             "FacturaSinIdentifDestinatarioArt61d": null,
             "Macrodato": null,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": null,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
             "IDEmisorFacturaAnterior": "A39200019",
             "NumSerieFacturaAnterior": "CHAT-50/0240",
             "FechaExpedicionFacturaAnterior": "2025-01-20",
             "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
             "xml_aeat": "xml_aeat",
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (404):


{
    "success": false,
    "message": "No se encontró la factura especificada.",
    "error": 404,
    "code": 404
}
 

Request   

POST api/anulacion-registro-facturacion/{id}

Headers

Authorization      

Example: Bearer E46kP3vhb6d5gVeaDZ8afc1

Content-Type      

Example: application/json

URL Parameters

id   string   

El id del registro de la factura a anular. Example: 1

Registrar una anulacion.

requires authentication

Registra una anulacion de factura en la base de datos para ser procesada y enviada donde corresponda. Si la factura a anular no existe en la API, usar el campo SinRegistroPrevio.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/anulacion-registro-tbai';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer f4VPe1bc8dZEa65ah6gv3kD',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/anulacion-registro-tbai"
);

const headers = {
    "Authorization": "Bearer f4VPe1bc8dZEa65ah6gv3kD",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/anulacion-registro-tbai" \
    --header "Authorization: Bearer f4VPe1bc8dZEa65ah6gv3kD" \
    --header "Content-Type: application/json" \
    --data "{
    \"type\": \"tbai\",
    \"IDEmisorFactura\": \"A39200019\",
    \"NumSerieFactura\": \"AX\\/202412-1\",
    \"FechaExpedicionFactura\": \"2025-11-11\",
    \"SinRegistroPrevio\": true
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/anulacion-registro-tbai'
payload = {
    "type": "tbai",
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX\/202412-1",
    "FechaExpedicionFactura": "2025-11-11",
    "SinRegistroPrevio": true
}
headers = {
  'Authorization': 'Bearer f4VPe1bc8dZEa65ah6gv3kD',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
 "success": true,
 "message": "Anulacion creada correctamente",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 2,
             "previous_id": null,
             "alta_o_anulacion": 2,
             "id_registro_anulado": 1,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": null,
             "NombreRazonDestinatario": null,
             "NIFDestinatario": null,
             "RefExterna": null,
             "CuotaTotal": null,
             "ImporteTotal": null,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": null,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": null,
             "qr_image": null,
             "qr_x": null,
             "qr_y": null,
             "qr_page": null,
             "IDVersion": 1,
             "Subsanacion": null,
             "RechazoPrevio": null,
             "TipoFactura": null,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": null,
             "FacturaSinIdentifDestinatarioArt61d": null,
             "Macrodato": null,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": null,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
             "IDEmisorFacturaAnterior": "A39200019",
             "NumSerieFacturaAnterior": "CHAT-50/0240",
             "FechaExpedicionFacturaAnterior": "2025-01-20",
             "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
             "xml_aeat": "xml_aeat",
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (400):


{
    "success": false,
    "message": "El tipo de factura no es válido. Campo \"type\" no encontrado.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/anulacion-registro-tbai

Headers

Authorization      

Example: Bearer f4VPe1bc8dZEa65ah6gv3kD

Content-Type      

Example: application/json

Body Parameters

type   string   

El tipo de factura. Example: tbai

IDEmisorFactura   string   

El ID del emisor de la factura. Example: A39200019

NumSerieFactura   string   

El número de serie de la factura. Example: AX/202412-1

FechaExpedicionFactura   string   

La fecha de expedición de la factura. Example: 2025-11-11

SinRegistroPrevio   boolean  optional  

Si la factura a anular no existe en la API, usar el campo SinRegistroPrevio. Example: true

Anular factura por id.

requires authentication

Anula una factura existente en la base de datos usando el id, registra la anulacion y se procesa.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/anulacion-registro-tbai/1';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 5d16PeEDbaZ3vV6ahc4gfk8',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/anulacion-registro-tbai/1"
);

const headers = {
    "Authorization": "Bearer 5d16PeEDbaZ3vV6ahc4gfk8",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/anulacion-registro-tbai/1" \
    --header "Authorization: Bearer 5d16PeEDbaZ3vV6ahc4gfk8" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/anulacion-registro-tbai/1'
headers = {
  'Authorization': 'Bearer 5d16PeEDbaZ3vV6ahc4gfk8',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Example response (201):


{
 "success": true,
 "message": "Anulacion creada correctamente",
 "code": 201,
 "data": {
     "count": 1,
     "items": [
         {
             "id": 2,
             "previous_id": null,
             "alta_o_anulacion": 2,
             "id_registro_anulado": 1,
             "IDEmisorFactura": "A39200019",
             "NumSerieFactura": "AX/202412-1",
             "NumSerie": null,
             "NumFactura": null,
             "FechaExpedicionFactura": "2025-01-01",
             "HoraExpedicionFactura": null,
             "FechaOperacion": null,
             "DescripcionOperacion": null,
             "NombreRazonDestinatario": null,
             "NIFDestinatario": null,
             "RefExterna": null,
             "CuotaTotal": null,
             "ImporteTotal": null,
             "moneda": "EUR",
             "BaseRectificada": null,
             "CuotaRectificada": null,
             "CuotaRecargoRectificada": null,
             "tag": null,
             "webhook_id": null,
             "webhook_log_id": null,
             "verifactu": 1,
             "tbai": 0,
             "face": 0,
             "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
             "base64_pdf": null,
             "base64_qr_pdf": null,
             "url_qr": null,
             "qr_image": null,
             "qr_x": null,
             "qr_y": null,
             "qr_page": null,
             "IDVersion": 1,
             "Subsanacion": null,
             "RechazoPrevio": null,
             "TipoFactura": null,
             "TipoRectificativa": null,
             "FacturaSimplificadaArt7273": null,
             "FacturaSinIdentifDestinatarioArt61d": null,
             "Macrodato": null,
             "EmitidaPorTercODesti": null,
             "TercNombreRazon": null,
             "TercNIF": null,
             "TercOtroCodPais": null,
             "TercOtroIDType": null,
             "TercOtroID": null,
             "Cupon": null,
             "SinRegistroPrevio": null,
             "RechazoPrevioA": 1,
             "GeneradoPor": null,
             "Generador_NombreRazon": null,
             "Generador_NIF": null,
             "Generador_OtroCodPais": null,
             "Generador_OtroIDType": null,
             "Generador_OtroID": null,
             "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
             "Signature": null,
             "TipoHuella": 1,
             "NumRegistroAcuerdoFacturacion": null,
             "IdAcuerdoSistemaInformatico": null,
             "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
             "IDEmisorFacturaAnterior": "A39200019",
             "NumSerieFacturaAnterior": "CHAT-50/0240",
             "FechaExpedicionFacturaAnterior": "2025-01-20",
             "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
             "xml_aeat": "xml_aeat",
             "xml_signed": null,
             "xml_aeat_response": null,
             "estado_aeat": "No Registrado",
             "estado_registro_aeat": null,
             "codigo_error_aeat": null,
             "descripcion_error_aeat": null,
             "envios_aeat_id": null,
             "envios_aeat_lineas_id": null
         }
     ]
 }
 

Example response (404):


{
    "success": false,
    "message": "No se encontró la factura especificada.",
    "error": 404,
    "code": 404
}
 

Request   

POST api/anulacion-registro-tbai/{id}

Headers

Authorization      

Example: Bearer 5d16PeEDbaZ3vV6ahc4gfk8

Content-Type      

Example: application/json

URL Parameters

id   string   

El id del registro de la factura a anular. Example: 1

Listar-Facturas

Obtener lista de facturas

requires authentication

Muestra una lista con todas las facturas del usuario. Añadiendo los campos del body se puede filtrar el listado.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/alta-registro-facturacion';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 863hcEvkeg5dZfVaa1D46bP',
            'Content-Type' => 'application/json',
        ],
        'query' => [
            'IDEmisorFactura' => 'A39200019',
            'NumSerieFactura' => 'AX/202412-1',
            'FechaExpedicionFactura' => '2025-01-01',
            'NifDestinatario' => '123456789',
            'NombreRazonDestinatario' => 'Nombre del destinatario',
            'ImporteTotal' => '100',
            'tag' => '123456789',
            'alta_o_anulacion' => '1',
            'tbai' => '0',
            'verifactu' => '1',
            'no_verifactu' => '0',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/alta-registro-facturacion"
);

const params = {
    "IDEmisorFactura": "A39200019",
    "NumSerieFactura": "AX/202412-1",
    "FechaExpedicionFactura": "2025-01-01",
    "NifDestinatario": "123456789",
    "NombreRazonDestinatario": "Nombre del destinatario",
    "ImporteTotal": "100",
    "tag": "123456789",
    "alta_o_anulacion": "1",
    "tbai": "0",
    "verifactu": "1",
    "no_verifactu": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 863hcEvkeg5dZfVaa1D46bP",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/alta-registro-facturacion?IDEmisorFactura=A39200019&NumSerieFactura=AX%2F202412-1&FechaExpedicionFactura=2025-01-01&NifDestinatario=123456789&NombreRazonDestinatario=Nombre+del+destinatario&ImporteTotal=100&tag=123456789&alta_o_anulacion=1&tbai=0&verifactu=1&no_verifactu=0" \
    --header "Authorization: Bearer 863hcEvkeg5dZfVaa1D46bP" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/alta-registro-facturacion'
params = {
  'IDEmisorFactura': 'A39200019',
  'NumSerieFactura': 'AX/202412-1',
  'FechaExpedicionFactura': '2025-01-01',
  'NifDestinatario': '123456789',
  'NombreRazonDestinatario': 'Nombre del destinatario',
  'ImporteTotal': '100',
  'tag': '123456789',
  'alta_o_anulacion': '1',
  'tbai': '0',
  'verifactu': '1',
  'no_verifactu': '0',
}
headers = {
  'Authorization': 'Bearer 863hcEvkeg5dZfVaa1D46bP',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Invoices listed successfully",
    "data": {
        "items": [
            {
                "id": 1,
                "previous_id": null,
                "alta_o_anulacion": 2,
                "id_registro_anulado": 1,
                "IDEmisorFactura": "A39200019",
                "NumSerieFactura": "AX/202412-1",
                "NumSerie": null,
                "NumFactura": null,
                "FechaExpedicionFactura": "2025-01-01",
                "HoraExpedicionFactura": null,
                "FechaOperacion": null,
                "DescripcionOperacion": null,
                "NombreRazonDestinatario": null,
                "NIFDestinatario": null,
                "RefExterna": null,
                "CuotaTotal": null,
                "ImporteTotal": null,
                "moneda": "EUR",
                "BaseRectificada": null,
                "CuotaRectificada": null,
                "CuotaRecargoRectificada": null,
                "tag": null,
                "webhook_id": null,
                "webhook_log_id": null,
                "verifactu": 1,
                "tbai": 0,
                "face": 0,
                "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
                "base64_pdf": null,
                "base64_qr_pdf": null,
                "url_qr": null,
                "qr_image": null,
                "qr_x": null,
                "qr_y": null,
                "qr_page": null,
                "IDVersion": 1,
                "Subsanacion": null,
                "RechazoPrevio": null,
                "TipoFactura": null,
                "TipoRectificativa": null,
                "FacturaSimplificadaArt7273": null,
                "FacturaSinIdentifDestinatarioArt61d": null,
                "Macrodato": null,
                "EmitidaPorTercODesti": null,
                "TercNombreRazon": null,
                "TercNIF": null,
                "TercOtroCodPais": null,
                "TercOtroIDType": null,
                "TercOtroID": null,
                "Cupon": null,
                "SinRegistroPrevio": null,
                "RechazoPrevioA": 1,
                "GeneradoPor": null,
                "Generador_NombreRazon": null,
                "Generador_NIF": null,
                "Generador_OtroCodPais": null,
                "Generador_OtroIDType": null,
                "Generador_OtroID": null,
                "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
                "Signature": null,
                "TipoHuella": 1,
                "NumRegistroAcuerdoFacturacion": null,
                "IdAcuerdoSistemaInformatico": null,
                "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
                "IDEmisorFacturaAnterior": "A39200019",
                "NumSerieFacturaAnterior": "CHAT-50/0240",
                "FechaExpedicionFacturaAnterior": "2025-01-20",
                "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
                "xml_aeat": "xml_aeat",
                "xml_signed": null,
                "xml_aeat_response": null,
                "estado_aeat": "No Registrado",
                "estado_registro_aeat": null,
                "codigo_error_aeat": null,
                "descripcion_error_aeat": null,
                "envios_aeat_id": null,
                "envios_aeat_lineas_id": null
            }
        ],
        "count": 1
    },
    "pagination": {
        "total": 1,
        "perPage": 10,
        "currentPage": 1,
        "lastPage": 1
    }
}
 

Request   

GET api/alta-registro-facturacion

Headers

Authorization      

Example: Bearer 863hcEvkeg5dZfVaa1D46bP

Content-Type      

Example: application/json

Query Parameters

IDEmisorFactura   string  optional  

El ID del emisor de la factura. Example: A39200019

NumSerieFactura   string  optional  

El número de serie de la factura. Example: AX/202412-1

FechaExpedicionFactura   string  optional  

La fecha de expedición de la factura. Example: 2025-01-01

NifDestinatario   string  optional  

El NIF del destinatario. Example: 123456789

NombreRazonDestinatario   string  optional  

El nombre o razón social del destinatario. Example: Nombre del destinatario

ImporteTotal   number  optional  

El importe total de la factura. Example: 100

tag   string  optional  

El tag de la factura. Example: 123456789

alta_o_anulacion   integer  optional  

El tipo de factura (1(alta)/2(anulación)). Example: 1

tbai   integer  optional  

El tipo de factura (1(Tbai)/0(No Tbai)). Example: 0

verifactu   integer  optional  

El tipo de factura (1(Verifactu)/0(No Verifactu)). Example: 1

no_verifactu   integer  optional  

El tipo de factura (1(No Verifactu)/0(Verifactu)). Example: 0

Obtener una factura por id

requires authentication

Muestra los datos de una factura filtrando por el ID.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/alta-registro-facturacion/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 6aeEdP8hf1kv6Db3g4VZ5ac',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/alta-registro-facturacion/1"
);

const headers = {
    "Authorization": "Bearer 6aeEdP8hf1kv6Db3g4VZ5ac",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/alta-registro-facturacion/1" \
    --header "Authorization: Bearer 6aeEdP8hf1kv6Db3g4VZ5ac" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/alta-registro-facturacion/1'
headers = {
  'Authorization': 'Bearer 6aeEdP8hf1kv6Db3g4VZ5ac',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Invoice obtained successfully",
    "data": {
        "items": {
            "id": 1,
            "previous_id": null,
            "alta_o_anulacion": 2,
            "id_registro_anulado": 1,
            "IDEmisorFactura": "A39200019",
            "NumSerieFactura": "AX/202412-1",
            "NumSerie": null,
            "NumFactura": null,
            "FechaExpedicionFactura": "2025-01-01",
            "HoraExpedicionFactura": null,
            "FechaOperacion": null,
            "DescripcionOperacion": null,
            "NombreRazonDestinatario": null,
            "NIFDestinatario": null,
            "RefExterna": null,
            "CuotaTotal": null,
            "ImporteTotal": null,
            "moneda": "EUR",
            "BaseRectificada": null,
            "CuotaRectificada": null,
            "CuotaRecargoRectificada": null,
            "tag": null,
            "webhook_id": null,
            "webhook_log_id": null,
            "verifactu": 1,
            "tbai": 0,
            "face": 0,
            "json": "{\"id_registro_anulado\":28,\"IDEmisorFactura\":\"A39200019\",\"NumSerieFactura\":\"AX\\/202412-1\",\"FechaExpedicionFactura\":\"2025-01-01\",\"HoraExpedicionFactura\":null,\"verifactu\":true,\"estado_registro_verifactu\":\"No Registrado\",\"IDEmisorFacturaAnterior\":\"A39200019\",\"NumSerieFacturaAnterior\":\"CHAT-50\\/0240\",\"FechaExpedicionFacturaAnterior\":\"2025-01-20\",\"HuellaAnterior\":\"4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03\",\"FechaHoraHusoGenRegistro\":\"2025-03-21T11:23:52+01:00\",\"TipoHuella\":\"01\",\"Huella\":\"FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3\",\"alta_o_anulacion\":2}",
            "base64_pdf": null,
            "base64_qr_pdf": null,
            "url_qr": null,
            "qr_image": null,
            "qr_x": null,
            "qr_y": null,
            "qr_page": null,
            "IDVersion": 1,
            "Subsanacion": null,
            "RechazoPrevio": null,
            "TipoFactura": null,
            "TipoRectificativa": null,
            "FacturaSimplificadaArt7273": null,
            "FacturaSinIdentifDestinatarioArt61d": null,
            "Macrodato": null,
            "EmitidaPorTercODesti": null,
            "TercNombreRazon": null,
            "TercNIF": null,
            "TercOtroCodPais": null,
            "TercOtroIDType": null,
            "TercOtroID": null,
            "Cupon": null,
            "SinRegistroPrevio": null,
            "RechazoPrevioA": 1,
            "GeneradoPor": null,
            "Generador_NombreRazon": null,
            "Generador_NIF": null,
            "Generador_OtroCodPais": null,
            "Generador_OtroIDType": null,
            "Generador_OtroID": null,
            "Huella": "FB371EEC8C80FF93A6ED1638F33C4FEFF7879DF32E7C9C0828A8D6B24C603DE3",
            "Signature": null,
            "TipoHuella": 1,
            "NumRegistroAcuerdoFacturacion": null,
            "IdAcuerdoSistemaInformatico": null,
            "FechaHoraHusoGenRegistro": "2025-03-21T11:23:52+01:00",
            "IDEmisorFacturaAnterior": "A39200019",
            "NumSerieFacturaAnterior": "CHAT-50/0240",
            "FechaExpedicionFacturaAnterior": "2025-01-20",
            "HuellaAnterior": "4B949D333C450F7B2D4C2898065182B7B1F8813AC85EC702B0850D2D251DBA03",
            "xml_aeat": "xml_aeat",
            "xml_signed": null,
            "xml_aeat_response": null,
            "estado_aeat": "No Registrado",
            "estado_registro_aeat": null,
            "codigo_error_aeat": null,
            "descripcion_error_aeat": null,
            "envios_aeat_id": null,
            "envios_aeat_lineas_id": null
        },
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "code": 404,
    "message": "No se encontró la factura especificada.",
    "data": null
}
 

Request   

GET api/alta-registro-facturacion/{id}

Headers

Authorization      

Example: Bearer 6aeEdP8hf1kv6Db3g4VZ5ac

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID de la factura que se desea obtener. Example: 1

Envíos

Verifactu

Endpoints especificos para consultar el estado de los envíos a Verifactu. En verifactu se pueden enviar facturas agrupadas en un mismo envío por este motivo, si quieres consultar facturas en especifico tienes que mirar las lineas de envío.

Listado de envíos Verifactu

requires authentication

Muestra un listado paginado de todos los envíos a Verifactu.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/envios-aeat';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer d6vD8EZ5bak3cVh1Pg64fea',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/envios-aeat"
);

const headers = {
    "Authorization": "Bearer d6vD8EZ5bak3cVh1Pg64fea",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/envios-aeat" \
    --header "Authorization: Bearer d6vD8EZ5bak3cVh1Pg64fea" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/envios-aeat'
headers = {
  'Authorization': 'Bearer d6vD8EZ5bak3cVh1Pg64fea',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
  "success": true,
  "code": 200,
  "message": "Envíos Verifactu listed successfully",
  "data": {
     "items": [
         {
             "id": 1,
             "IDEmisor": "1234567890",
             "endpoint": "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP",
             "xml_envio": "</xml>",
             "xml_respuesta": "</xml>",
             "csv": "A-7KC3XUSXLCNXLP",
             "estado_verifactu": "Correcto",
             "codigo_error_verifactu": "",
             "descripcion_error_verifactu": "",
             "fecha_hora_envio": "2024-12-17 11:21:22",
             "fecha_hora_respuesta": "2024-12-17 11:21:22",
             "created_at": "2024-12-17T10:21:22.000000Z",
             "updated_at": "2024-12-17T10:21:22.000000Z",
             "deleted_at": null
         },
     ],
     "count": 1
 },
 "pagination": {
     "total": 1,
     "perPage": 1,
     "currentPage": 1,
     "lastPage": 1
 }
}
 

Request   

GET api/envios-aeat

Headers

Authorization      

Example: Bearer d6vD8EZ5bak3cVh1Pg64fea

Content-Type      

Example: application/json

Obtener un envío Verifactu

requires authentication

Muestra un envío Verifactu específico. Se filtra por el ID del envío.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/envios-aeat/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer c6E35fag6khe4Zb8a1dVPDv',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/envios-aeat/1"
);

const headers = {
    "Authorization": "Bearer c6E35fag6khe4Zb8a1dVPDv",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/envios-aeat/1" \
    --header "Authorization: Bearer c6E35fag6khe4Zb8a1dVPDv" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/envios-aeat/1'
headers = {
  'Authorization': 'Bearer c6E35fag6khe4Zb8a1dVPDv',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Envío Verifactu obtained successfully",
    "data": {
        "items": {
            "id": 1,
            "IDEmisor": "1234567890",
            "endpoint": "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP",
            "xml_envio": "</xml>",
            "xml_respuesta": "</xml>",
            "csv": "A-7KC3XUSXLCNXLP",
            "estado_verifactu": "Correcto",
            "codigo_error_verifactu": "",
            "descripcion_error_verifactu": "",
            "fecha_hora_envio": "2024-12-17 11:21:22",
            "fecha_hora_respuesta": "2024-12-17 11:21:22",
            "created_at": "2024-12-17T10:21:22.000000Z",
            "updated_at": "2024-12-17T10:21:22.000000Z",
            "deleted_at": null,
            "lineas": []
        }
    }
}
 

Example response (403):


{
    "success": false,
    "message": "No tienes acceso a este envío Verifactu.",
    "error": 403,
    "code": 403
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el envío AEAT especificado.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/envios-aeat/{id}

Headers

Authorization      

Example: Bearer c6E35fag6khe4Zb8a1dVPDv

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del envío Verifactu que se desea obtener. Example: 1

Obtener una línea de envío Verifactu

requires authentication

Muestra una línea específica de un envío Verifactu.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/envios-aeat/linea/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 3ZkahPD5aE6vecb41d8f6gV',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/envios-aeat/linea/1"
);

const headers = {
    "Authorization": "Bearer 3ZkahPD5aE6vecb41d8f6gV",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/envios-aeat/linea/1" \
    --header "Authorization: Bearer 3ZkahPD5aE6vecb41d8f6gV" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/envios-aeat/linea/1'
headers = {
  'Authorization': 'Bearer 3ZkahPD5aE6vecb41d8f6gV',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
 "success": true,
 "code": 200,
 "message": "Línea Envío Verifactu obtained successfully",
 "data": {
     "items": {
         "id": 1,
         "envios_verifactu_id": 1,
         "num_serie_factura": "AX/202412-640",
         "estado_registro": "Incorrecto",
         "codigo_error": "3002",
         "descripcion_error": "No existe el registro de facturación.",
         "id_peticion_duplicado": "",
         "estado_registro_duplicado": "",
         "created_at": "2025-02-03T16:30:02.000000Z",
         "updated_at": null,
         "deleted_at": null,
         "envios_verifactu": {
             "id": 1,
             ...,
         }
     }
 }
}
 

Example response (403):


{
    "success": false,
    "message": "No tienes acceso a esta linea Verifactu.",
    "error": 403,
    "code": 403
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró la línea Verifactu especificada.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/envios-aeat/linea/{linea_id}

Headers

Authorization      

Example: Bearer 3ZkahPD5aE6vecb41d8f6gV

Content-Type      

Example: application/json

URL Parameters

linea_id   integer   

El ID de la línea Verifactu que se desea obtener. Example: 1

Listas

Verifactu

Listas especificas de Verifactu.

Listar listas

requires authentication

Muestra un listado con los nombres de todas las listas de Verifactu.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer hafv4DZg5Ee38bkP166cadV',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas"
);

const headers = {
    "Authorization": "Bearer hafv4DZg5Ee38bkP166cadV",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas" \
    --header "Authorization: Bearer hafv4DZg5Ee38bkP166cadV" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas'
headers = {
  'Authorization': 'Bearer hafv4DZg5Ee38bkP166cadV',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Nombres de listas listed successfully",
    "data": {
        "items": [
            "l1",
            "l10",
            "l12",
            "l14",
            "l15",
            "l16",
            "l17",
            "l1e",
            "l2",
            "l2e",
            "l3",
            "l3e",
            "l4",
            "l4e",
            "l5",
            "l6",
            "l7",
            "l8a",
            "l8b",
            "l9"
        ],
        "count": 20
    },
    "pagination": {
        "total": 1,
        "perPage": 1,
        "currentPage": 1,
        "lastPage": 1
    }
}
 

Request   

GET api/listas

Headers

Authorization      

Example: Bearer hafv4DZg5Ee38bkP166cadV

Content-Type      

Example: application/json

Obtener una lista

requires authentication

Muestra una lista verifactu en especifico filtrando por el nombre de la lista. Se pueden ver los valores y su descripción.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas/l1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer e836bZvdafP65cD4ghVkaE1',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas/l1"
);

const headers = {
    "Authorization": "Bearer e836bZvdafP65cD4ghVkaE1",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas/l1" \
    --header "Authorization: Bearer e836bZvdafP65cD4ghVkaE1" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas/l1'
headers = {
  'Authorization': 'Bearer e836bZvdafP65cD4ghVkaE1',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Lista obtenida correctamente",
    "data": {
        "items": [
            {
                "id": 1,
                "valor": "01",
                "descripcion": "Impuesto sobre el Valor Añadido (IVA)"
            },
            {
                "id": 2,
                "valor": "02",
                "descripcion": "Impuesto sobre la Producción, los Servicios y la Importación (IPSI) de Ceuta y Melilla"
            },
            {
                "id": 3,
                "valor": "03",
                "descripcion": "Impuesto General Indirecto Canario (IGIC)"
            },
            {
                "id": 4,
                "valor": "05",
                "descripcion": "Otros"
            }
        ],
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "message": "La lista solicitada no existe",
    "error": 404,
    "code": 404
}
 

Request   

GET api/listas/{lista}

Headers

Authorization      

Example: Bearer e836bZvdafP65cD4ghVkaE1

Content-Type      

Example: application/json

URL Parameters

lista   string   

El nombre de la lista que se desea obtener. Example: l1

Obtener un valor de una lista

requires authentication

Muestra un valor de una lista verifactu en especifico filtrando por el nombre de la lista y el valor.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas/l1/01';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer DZb8g3a14fakh5EVe6c6dvP',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas/l1/01"
);

const headers = {
    "Authorization": "Bearer DZb8g3a14fakh5EVe6c6dvP",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas/l1/01" \
    --header "Authorization: Bearer DZb8g3a14fakh5EVe6c6dvP" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas/l1/01'
headers = {
  'Authorization': 'Bearer DZb8g3a14fakh5EVe6c6dvP',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Lista obtenida correctamente",
    "data": {
        "items": {
            "id": 1,
            "valor": "01",
            "descripcion": "Impuesto sobre el Valor Añadido (IVA)"
        },
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "message": "El registro solicitado no existe en la lista",
    "error": 404,
    "code": 404
}
 

Example response (404):


{
    "success": false,
    "message": "La lista solicitada no existe",
    "error": 404,
    "code": 404
}
 

Request   

GET api/listas/{lista}/{valor}

Headers

Authorization      

Example: Bearer DZb8g3a14fakh5EVe6c6dvP

Content-Type      

Example: application/json

URL Parameters

lista   string   

El nombre de la lista donde se encuentra el valor. Example: l1

valor   string   

El valor de la linea de la lista que se desea obtener. Example: 01

Tbai

Listas especificas de Tbai.

Listar listas

requires authentication

Muestra un listado con los nombres de todas las listas de Tbai.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas-tbai';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer a53Zcd6ED486b1hekfVvaPg',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas-tbai"
);

const headers = {
    "Authorization": "Bearer a53Zcd6ED486b1hekfVvaPg",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas-tbai" \
    --header "Authorization: Bearer a53Zcd6ED486b1hekfVvaPg" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas-tbai'
headers = {
  'Authorization': 'Bearer a53Zcd6ED486b1hekfVvaPg',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Nombres de las listas de Tbai listed successfully",
    "data": {
        "items": [
            "l0",
            "l10",
            "l11",
            "l12",
            "l13",
            "l2",
            "l3",
            "l4",
            "l5",
            "l6",
            "l7",
            "l8",
            "l9"
        ],
        "count": 13
    },
    "pagination": {
        "total": 1,
        "perPage": 1,
        "currentPage": 1,
        "lastPage": 1
    }
}
 

Request   

GET api/listas-tbai

Headers

Authorization      

Example: Bearer a53Zcd6ED486b1hekfVvaPg

Content-Type      

Example: application/json

Obtener una lista

requires authentication

Muestra una lista de Tbai en especifico filtrando por el nombre de la lista. Se pueden ver los valores y su descripción.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas-tbai/l0';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer Z5VEfkvP13gbcda6h8e4D6a',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas-tbai/l0"
);

const headers = {
    "Authorization": "Bearer Z5VEfkvP13gbcda6h8e4D6a",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas-tbai/l0" \
    --header "Authorization: Bearer Z5VEfkvP13gbcda6h8e4D6a" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas-tbai/l0'
headers = {
  'Authorization': 'Bearer Z5VEfkvP13gbcda6h8e4D6a',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Lista de Tbai obtained successfully",
    "data": {
        "items": [
            {
                "id": 1,
                "valor": "1.2",
                "descripcion": "Versión actual del esquema utilizado"
            }
        ],
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "message": "La lista solicitada no existe",
    "error": 404,
    "code": 404
}
 

Request   

GET api/listas-tbai/{lista}

Headers

Authorization      

Example: Bearer Z5VEfkvP13gbcda6h8e4D6a

Content-Type      

Example: application/json

URL Parameters

lista   string   

El nombre de la lista que se desea obtener. Example: l0

Obtener un valor de una lista

requires authentication

Muestra un valor de una lista de Tbai en especifico filtrando por el nombre de la lista y el valor.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/listas-tbai/l0/1.2';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer PakZbae5618vfE4h36cdVDg',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/listas-tbai/l0/1.2"
);

const headers = {
    "Authorization": "Bearer PakZbae5618vfE4h36cdVDg",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/listas-tbai/l0/1.2" \
    --header "Authorization: Bearer PakZbae5618vfE4h36cdVDg" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/listas-tbai/l0/1.2'
headers = {
  'Authorization': 'Bearer PakZbae5618vfE4h36cdVDg',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Valor de la lista de Tbai obtained successfully",
    "data": {
        "items": {
            "id": 1,
            "valor": "1.2",
            "descripcion": "Versión actual del esquema utilizado"
        },
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "message": "El registro solicitado no existe en la lista",
    "error": 404,
    "code": 404
}
 

Example response (404):


{
    "success": false,
    "message": "La lista solicitada no existe",
    "error": 404,
    "code": 404
}
 

Request   

GET api/listas-tbai/{lista}/{valor}

Headers

Authorization      

Example: Bearer PakZbae5618vfE4h36cdVDg

Content-Type      

Example: application/json

URL Parameters

lista   string   

El nombre de la lista donde se encuentra el valor. Example: l0

valor   string   

El valor de la linea de la lista que se desea obtener. Example: 1.2

Webhook

Listado de Webhooks

requires authentication

Muestra un listado con todos los webhooks vinculados al usuario actual.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/webhook';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer DPb6ae1g6chvZ34aE85dkVf',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/webhook"
);

const headers = {
    "Authorization": "Bearer DPb6ae1g6chvZ34aE85dkVf",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/webhook" \
    --header "Authorization: Bearer DPb6ae1g6chvZ34aE85dkVf" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/webhook'
headers = {
  'Authorization': 'Bearer DPb6ae1g6chvZ34aE85dkVf',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
 "success": true,
 "code": 200,
 "message": "Webhooks listed successfully",
 "data": {
     "items": [
         {
             "id": 1,
             "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
             "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
             "is_active": true,
             "retry_count": 0,
             "last_triggered_at": null,
             "headers": null,
             "http_method": "POST",
             "description": null,
             "tag": "emisor_1",
             "created_at": "2024-12-16T11:31:27.000000Z",
             "updated_at": "2024-12-16T11:31:27.000000Z",
             "deleted_at": null
         }
     ],
     "count": 1
 },
 "pagination": {
     "total": 1,
     "perPage": 10,
     "currentPage": 1,
     "lastPage": 1
 }
 }
}
 

Request   

GET api/webhook

Headers

Authorization      

Example: Bearer DPb6ae1g6chvZ34aE85dkVf

Content-Type      

Example: application/json

Obtener un Webhook

requires authentication

Muestra un webhook específico. Se filtra por el ID del webhook.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/webhook/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 6ef8vab4EVPdg36DaZk1h5c',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/webhook/1"
);

const headers = {
    "Authorization": "Bearer 6ef8vab4EVPdg36DaZk1h5c",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/webhook/1" \
    --header "Authorization: Bearer 6ef8vab4EVPdg36DaZk1h5c" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/webhook/1'
headers = {
  'Authorization': 'Bearer 6ef8vab4EVPdg36DaZk1h5c',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "Webhook obtained successfully",
    "data": {
        "items": {
            "id": 1,
            "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
            "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
            "is_active": true,
            "retry_count": 0,
            "last_triggered_at": null,
            "headers": null,
            "http_method": "POST",
            "description": null,
            "tag": "emisor_1",
            "created_at": "2024-12-16T11:31:27.000000Z",
            "updated_at": "2024-12-16T11:31:27.000000Z",
            "deleted_at": null
        },
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el webhook especificado.",
    "error": 404,
    "code": 404
}
 

Request   

GET api/webhook/{id}

Headers

Authorization      

Example: Bearer 6ef8vab4EVPdg36DaZk1h5c

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del webhook que se desea obtener. Example: 1

Crear un webhook

requires authentication

Crea un nuevo webhook vinculado al usuario actual.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/webhook';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 514fk63bdgZPaeacVD6v8Eh',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
    "http_method": "POST",
    "headers": {
        "x-api-key": "test"
    },
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_1"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/webhook"
);

const headers = {
    "Authorization": "Bearer 514fk63bdgZPaeacVD6v8Eh",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/webhook.site\/766f4435-f4f9-414b-b26f-47dbd10339ce\/{id}",
    "http_method": "POST",
    "headers": {
        "x-api-key": "test"
    },
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_1"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request POST \
    "https://app.verifactuapi.es/api/webhook" \
    --header "Authorization: Bearer 514fk63bdgZPaeacVD6v8Eh" \
    --header "Content-Type: application/json" \
    --data "{
    \"url\": \"https:\\/\\/webhook.site\\/766f4435-f4f9-414b-b26f-47dbd10339ce\\/{id}\",
    \"http_method\": \"POST\",
    \"headers\": {
        \"x-api-key\": \"test\"
    },
    \"secret_key\": \"m7&A,$\'(6qYjg+BZ#su_3!\",
    \"tag\": \"emisor_1\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/webhook'
payload = {
    "url": "https:\/\/webhook.site\/766f4435-f4f9-414b-b26f-47dbd10339ce\/{id}",
    "http_method": "POST",
    "headers": {
        "x-api-key": "test"
    },
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_1"
}
headers = {
  'Authorization': 'Bearer 514fk63bdgZPaeacVD6v8Eh',
  'Content-Type': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "success": true,
    "message": "Webhook creado correctamente",
    "code": 201,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 1,
                "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
                "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
                "is_active": null,
                "retry_count": null,
                "last_triggered_at": null,
                "headers": {
                    "x-api-key": "test"
                },
                "http_method": "POST",
                "description": null,
                "tag": "emisor_1"
            }
        ]
    }
}
 

Example response (400):


{
    "success": false,
    "message": "Los campos url y secret_key son obligatorios.",
    "error": 400,
    "code": 400
}
 

Example response (400):


{
    "success": false,
    "message": "La URL del webhook es obligatoria.",
    "error": 400,
    "code": 400
}
 

Request   

POST api/webhook

Headers

Authorization      

Example: Bearer 514fk63bdgZPaeacVD6v8Eh

Content-Type      

Example: application/json

Body Parameters

url   string   

La URL del webhook. Example: https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}

http_method   string  optional  

El método HTTP del webhook. Example: POST

headers   object  optional  

optional Los headers del webhook.

secret_key   string   

La clave secreta del webhook. Example: m7&A,$'(6qYjg+BZ#su_3!

tag   string  optional  

optional La etiqueta del webhook. Example: emisor_1

Actualizar un webhook

requires authentication

Actualiza un webhook existente.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/webhook/placeat';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer fbD836e1cEd6Pv4gka5aVZh',
            'Content-Type' => 'application/json',
        ],
        'json' => {
    "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
    "http_method": "POST",
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_2"
},
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/webhook/placeat"
);

const headers = {
    "Authorization": "Bearer fbD836e1cEd6Pv4gka5aVZh",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "https:\/\/webhook.site\/766f4435-f4f9-414b-b26f-47dbd10339ce\/{id}",
    "http_method": "POST",
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_2"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
curl --request PUT \
    "https://app.verifactuapi.es/api/webhook/placeat" \
    --header "Authorization: Bearer fbD836e1cEd6Pv4gka5aVZh" \
    --header "Content-Type: application/json" \
    --data "{
    \"url\": \"https:\\/\\/webhook.site\\/766f4435-f4f9-414b-b26f-47dbd10339ce\\/{id}\",
    \"http_method\": \"POST\",
    \"secret_key\": \"m7&A,$\'(6qYjg+BZ#su_3!\",
    \"tag\": \"emisor_2\"
}"
import requests
import json

url = 'https://app.verifactuapi.es/api/webhook/placeat'
payload = {
    "url": "https:\/\/webhook.site\/766f4435-f4f9-414b-b26f-47dbd10339ce\/{id}",
    "http_method": "POST",
    "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
    "tag": "emisor_2"
}
headers = {
  'Authorization': 'Bearer fbD836e1cEd6Pv4gka5aVZh',
  'Content-Type': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "success": true,
    "message": "Webhook updated successfully",
    "code": 200,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 1,
                "url": "https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}",
                "secret_key": "m7&A,$'(6qYjg+BZ#su_3!",
                "is_active": true,
                "retry_count": 0,
                "last_triggered_at": null,
                "headers": null,
                "http_method": "POST",
                "description": null,
                "tag": "emisor_2",
                "created_at": "2024-12-16T11:31:27.000000Z",
                "updated_at": "2024-12-16T11:31:27.000000Z",
                "deleted_at": null
            }
        ]
    }
}
 

Example response (404):


{
    "success": false,
    "message": "No se encontró el webhook especificado.",
    "error": 404,
    "code": 404
}
 

Request   

PUT api/webhook/{webhook}

Headers

Authorization      

Example: Bearer fbD836e1cEd6Pv4gka5aVZh

Content-Type      

Example: application/json

URL Parameters

webhook   string   

The webhook. Example: placeat

id   integer   

El ID del webhook que se desea actualizar. Example: 1

Body Parameters

url   string   

La URL del webhook. Example: https://webhook.site/766f4435-f4f9-414b-b26f-47dbd10339ce/{id}

http_method   string  optional  

El método HTTP del webhook. Example: POST

secret_key   string   

La clave secreta del webhook. Example: m7&A,$'(6qYjg+BZ#su_3!

tag   string  optional  

optional La etiqueta del webhook. Example: emisor_2

Status

Server Status

Devuelve el estado del servidor.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/status" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/status'
headers = {
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "status": "UP",
    "message": "Server is running normally",
    "timestamp": "2025-01-16 12:00:00",
    "code": "200"
}
 

Example response (500):


{
    "success": false,
    "status": "DOWN",
    "message": "Server is down",
    "code": 500
}
 

Request   

GET api/status

Headers

Content-Type      

Example: application/json

Endpoints

PATCH api/emisor/produccion/{id}

requires authentication

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/emisor/produccion/eos';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer V5866ka1Pga4cvhZfbDd3eE',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/emisor/produccion/eos"
);

const headers = {
    "Authorization": "Bearer V5866ka1Pga4cvhZfbDd3eE",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
curl --request PATCH \
    "https://app.verifactuapi.es/api/emisor/produccion/eos" \
    --header "Authorization: Bearer V5866ka1Pga4cvhZfbDd3eE" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/emisor/produccion/eos'
headers = {
  'Authorization': 'Bearer V5866ka1Pga4cvhZfbDd3eE',
  'Content-Type': 'application/json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Request   

PATCH api/emisor/produccion/{id}

Headers

Authorization      

Example: Bearer V5866ka1Pga4cvhZfbDd3eE

Content-Type      

Example: application/json

URL Parameters

id   string   

The ID of the produccion. Example: eos

RegistroEventos

Obtener listado de eventos

requires authentication

Muestra una lista con todos los eventos del usuario.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/registro-eventos';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 1hPvae456Vk6ZbEafcgDd38',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/registro-eventos"
);

const headers = {
    "Authorization": "Bearer 1hPvae456Vk6ZbEafcgDd38",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/registro-eventos" \
    --header "Authorization: Bearer 1hPvae456Vk6ZbEafcgDd38" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/registro-eventos'
headers = {
  'Authorization': 'Bearer 1hPvae456Vk6ZbEafcgDd38',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "RegistroEventos listed successfully",
    "data": {
        "items": [
            {
                "id": 1,
                "previous_id": null,
                "IDVersion": 1,
                "SistemaInformatico_id": 1,
                "ObEmisNombreRazon": "EMPRESA TEST",
                "ObEmisNIF": "A39200019",
                "EmitidaTercODest": null,
                "TercODestNombreRazon": null,
                "TercODestNIF": null,
                "TercODestIDOtroCodigoPais": null,
                "TercODestIDOtroType": null,
                "TercODestIDOtroID": null,
                "FechaHoraHusoGenEvento": "2025-04-24T15:40:10+02:00",
                "TipoEvento": 1,
                "OtrosDatosEvento": null,
                "TipoEventoAnterior": null,
                "FechaHoraHusoGenEventoAnterior": null,
                "HuellaEventoAnterior": null,
                "TipoHuella": 1,
                "HuellaEvento": "38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653",
                "xml": "<RegistroEventos xmlns:sf=\"http://www.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd\">\n   <IDVersion>1.0</IDVersion>\n   <Evento>\n       <sf:SistemaInformatico>\n           <sf:NombreRazon>NEMON INVOICE TO CASH, SL</sf:NombreRazon>\n           <sf:NIF>B70912613</sf:NIF>\n           <sf:NombreSistemaInformatico>NEMON INVOCASH VERIFACTU API</sf:NombreSistemaInformatico>\n           <sf:IdSistemaInformatico>01</sf:IdSistemaInformatico>\n           <sf:Version>1.0</sf:Version>\n           <sf:NumeroInstalacion>20250424154010_357522</sf:NumeroInstalacion>\n           <sf:TipoUsoPosibleSoloVerifactu>N</sf:TipoUsoPosibleSoloVerifactu>\n           <sf:TipoUsoPosibleMultiOT>S</sf:TipoUsoPosibleMultiOT>\n           <sf:IndicadorMultiplesOT>S</sf:IndicadorMultiplesOT>\n       </sf:SistemaInformatico>\n       <ObligadoEmisor>\n           <NombreRazon>EMPRESA TEST</NombreRazon>\n           <NIF>47859447N</NIF>\n       </ObligadoEmisor>\n       <FechaHoraHusoGenEvento>2025-04-24T15:40:10+02:00</FechaHoraHusoGenEvento>\n       <TipoEvento>01</TipoEvento>\n       <OtrosDatosEvento></OtrosDatosEvento>\n       <Encadenamiento>\n           <PrimerEvento>S</PrimerEvento>\n       </Encadenamiento>\n       <TipoHuella>01</TipoHuella>\n       <HuellaEvento>38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653</HuellaEvento>\n   </Evento>\n</RegistroEventos>",
                "xml_signed": "<?xml version=\"1.0\"?>\n<RegistroEventos xmlns:sf=\"http://www.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd\">\n  <IDVersion>1.0</IDVersion>\n  <Evento>\n    <sf:SistemaInformatico>\n      <sf:NombreRazon>NEMON INVOICE TO CASH, SL</sf:NombreRazon>\n      <sf:NIF>B70912613</sf:NIF>\n      <sf:NombreSistemaInformatico>NEMON INVOCASH VERIFACTU API</sf:NombreSistemaInformatico>\n      <sf:IdSistemaInformatico>01</sf:IdSistemaInformatico>\n      <sf:Version>1.0</sf:Version>\n      <sf:NumeroInstalacion>20250424154010_357522</sf:NumeroInstalacion>\n      <sf:TipoUsoPosibleSoloVerifactu>N</sf:TipoUsoPosibleSoloVerifactu>\n      <sf:TipoUsoPosibleMultiOT>S</sf:TipoUsoPosibleMultiOT>\n      <sf:IndicadorMultiplesOT>S</sf:IndicadorMultiplesOT>\n    </sf:SistemaInformatico>\n    <ObligadoEmisor>\n      <NombreRazon>EMPRESA TEST</NombreRazon>\n      <NIF>47859447N</NIF>\n    </ObligadoEmisor>\n    <FechaHoraHusoGenEvento>2025-04-24T15:40:10+02:00</FechaHoraHusoGenEvento>\n    <TipoEvento>01</TipoEvento>\n    <OtrosDatosEvento/>\n    <Encadenamiento>\n      <PrimerEvento>S</PrimerEvento>\n    </Encadenamiento>\n    <TipoHuella>01</TipoHuella>\n    <HuellaEvento>38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653</HuellaEvento>\n    <ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n      <ds:SignedInfo>\n        <ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\"/>\n        <ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/>\n        <ds:Reference URI=\"\">\n          <ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/>\n          <ds:DigestValue>+T0nm0R3hy4/EwnzXTPN5pdUjSEH6GP+dgjFsrnqMJw=</ds:DigestValue>\n        </ds:Reference>\n      </ds:SignedInfo>\n      <ds:SignatureValue>TPLqf09G0z3OMBc8p/i206wA57JSASrr0k3DxiTd9dJ2B4LAlLq7s+56CM5LIoNVWCGNZt3rA3cb5ar1pSTut/uas2JcrGiZ6C7lC5jR1RRPWEtn9zGtADTmWeZOnlBqKQ3UUYwIH37B0BUcZN5rzQ3c1OJxZYYl1tYmR03yOj3a6yZKvTz6lYDMYGFkTJ1AHoYiLCh4UNgCW8E7jQIxjuxROvwc+HMl0kPU5W1SdoMuBU/wVfASA1DJxQIZAhEcAIcQK2khUu4/6ujvdpnW8Po51U7kmfZrQo42fxYUWYT6Y8Z8Ul8JPZKk8TEonl1HTv+U1pLHof5VYDFKn4vaHw==</ds:SignatureValue>\n      <ds:KeyInfo>\n        <ds:X509Data>\n          <ds:X509Certificate>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</ds:X509Certificate>\n        </ds:X509Data>\n      </ds:KeyInfo>\n    </ds:Signature>\n  </Evento>\n</RegistroEventos>\n",
                "Signature": "TPLqf09G0z3OMBc8p/i206wA57JSASrr0k3DxiTd9dJ2B4LAlLq7s+56CM5LIoNVWCGNZt3rA3cb5ar1pSTut/uas2JcrGiZ6C7lC5jR1RRPWEtn9zGtADTmWeZOnlBqKQ3UUYwIH37B0BUcZN5rzQ3c1OJxZYYl1tYmR03yOj3a6yZKvTz6lYDMYGFkTJ1AHoYiLCh4UNgCW8E7jQIxjuxROvwc+HMl0kPU5W1SdoMuBU/wVfASA1DJxQIZAhEcAIcQK2khUu4/6ujvdpnW8Po51U7kmfZrQo42fxYUWYT6Y8Z8Ul8JPZKk8TEonl1HTv+U1pLHof5VYDFKn4vaHw==",
                "Signature2": "TPLqf09G0z3OMBc8p/i206wA57JSASrr0k3DxiTd9dJ2B4LAlLq7s+56CM5LIoNVWCGNZt3rA3cb5ar1pSTut/uas2JcrGiZ6C7lC5jR1RRPWEtn9zGtADTmWeZOnlBqKQ3UUYwIH37B0BUcZN5rzQ3c1OJxZYYl1tYmR03yOj3a6yZKvTz6lYDMYGFkTJ1AHoYiLCh4UNgCW8E7jQIxjuxROvwc+HMl0kPU5W1SdoMuBU/wVfASA1DJxQIZAhEcAIcQK2khUu4/6ujvdpnW8Po51U7kmfZrQo42fxYUWYT6Y8Z8Ul8JPZKk8TEonl1HTv+U1pLHof5VYDFKn4vaHw==",
                "created_at": "2025-04-24T13:40:10.000000Z",
                "updated_at": "2025-04-24T13:40:10.000000Z",
                "deleted_at": null
            }
        ],
        "count": 6
    },
    "pagination": {
        "total": 6,
        "perPage": 10,
        "currentPage": 1,
        "lastPage": 1
    }
}
 

Request   

GET api/registro-eventos

Headers

Authorization      

Example: Bearer 1hPvae456Vk6ZbEafcgDd38

Content-Type      

Example: application/json

Obtener un evento por id

requires authentication

Muestra los datos de un evento filtrando por el ID.

Example request:
$client = new \GuzzleHttp\Client();
$url = 'https://app.verifactuapi.es/api/registro-eventos/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer 8cbD6EZ4d1v6f3aVkga5ePh',
            'Content-Type' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://app.verifactuapi.es/api/registro-eventos/1"
);

const headers = {
    "Authorization": "Bearer 8cbD6EZ4d1v6f3aVkga5ePh",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
curl --request GET \
    --get "https://app.verifactuapi.es/api/registro-eventos/1" \
    --header "Authorization: Bearer 8cbD6EZ4d1v6f3aVkga5ePh" \
    --header "Content-Type: application/json"
import requests
import json

url = 'https://app.verifactuapi.es/api/registro-eventos/1'
headers = {
  'Authorization': 'Bearer 8cbD6EZ4d1v6f3aVkga5ePh',
  'Content-Type': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "success": true,
    "code": 200,
    "message": "RegistroEventos obtained successfully",
    "data": {
        "items": {
            "id": 2,
            "previous_id": 1,
            "IDVersion": 1,
            "SistemaInformatico_id": 2,
            "ObEmisNombreRazon": "EMPRESA TEST",
            "ObEmisNIF": "A39200019",
            "EmitidaTercODest": null,
            "TercODestNombreRazon": null,
            "TercODestNIF": null,
            "TercODestIDOtroCodigoPais": null,
            "TercODestIDOtroType": null,
            "TercODestIDOtroID": null,
            "FechaHoraHusoGenEvento": "2025-04-24T15:42:06+02:00",
            "TipoEvento": 3,
            "OtrosDatosEvento": null,
            "TipoEventoAnterior": 1,
            "FechaHoraHusoGenEventoAnterior": "2025-04-24T15:40:10+02:00",
            "HuellaEventoAnterior": "38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653",
            "TipoHuella": 1,
            "HuellaEvento": "FE6A231664CF92DE7BBB666DE5D48E33565769654A785B542DE99CD1FA131E95",
            "xml": "<RegistroEventos xmlns:sf=\"http://www.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd\">\n   <IDVersion>1.0</IDVersion>\n   <Evento>\n       <sf:SistemaInformatico>\n           <sf:NombreRazon>NEMON INVOICE TO CASH, SL</sf:NombreRazon>\n           <sf:NIF>B70912613</sf:NIF>\n           <sf:NombreSistemaInformatico>NEMON INVOCASH VERIFACTU API</sf:NombreSistemaInformatico>\n           <sf:IdSistemaInformatico>01</sf:IdSistemaInformatico>\n           <sf:Version>1.0</sf:Version>\n           <sf:NumeroInstalacion>20250424154010_357522</sf:NumeroInstalacion>\n           <sf:TipoUsoPosibleSoloVerifactu>N</sf:TipoUsoPosibleSoloVerifactu>\n           <sf:TipoUsoPosibleMultiOT>S</sf:TipoUsoPosibleMultiOT>\n           <sf:IndicadorMultiplesOT>S</sf:IndicadorMultiplesOT>\n       </sf:SistemaInformatico>\n       <ObligadoEmisor>\n           <NombreRazon>EMPRESA TEST</NombreRazon>\n           <NIF>47859447N</NIF>\n       </ObligadoEmisor>\n       <FechaHoraHusoGenEvento>2025-04-24T15:42:06+02:00</FechaHoraHusoGenEvento>\n       <TipoEvento>03</TipoEvento>\n       <DatopsPropiosEvento>\n            <LanzamientoProcesoDeteccionAnomaliasRegFacturacion>\n               <RealizadoProcesoSobreIntegridadHuellasRegFacturacion>N</RealizadoProcesoSobreIntegridadHuellasRegFacturacion>\n               <RealizadoProcesoSobreIntegridadFirmasRegFacturacion>N</RealizadoProcesoSobreIntegridadFirmasRegFacturacion>\n               <RealizadoProcesoSobreTrazabilidadCadenaRegFacturacion>S</RealizadoProcesoSobreTrazabilidadCadenaRegFacturacion>\n               <NumeroDeRegistrosFacturacionProcesadosSobreTrazabilidadCadena>1</NumeroDeRegistrosFacturacionProcesadosSobreTrazabilidadCadena>\n               <RealizadoProcesoSobreTrazabilidadFechasRegFacturacion>N</RealizadoProcesoSobreTrazabilidadFechasRegFacturacion>\n           </LanzamientoProcesoDeteccionAnomaliasRegFacturacion>\n       </DatopsPropiosEvento>\n       <OtrosDatosEvento></OtrosDatosEvento>\n       <Encadenamiento>\n           <EventoAnterior>\n               <TipoEvento>01</TipoEvento>\n               <FechaHoraHusoGenEvento>2025-04-24T15:40:10+02:00</FechaHoraHusoGenEvento>\n               <HuellaEvento>38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653</HuellaEvento>\n           </EventoAnterior>\n       </Encadenamiento>\n       <TipoHuella>01</TipoHuella>\n       <HuellaEvento>FE6A231664CF92DE7BBB666DE5D48E33565769654A785B542DE99CD1FA131E95</HuellaEvento>\n   </Evento>\n</RegistroEventos>",
            "xml_signed": "<?xml version=\"1.0\"?>\n<RegistroEventos xmlns:sf=\"http://www.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd\">\n  <IDVersion>1.0</IDVersion>\n  <Evento>\n    <sf:SistemaInformatico>\n      <sf:NombreRazon>NEMON INVOICE TO CASH, SL</sf:NombreRazon>\n      <sf:NIF>B70912613</sf:NIF>\n      <sf:NombreSistemaInformatico>NEMON INVOCASH VERIFACTU API</sf:NombreSistemaInformatico>\n      <sf:IdSistemaInformatico>01</sf:IdSistemaInformatico>\n      <sf:Version>1.0</sf:Version>\n      <sf:NumeroInstalacion>20250424154010_357522</sf:NumeroInstalacion>\n      <sf:TipoUsoPosibleSoloVerifactu>N</sf:TipoUsoPosibleSoloVerifactu>\n      <sf:TipoUsoPosibleMultiOT>S</sf:TipoUsoPosibleMultiOT>\n      <sf:IndicadorMultiplesOT>S</sf:IndicadorMultiplesOT>\n    </sf:SistemaInformatico>\n    <ObligadoEmisor>\n      <NombreRazon>EMPRESA TEST</NombreRazon>\n      <NIF>47859447N</NIF>\n    </ObligadoEmisor>\n    <FechaHoraHusoGenEvento>2025-04-24T15:42:06+02:00</FechaHoraHusoGenEvento>\n    <TipoEvento>03</TipoEvento>\n    <DatopsPropiosEvento>\n      <LanzamientoProcesoDeteccionAnomaliasRegFacturacion>\n        <RealizadoProcesoSobreIntegridadHuellasRegFacturacion>N</RealizadoProcesoSobreIntegridadHuellasRegFacturacion>\n        <RealizadoProcesoSobreIntegridadFirmasRegFacturacion>N</RealizadoProcesoSobreIntegridadFirmasRegFacturacion>\n        <RealizadoProcesoSobreTrazabilidadCadenaRegFacturacion>S</RealizadoProcesoSobreTrazabilidadCadenaRegFacturacion>\n        <NumeroDeRegistrosFacturacionProcesadosSobreTrazabilidadCadena>1</NumeroDeRegistrosFacturacionProcesadosSobreTrazabilidadCadena>\n        <RealizadoProcesoSobreTrazabilidadFechasRegFacturacion>N</RealizadoProcesoSobreTrazabilidadFechasRegFacturacion>\n      </LanzamientoProcesoDeteccionAnomaliasRegFacturacion>\n    </DatopsPropiosEvento>\n    <OtrosDatosEvento/>\n    <Encadenamiento>\n      <EventoAnterior>\n        <TipoEvento>01</TipoEvento>\n        <FechaHoraHusoGenEvento>2025-04-24T15:40:10+02:00</FechaHoraHusoGenEvento>\n        <HuellaEvento>38A81273C421F8BDBA5979BC74EDF9015C6F32AE309949DACC913343DB26B653</HuellaEvento>\n      </EventoAnterior>\n    </Encadenamiento>\n    <TipoHuella>01</TipoHuella>\n    <HuellaEvento>FE6A231664CF92DE7BBB666DE5D48E33565769654A785B542DE99CD1FA131E95</HuellaEvento>\n    <ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n      <ds:SignedInfo>\n        <ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\"/>\n        <ds:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\"/>\n        <ds:Reference URI=\"\">\n          <ds:DigestMethod Algorithm=\"http://www.w3.org/2001/04/xmlenc#sha256\"/>\n          <ds:DigestValue>CePuedoTyzVXJOU5A46R1NyznUPx7wUtnUVEDL9Z3nM=</ds:DigestValue>\n        </ds:Reference>\n      </ds:SignedInfo>\n      <ds:SignatureValue>o0HLX/eLHYOGjXbPnhK4BrolGcv3FbSB1kQokaxTroQNIOzOEDzgakeK4Yo2b31twTQiRCl4SXj2ZgsQJEkFZP/FkKdLBQs3ip+qJXm41K9FCgMx9a7uMa0zgjzpOyLLbQUQj0dfCPgkjvoLWFhNhRn4u3rl6GpTzBbuGlo8Bs5gcF1LG1478xQ8D5AizyJp3I3M4hcIL6QEYJC46VWqlHx9qR0qPrN/+q8arUaSZQNBqlj33/JOwGBU/iv5w3ucBR3/HAeJevX9aZYbUck2qYuCSeJJdx3mzwZmz7+udlCcNAK8wNcu3vaJ+nXq2DOgs1uT9sfQQ3XldlZmo+MskQ==</ds:SignatureValue>\n      <ds:KeyInfo>\n        <ds:X509Data>\n          <ds:X509Certificate>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</ds:X509Certificate>\n        </ds:X509Data>\n      </ds:KeyInfo>\n    </ds:Signature>\n  </Evento>\n</RegistroEventos>\n",
            "Signature": "o0HLX/eLHYOGjXbPnhK4BrolGcv3FbSB1kQokaxTroQNIOzOEDzgakeK4Yo2b31twTQiRCl4SXj2ZgsQJEkFZP/FkKdLBQs3ip+qJXm41K9FCgMx9a7uMa0zgjzpOyLLbQUQj0dfCPgkjvoLWFhNhRn4u3rl6GpTzBbuGlo8Bs5gcF1LG1478xQ8D5AizyJp3I3M4hcIL6QEYJC46VWqlHx9qR0qPrN/+q8arUaSZQNBqlj33/JOwGBU/iv5w3ucBR3/HAeJevX9aZYbUck2qYuCSeJJdx3mzwZmz7+udlCcNAK8wNcu3vaJ+nXq2DOgs1uT9sfQQ3XldlZmo+MskQ==",
            "Signature2": "o0HLX/eLHYOGjXbPnhK4BrolGcv3FbSB1kQokaxTroQNIOzOEDzgakeK4Yo2b31twTQiRCl4SXj2ZgsQJEkFZP/FkKdLBQs3ip+qJXm41K9FCgMx9a7uMa0zgjzpOyLLbQUQj0dfCPgkjvoLWFhNhRn4u3rl6GpTzBbuGlo8Bs5gcF1LG1478xQ8D5AizyJp3I3M4hcIL6QEYJC46VWqlHx9qR0qPrN/+q8arUaSZQNBqlj33/JOwGBU/iv5w3ucBR3/HAeJevX9aZYbUck2qYuCSeJJdx3mzwZmz7+udlCcNAK8wNcu3vaJ+nXq2DOgs1uT9sfQQ3XldlZmo+MskQ==",
            "created_at": "2025-04-24T13:42:06.000000Z",
            "updated_at": "2025-04-24T13:42:06.000000Z",
            "deleted_at": null,
            "anomalias": {
                "id": 1,
                "registro_eventos_id": 2,
                "ProcesoIntegridadHuellas": 2,
                "NumeroDeProcesadosHuellas": null,
                "ProcesoIntegridadFirmas": 2,
                "NumeroDeProcesadosFirmas": null,
                "ProcesoTrazabilidadCadena": 1,
                "NumeroDeProcesadosCadena": 1,
                "ProcesoTrazabilidadFechas": 2,
                "NumeroDeProcesadosFechas": null,
                "TipoAnomalia": null,
                "OtrosDatosAnomalia": null,
                "IDEmisorFactura": null,
                "NumeroFactura": null,
                "FechaExpedicionFactura": null,
                "TipoEvento": 3,
                "FechaHoraHusoGenEvento": null,
                "HuellaEvento": null,
                "created_at": "2025-04-24T13:42:06.000000Z",
                "updated_at": "2025-04-24T13:42:06.000000Z",
                "deleted_at": null
            },
            "exp_res": null
        },
        "count": 1
    }
}
 

Example response (404):


{
    "success": false,
    "code": 404,
    "message": "No se encontró el evento especificado.",
    "data": null
}
 

Request   

GET api/registro-eventos/{id}

Headers

Authorization      

Example: Bearer 8cbD6EZ4d1v6f3aVkga5ePh

Content-Type      

Example: application/json

URL Parameters

id   integer   

El ID del evento que se desea obtener. Example: 1