Skip to content

Schemas

Common data models used across Kreyo APIs.

Core invoice data structure:

interface InvoiceData {
number: string;
date: string; // ISO 8601
due_date?: string;
currency?: string; // default: "EUR"
seller: Party;
buyer: Party;
lines: InvoiceLine[];
subtotal?: number;
vat_breakdown?: VatEntry[];
vat_total?: number;
total: number;
}

Seller or buyer information:

interface Party {
nif: string; // Spanish tax ID
name: string;
address?: string;
city?: string;
postal_code?: string;
country?: string; // default: "ES"
email?: string;
}

Individual line item:

interface InvoiceLine {
description: string;
quantity: number;
unit_price: number;
total: number;
vat_rate?: number; // e.g., 21 for 21%
}

VAT breakdown entry:

interface VatEntry {
rate: number; // 0, 4, 10, 21
base: number;
amount: number;
}

VeriFactu-specific record data:

interface VeriFactuRecord {
type: 'Alta' | 'Modificacion' | 'Anulacion';
invoice: InvoiceData;
certificate_id: string;
modification_reason?: string;
}

FacturaE generation options:

interface FacturaEOptions {
schema_version?: '3.2.2';
modality?: 'I' | 'L';
invoice_issuer_type?: 'EM' | 'RE' | 'TR';
self_billing?: boolean;
}