Invoicing API for developers
An API that makes e-Factura simple.
Embed Romanian e-invoicing into your product in a few lines of code. REST endpoints, OAuth2, webhooks, and SDKs for Node.js, PHP and Python.
Dedicated sandbox, no card. Test tokens for ANAF integration.
POST /api/invoices
curl https://app.storno.ro/api/invoices \
-H "Authorization: Bearer $STORNO_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"company_id": "your-company-uuid",
"client": {
"cui": "RO12345678",
"name": "Tech Solutions SRL"
},
"lines": [
{ "description": "Servicii consultanta", "quantity": 10, "unit_price": 250, "vat_rate": 21 }
],
"due_date": "2026-06-01",
"send_to_anaf": true
}'What the Storno API gives you
Everything you need to embed e-invoicing into your product.
Documented REST API
OpenAPI 3.1, examples in 5 languages, dedicated sandbox. Endpoints for invoices, customers, products, e-Factura, payments.
OAuth2 + API keys
OAuth2 for multi-tenant integrations or per-organization API keys. Granular scope permissions.
Webhooks for events
Subscribe to events: invoice issued, payment received, ANAF status changed. Auto-retry with backoff, HMAC signature.
SDKs and MCP
Official packages for Node.js, PHP and Python. MCP server for direct integration with Claude, Cursor and other LLMs.
Sandbox + production
Test token with mocked ANAF for development. Switch to production with a single header. No fees during development.
Self-host available
Prefer keeping data on your own server? Install Storno with Docker. Same API, your infrastructure.
What you get back
Complete response with PDF, XML and payment link URLs. Webhooks for every status change.
POST /api/invoices — 201 response
{
"id": "8f3e2a1c-...",
"number": "F2026-001",
"total_with_vat": 3025.00,
"currency": "RON",
"status": "issued",
"anaf": {
"upload_id": "4729382",
"status": "pending",
"xml_url": "https://app.storno.ro/api/invoices/8f3e2a1c-.../xml"
},
"pdf_url": "https://app.storno.ro/api/invoices/8f3e2a1c-.../pdf",
"payment_link": "https://buy.stripe.com/..."
}webhook invoice.anaf.validated
// POST https://your-app.com/webhooks/storno
{
"event": "invoice.anaf.validated",
"invoice_id": "8f3e2a1c-...",
"anaf": {
"upload_id": "4729382",
"download_id": "8281938",
"status": "ok"
},
"occurred_at": "2026-05-15T10:32:18Z"
}Cloud or self-host — your choice
Same API, two hosting options.
Run it on your server with Docker
Storno is open-source. If you want your data to stay on your infrastructure, run Storno with docker compose up. Same endpoints, same SDKs.
Frequently asked questions about the API
Answers for developers and tech teams.
The docs are waiting.
OpenAPI specs, examples, sandbox. Everything you need to integrate Storno into your product.