Integrations
Connect your invoicing to Stripe, WhatsApp and your software
Create and query documents with the REST API or SDKs, receive events through signed webhooks and expose specific functions to assistants through MCP.
- 10-day trial
- No card required
- Cancel anytime
Compatible integrations and formats

WhatsApp

Norte Estudio, S.L.
Invoice F-2026-118
€386.11Due 23/10/2026
- Professional services
- €319.10
- VAT 21 %
- €67.01
No codeThe customer pays from the invoice's own link.
Every path works on the same invoice and preserves its history.
Choose your entry point
Four ways to connect Factuarea
Start with a ready-made integration or build the flow your business needs. The invoice, its states and its rules remain the same in every path.
No code
Connect every payment to its invoice
Starts with
Payment link
Factuarea
Factuarea
Invoice and payment
Ends with
Reviewed payout
- From Profesional
- Optional auto-invoicing
Ready-to-use integrations
Get paid and manage work without leaving your workflow
Stripe connects each payment to its invoice. The WhatsApp assistant brings everyday queries and operations into a conversation.
The API
One call, one traceable draft
The API creates a draft with the same clients, series, taxes and validations as the app. When it is issued, and VeriFactu is active, the tax record is processed asynchronously.
Official SDKs
JavaScript and PHP, with written types and typed errors.
Errors with a name
Every rejection comes back with its code and the reason spelled out, not a 500 and good luck.
1import { Factuarea } from "@factuarea/sdk";23const factuarea = new Factuarea({4 apiKey: process.env.FACTUAREA_API_KEY,5});67const factura = await factuarea.invoices.create({8 client_id: "f58fbf7f-...",9 series_id: "019e5584-...",10 issued_on: "2026-06-01",11 due_on: "2026-07-01",12 lines: [{ description: "Consulting", quantity: 1,13 unit_price: 1240, tax_rate_id: "019e5584-..." }],14});200Responseapplication/json
{ "data": { "id": "01931b3e-...", "object": "invoice", "status": "draft", "verifactu_status": "not_applicable" }}The notifications
Your system hears about it before you do
Subscribe to the events you care about and they arrive as they happen, signed. These are their names, the same ones you will type when you subscribe.
Some of the events
Invoices
- invoice.created
- invoice.auto_created
- invoice.paid
- invoice.overdue
- invoice.corrective_auto_created
- invoice.verifactu_submitted
Payments
- payment.received
- payment.reversed
- payout.reconciled
Quotes and delivery notes
- quote.converted
- proforma.converted_to_invoice
- delivery_note.signed
Recurring
- recurring_invoice.executed
- recurring_invoice.failed
Clients and items
- client.created
- client.updated
- product.created
And so on, past a hundred of them. Only the ones you tick reach you; the rest are never sent.
Delivery log
- 23:47:02invoice.auto_created200 · deliveredFirst attempt. Your server answered straight away.
- 23:47:02payment.received200 · deliveredThe same payment, with its own payment event.
- 02:15:44invoice.overdue500 · no answerYour server did not answer. Nothing is lost: it is logged and tried again.
- 02:16:51invoice.overdue200 · deliveredSecond attempt, a minute later. Delivered.
- How you know it is ours
- Every delivery carries a Factuarea-Signature header with its timestamp, plus its own event id so you can ignore the one you already processed.
- If your server is down
- We try up to eight times spread over more than four days: after a minute, five, half an hour, two hours, twelve, a day and three days. If it still does not get through, you replay it by hand from the dashboard once it is fixed; and if the failures pile up, we email you.
- When you rotate the secret
- For the next 24 hours we sign with both the new one and the old one, so you deploy when it suits you and not a single notification drops.
Before connecting
Which option fits your flow
Stripe payments are available from Profesional when Integrations is enabled. The WhatsApp assistant is in beta from Profesional.
Test the integration without touching production
Use a sandbox key, validate each response and switch to production when the flow is ready.