Corpenza
Get Started

Invoices

With the default autoVat=true the API determines the VAT rate from your company's VAT/OSS registration plus the client's country and VAT number (domestic / reverse-charge / OSS / export). Invoice numbers are gapless and share the same sequence as the panel. There is NO invoice deletion via API — only cancellation (the number stays in sequence).

ScenarioRateNote
Company not VAT-registered0Manual taxRate>0 → 422 rejected
Same country (domestic)Seller-country ratee.g. EE 24%
Intra-EU B2B (with VAT no)0Reverse charge — vatNote automatic
Intra-EU B2C + OSS registeredBuyer-country ratee.g. DE 19%
Intra-EU B2C, no OSSSeller-country rate
Sale outside the EU0Export exemption — vatNote automatic

Endpoints

POST/invoicesScope: write:invoices

Billed (per-invoice meter)

Issues an invoice. autoVat is on by default; clientCountry becomes required.

Example request

curl -X POST -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  https://corpenza.com/api/external/accounting/invoices -d '{
  "clientName": "Berlin GmbH",
  "clientCountry": "DE",
  "clientVatNumber": "DE123456789",
  "items": [
    { "description": "Consulting", "quantity": 2, "unitPrice": 250 }
  ]
}'

Example response

{
  "id": "inv_...",
  "invoiceNumber": "CRP-202606-0042",
  "taxRate": 0,
  "total": 500,
  "vatNote": "Reverse Charge - ...",
  "vatReason": "Intra-EU B2B — Reverse Charge"
}
GET/invoicesScope: read:invoices

Invoice list (status, from, to, page, limit filters).

Example request

curl -H "Authorization: Bearer $API_KEY" \
  "https://corpenza.com/api/external/accounting/invoices?status=SENT&page=1&limit=20"
GET/invoices/{id}Scope: read:invoices

Single invoice detail (items + payments).

POST/invoices/{id}/cancelScope: write:invoices

Cancels the invoice (no deletion; number stays in sequence). PAID cannot be cancelled (409).