1. Go to this page and download the library: Download factuapi/factuapi-php-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
factuapi / factuapi-php-sdk example snippets
use Factuapi\PhpSdk\Factuapi;
$factuapi = new Factuapi('your-api-token');
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceItem;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceTotals;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
use Factuapi\PhpSdk\Dto\Issuer;
use Factuapi\PhpSdk\Dto\Recipients\SpanishRecipient;
$factuapi
->invoices()
->create(
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "101",
),
issueDate: new DateTime("2025-11-14"),
invoiceType: InvoiceType::Invoice,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new SpanishRecipient(
taxNumber: "B87654321",
name: "Client Company SL",
address: "Av. Client 456",
postCode: "08002",
city: "Barcelona",
province: "Barcelona"
),
items: [
new InvoiceItem(
description: "Professional services",
basePrice: 100,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 21,
taxPrice: 21,
amount: 121
)
],
totals: new InvoiceTotals(basePrice: 100, taxPrice: 21, amount: 121),
itemDescription: "Invoice for services"
),
process: ["verifactu"]
);
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
$factuapi
->invoices()
->create(
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "110",
)
issueDate: new DateTime("2025-11-14"),
invoiceType: InvoiceType::Invoice,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new SpanishRecipient(
taxNumber: "B87654321",
name: "Client Company SL",
address: "Av. Client 456",
postCode: "08002",
city: "Barcelona",
province: "Barcelona"
),
items: [
new InvoiceItem(
description: "Office supplies",
basePrice: 150.00,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 21,
taxPrice: 31.50,
// Equivalence surcharge fields
equivalenceSurchargeType: 5.2,
equivalenceSurchargePrice: 7.80,
amount: 189.30
)
],
totals: new InvoiceTotals(
basePrice: 150.00,
taxPrice: 39.30, // Regular tax + equivalence surcharge
amount: 189.30
),
itemDescription: "Invoice with equivalence surcharge"
),
process: ["verifactu"]
);
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceLine;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\ExemptionReason;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
$factuapi
->invoices()
->create(
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "110",
)
issueDate: new DateTime("2025-11-14"),
invoiceType: InvoiceType::Invoice,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new SpanishRecipient(
taxNumber: "B87654321",
name: "Client Company SL",
address: "Av. Client 456",
postCode: "08002",
city: "Barcelona",
province: "Barcelona"
),
items: [
new InvoiceItem(
description: "Item description",
basePrice: 100,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 0,
exemptionReason: ExemptionReason::Article20,
taxPrice: 0,
amount: 100
)
],
totals: new InvoiceTotals(
basePrice: 100,
taxPrice: 0,
amount: 100
),
itemDescription: "Invoice description"
),
process: ["verifactu"]
);
use Factuapi\PhpSdk\Dto\Recipients\OtherRecipient;
use Factuapi\PhpSdk\Dto\Recipients\OtherIdType;
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
$factuapi
->invoices()
->create(
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "116",
),
issueDate: new DateTime("2025-11-21"),
invoiceType: InvoiceType::Invoice,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new OtherRecipient(
countryCode: "DE",
idType: OtherIdType::NifIva,
idNumber: "DE123456789",
name: "German Client GmbH",
address: "Hauptstrasse 1",
postCode: "10115",
city: "Berlin",
province: "Berlin"
),
items: [
new InvoiceItem(
description: "Consulting services",
basePrice: 100,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 21,
taxPrice: 21,
amount: 121
)
],
totals: new InvoiceTotals(basePrice: 100, taxPrice: 21, amount: 121),
itemDescription: "International invoice"
),
process: ["verifactu"]
);
use Factuapi\PhpSdk\Dto\CreditNotes\CreditNote;
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\RelatedInvoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
use \Factuapi\PhpSdk\Dto\CreditNotes\CreditNoteType;
use \Factuapi\PhpSdk\Dto\CreditNotes\CreditNoteCategory;
$factuapi
->invoices()
->create(
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "REC2025",
number: "1",
),
issueDate: new DateTime("2025-11-14"),
invoiceType: InvoiceType::CreditNote,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new SpanishRecipient(
taxNumber: "B87654321",
name: "Client Company SL",
address: "Av. Client 456",
postCode: "08002",
city: "Barcelona",
province: "Barcelona"
),
items: [
new InvoiceItem(
description: "Correction for invoice 2025-101",
basePrice: -10,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 21,
taxPrice: -2.1,
amount: -12.1
)
],
totals: new InvoiceTotals(basePrice: -10, taxPrice: -2.1, amount: -12.1),
itemDescription: "Credit note",
creditNote: new CreditNote(
type: CreditNoteType::ByDifferences,
category: CreditNoteCategory::AdjustmentForDiscountsOrReturns,
basePrice: 100,
taxPrice: 21
),
relatedInvoices: [
new RelatedInvoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "101",
),
issueDate: new DateTime("2025-11-14"),
issuerTaxNumber: "B12345678"
)
]
),
process: ["verifactu"]
);
use Factuapi\PhpSdk\Dto\Invoices\InvoiceType;
use Factuapi\PhpSdk\Dto\Invoices\Invoice;
use Factuapi\PhpSdk\Dto\Invoices\InvoiceId;
use Factuapi\PhpSdk\Dto\Invoices\TaxType;
use Factuapi\PhpSdk\Dto\Invoices\RegimeKeyIVA;
$factuapi
->invoices()
->correct(
previousInvoiceId: new InvoiceId(
seriesCode: "2025",
number: "105",
),
invoice: new Invoice(
invoiceId: new InvoiceId(
seriesCode: "2025",
number: "105",
),
issueDate: new DateTime("2025-11-14"),
invoiceType: InvoiceType::Invoice,
issuer: new Issuer(
taxNumber: "B12345678",
name: "Example Company SL",
address: "C/ Example Street 123",
postCode: "08001",
city: "Barcelona",
province: "Barcelona"
),
recipient: new SpanishRecipient(
taxNumber: "B98765432",
name: "Updated Client SL",
address: "C/ New Address 789",
postCode: "08003",
city: "Barcelona",
province: "Barcelona"
),
items: [
new InvoiceItem(
description: "Professional services",
basePrice: 100,
taxType: TaxType::IVA,
regimeKey: RegimeKeyIVA::General,
taxRate: 21,
taxPrice: 21,
amount: 121
)
],
totals: new InvoiceTotals(basePrice: 100, taxPrice: 21, amount: 121),
itemDescription: "Invoice"
),
process: ["verifactu"]
);