create_invoice
Send a Luxembourg B2B electronic invoice over the Peppol network in Peppol BIS 3.0 / EN 16931 format via Storecove (a certified Peppol Access Point). Luxembourg has mandated structured e-invoicing over Peppol for B2G since 2023 (fully in force), and B2B e-invoicing is expected to be legislated around 2026. Builds the structured invoice JSON from seller + buyer (name, Luxembourg VAT LUxxxxxxxx, address) and line items (description, quantity, net unit price, VAT rate 17/14/8/3/0), computes the Luxembourg VAT breakdown, and submits it under YOUR OWN Storecove credentials. Bring your own credential as header x-storecove-key. You must also pass seller_legal_entity_id — the legalEntityId of the sender you created in your Storecove account. Luxembourg VAT rates: 17 (standard), 14 (intermediate), 8 (reduced), 3 (super-reduced), 0 (zero-rated/exempt/reverse charge). Amounts in EUR. Delivery over Peppol is asynchronous: this returns a submission guid — use get_delivery_evidence with it to fetch the delivery proof/status. Tip: call check_recipient first to confirm the buyer is reachable on Peppol. There is no cancel over Peppol: to reverse an invoice you issue a credit note (a new invoice).
Parameters22
| seller_legal_entity_id | string | required | REQUIRED. The Storecove legalEntityId of the sender (created in your Storecove account under Senders). Numeric id, passed through to Storecove. |
| seller_name | string | required | Seller legal/company name. |
| seller_vat | string | required | Seller Luxembourg VAT (TVA) number, format LUxxxxxxxx (LU + 8 digits). Required — Luxembourg parties are identified on Peppol by their VAT number (scheme 9938). |
| seller_address | string | required | Seller street address. |
| seller_city | string | required | Seller city. |
| seller_zip | string | required | Seller postal code. |
| seller_country | string | optional | Seller country code. Default LU. |
| customer_name | string | required | Buyer legal/company name. |
| customer_vat | string | optional | Buyer Luxembourg VAT number LUxxxxxxxx (used to route on Peppol, scheme 9938, if no explicit recipient id is given). |
| customer_address | string | required | Buyer street address. |
| customer_city | string | required | Buyer city. |
| customer_zip | string | required | Buyer postal code. |
| customer_country | string | optional | Buyer country code. Default LU. |
| recipient_peppol_scheme | string | optional | Optional explicit Peppol routing scheme (EAS/ISO6523). Luxembourg: 9938 (LU VAT number). Default 9938 when routing by VAT number. |
| recipient_peppol_id | string | optional | Optional explicit Peppol participant identifier to route to (overrides deriving from the customer VAT number). |
| recipient_email | string | optional | Optional email fallback — used if the recipient is not on Peppol (Storecove can email a copy). |
| invoice_number | string | optional | Invoice number. Auto-generated if omitted. |
| issue_date | string | optional | Invoice issue date, YYYY-MM-DD. Default: today (UTC). |
| due_date | string | optional | Optional payment due date, YYYY-MM-DD. |
| currency | string | optional | Document currency. Default EUR. |
| note | string | optional | Optional free-text note on the invoice. |
| lines | array | required | Invoice line items. Each: description, unit_price (net, VAT-exclusive, EUR), vat_rate (17|14|8|3|0), optional quantity (default 1), optional tax_category (S standard / Z zero-rated / E exempt / AE reverse charge; default S for rate>0, Z for rate 0), optional item_name. |
Raw schema
{
"type": "object",
"properties": {
"seller_legal_entity_id": {
"type": "string",
"description": "REQUIRED. The Storecove legalEntityId of the sender (created in your Storecove account under Senders). Numeric id, passed through to Storecove."
},
"seller_name": {
"type": "string",
"description": "Seller legal/company name."
},
"seller_vat": {
"type": "string",
"description": "Seller Luxembourg VAT (TVA) number, format LUxxxxxxxx (LU + 8 digits). Required — Luxembourg parties are identified on Peppol by their VAT number (scheme 9938)."
},
"seller_address": {
"type": "string",
"description": "Seller street address."
},
"seller_city": {
"type": "string",
"description": "Seller city."
},
"seller_zip": {
"type": "string",
"description": "Seller postal code."
},
"seller_country": {
"type": "string",
"description": "Seller country code. Default LU."
},
"customer_name": {
"type": "string",
"description": "Buyer legal/company name."
},
"customer_vat": {
"type": "string",
"description": "Buyer Luxembourg VAT number LUxxxxxxxx (used to route on Peppol, scheme 9938, if no explicit recipient id is given)."
},
"customer_address": {
"type": "string",
"description": "Buyer street address."
},
"customer_city": {
"type": "string",
"description": "Buyer city."
},
"customer_zip": {
"type": "string",
"description": "Buyer postal code."
},
"customer_country": {
"type": "string",
"description": "Buyer country code. Default LU."
},
"recipient_peppol_scheme": {
"type": "string",
"description": "Optional explicit Peppol routing scheme (EAS/ISO6523). Luxembourg: 9938 (LU VAT number). Default 9938 when routing by VAT number."
},
"recipient_peppol_id": {
"type": "string",
"description": "Optional explicit Peppol participant identifier to route to (overrides deriving from the customer VAT number)."
},
"recipient_email": {
"type": "string",
"description": "Optional email fallback — used if the recipient is not on Peppol (Storecove can email a copy)."
},
"invoice_number": {
"type": "string",
"description": "Invoice number. Auto-generated if omitted."
},
"issue_date": {
"type": "string",
"description": "Invoice issue date, YYYY-MM-DD. Default: today (UTC)."
},
"due_date": {
"type": "string",
"description": "Optional payment due date, YYYY-MM-DD."
},
"currency": {
"type": "string",
"description": "Document currency. Default EUR."
},
"note": {
"type": "string",
"description": "Optional free-text note on the invoice."
},
"lines": {
"type": "array",
"minItems": 1,
"description": "Invoice line items. Each: description, unit_price (net, VAT-exclusive, EUR), vat_rate (17|14|8|3|0), optional quantity (default 1), optional tax_category (S standard / Z zero-rated / E exempt / AE reverse charge; default S for rate>0, Z for rate 0), optional item_name.",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Line description."
},
"unit_price": {
"type": "number",
"description": "Net unit price in EUR, VAT-exclusive."
},
"vat_rate": {
"type": "number",
"description": "Luxembourg VAT rate percent: 17 (standard), 14 (intermediate), 8 (reduced), 3 (super-reduced), or 0."
},
"quantity": {
"type": "number",
"description": "Quantity. Default 1."
},
"tax_category": {
"type": "string",
"description": "Optional EN 16931 tax category: S / Z / E / AE. Default derived from vat_rate."
},
"item_name": {
"type": "string",
"description": "Optional item name (defaults to description)."
}
},
"required": [
"description",
"unit_price",
"vat_rate"
]
}
}
},
"required": [
"seller_legal_entity_id",
"seller_name",
"seller_vat",
"seller_address",
"seller_city",
"seller_zip",
"customer_name",
"customer_address",
"customer_city",
"customer_zip",
"lines"
]
}