Doxnex User Guide
Everything you need to create, send and receive invoices compliant with French and European standards.
1 Getting started
1.1 Create an account
Head to app.doxnex.io and sign in with email (6-digit OTP code) or Google. No password to remember.
1.2 Understanding the dashboard
The dashboard shows your recent activity: document counts by type, monthly trend chart, and shortcuts to common actions (create an invoice, view customers, open settings).
1.3 Configure your company
Go to Settings and fill in:
- Legal name, SIREN, intra-EU VAT number
- Full address (used as footer on all documents)
- Logo (PNG or SVG, 200x80 px recommended)
- IBAN and BIC for payments
- Default VAT rates
2 Create your first invoice
2.1 The issuer (you)
If you are a French company, type your name and use the SIRENE auto-complete: Doxnex automatically fetches your legal name, SIREN/SIRET, address and VAT number from the INSEE database.
2.2 The recipient
Search an existing customer or use SIRENE auto-complete for new French customers. For foreign customers, enter the information manually.
2.3 Add line items
Click Add line. For each line:
- Description (and optional product reference)
- Quantity and unit price excluding VAT
- VAT rate (0%, 5.5%, 10%, 20% in France)
- Optional discount as a percentage
Subtotal, VAT and grand total are computed in real time.
2.4 Choose the payment method
Select: bank transfer, direct debit, card, cheque or cash. Doxnex displays your bank details on the invoice when you pick bank transfer.
2.5 Real-time preview
The split view shows the form on the left and the live PDF preview on the right. Every change is reflected in under 2 seconds thanks to smart debouncing.
2.6 Generate the PDF
Click Generate. Doxnex produces:
- A PDF/A-3 (archivable for 10 years)
- An embedded Factur-X CII XML file
- A SHA-256 hash per document (proof of integrity)
3 Document types
4 Regulatory compliance
4.1 Factur-X (France and EU)
Doxnex is FNFE-MPE certified at the BASIC profile. Every invoice embeds a human-readable PDF plus an EN 16931-compliant CII XML readable by accounting machines.
4.2 Peppol UBL (international, Oman)
For customers outside the EU, Doxnex generates a Peppol UBL BIS 3.0 file validated by peppolvalidator.com. Verified for Oman (0% VAT, OMR currency).
4.3 Mandatory mentions September 2026
Starting September 1st 2026, French B2B invoices must include:
- Operation category: goods delivery, service or mixed
- VAT on debits option, where applicable
- Delivery address if different from the billing address
- Seller AND buyer SIREN (9 digits)
Doxnex offers a "France compliance" panel that shows automatically whenever you invoice in French or for a French customer.
4.4 ZATCA QR Code
For Saudi Arabia operations, Doxnex automatically stamps a TLV QR code compliant with ZATCA Phase 1.
5 Send and receive
5.1 Send by email
From an invoice page, click Send by email. Doxnex uses a responsive HTML email with your logo and the PDF attached (Brevo SMTP).
5.2 Submit to the Approved Platform
Starting September 2026, French B2B invoices must transit through an Approved Platform. Doxnex connects to B2Brouter: one click submits an invoice, tracks its status (sent, received, accepted, paid) and retrieves the archiving proof.
5.3 Receive invoices (inbox)
The new Inbox page lists every invoice sent to your company via the Approved Platform. Filter by status, download the original XML, accept, reject or mark as paid.
Open the inbox5.4 Public payment page
Each invoice has a public URL https://app.doxnex.io/invoice/{viewId} with PDF preview, download and a Stripe payment button for your customers.
6 Reminders and payment
6.1 Automatic reminders
Doxnex automatically sends three reminders for each unpaid invoice:
- D+7: friendly tone, "you may have missed this"
- D+15: firm tone, reminder of terms
- D+30: formal tone, mention of late-payment penalties (Art. L441-10 French Commercial Code)
The scheduler runs every day at 9am. Idempotent: no duplicate reminders.
6.2 Mark as paid
On an invoice page, click Mark as paid and enter the payment date. Reminders stop and your DSO statistics are updated.
6.3 Online quote signature
Your customers can accept a quote directly on the public page /quote/{viewId}/accept. The electronic signature stores name, email, IP, timestamp and SHA-256 hash. The quote status turns to "accepted" automatically.
7 Reports and exports
7.1 Statistics
The Reports page shows:
- Revenue total and by month
- VAT collected by currency and rate
- DSO (Days Sales Outstanding): average payment delay
- Top customers by revenue
7.2 FEC export
The Fichier des Ecritures Comptables is mandatory in a French tax audit (Art. A. 47 A-1 LPF). Doxnex generates a text file in the DGFiP standard format (18 pipe-separated columns).
JournalCode|JournalLib|EcritureNum|EcritureDate|CompteNum|...
VEN|Sales|F-2026-001|20260403|411000|CUSTOMER DUPONT|D|1200.00|0|...
7.3 CSV export
For Excel analytics, export all your documents in CSV from the Export page.
8 Settings
X-Doxnex-Api-Key.9 Invoice validator
The free validator is available to everyone, without an account, at doxnex.io/validate. It accepts:
- Factur-X files (PDF/A-3 + CII XML)
- Plain UBL XML files
- Peppol BIS 3.0 documents
The report shows:
- EN 16931 compliance (green / red)
- Detected profile (BASIC, EN16931, EXTENDED, MINIMUM)
- Errors and warnings line by line
- AI-powered correction suggestions (in connected mode)
10 Developer API
10.1 Authentication
Every request carries the header X-Doxnex-Api-Key: dx_live_.... Generate your key in Settings > API keys.
10.2 Generate a document
POST https://api.doxnex.io/api/v1/documents
X-Doxnex-Api-Key: dx_live_xxxxx
Content-Type: application/json
{
"document_type": "invoice",
"compliance": "factur-x-basic",
"issuer": { "name": "Acme Ltd", "siren": "123456789", ... },
"recipient": { "name": "Client Ltd", "siren": "987654321", ... },
"lines": [
{ "description": "Consulting", "quantity": 1, "unit_price": 1000, "vat_rate": 20 }
]
}
10.3 List documents
GET /api/v1/documents?type=invoice&status=paid&page=0&size=20
10.4 Webhooks
Register an endpoint to receive document.created, document.paid, quote.signed events. Every payload is signed with HMAC SHA-256.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/webhooks | Register an endpoint |
| GET | /api/v1/webhooks | List endpoints |
| POST | /api/v1/inbound/b2brouter | Inbound AP (HMAC signature) |
10.5 Error codes
| Code | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | Quota exceeded or forbidden resource |
404 | Unknown document |
422 | Validation failed (see errors field) |
429 | Too many requests |