

Integrate FactuON's invoicing and contact management directly into your application. Create invoices and manage organizations programmatically via our REST API.
Get your first API call running in under 5 minutes.
Generate an API Key
Go to Settings → API Keys inside your FactuON dashboard. Only privileged company users can create or revoke keys. Copy the full secret immediately — it is shown only once.
Make your first request
Send the API key in the X-API-Key header and hit the health-check endpoint to verify connectivity.
curl https://api.factuon.com/api/v1.0.1/public \
-H "X-API-Key: fct_live_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyy"Create your first invoice
Your key must have the invoice.create scope. Pass the request body shown in the Create Invoice endpoint below.
Handle the response
Check success: true and read data.id for the newly created resource. On error, inspect error.code for details.
Every request to a protected endpoint must carry a valid API key.
Pass the key directly in the custom header:
X-API-Key: fct_live_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyAlternatively, use the standard Authorization header:
Authorization: Bearer fct_live_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyAPI keys are granted fine-grained permissions using dot-notation scopes.
| Scope | Description | Required for |
|---|---|---|
| ◆invoice.create | Allows creating new sales invoices | POST /invoice |
| ◆organization.create | Allows creating new organizations | POST /organization |
Every API request is assigned a unique identifier for tracing and support.
# Optional: send your own ID
X-Request-Id: req_client_abc123
# If omitted, FactuON generates: req_<uuid>The request ID is echoed back in the response header X-Request-Id and body under meta.requestId. Always share it with support when reporting an issue.
All API responses follow a consistent JSON envelope.
{
"success": true,
"message": "...",
"data": { /* resource */ },
"meta": {
"requestId": "req_...",
"requestTime": "2026-...",
"apiVersion": "v1",
"timestamp": "2026-..."
}
}{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key"
},
"meta": {
"requestId": "req_...",
"apiVersion": "v1"
}
}Machine-readable codes returned in error.code
| HTTP | Code | Description |
|---|---|---|
| 400 | NAME_REQUIRED | Required field name is missing |
| 400 | NAME_FIELDS_REQUIRED | firstName and lastName required when typeCode is F |
| 400 | ORG_TYPE_REQUIRED | At least one organization type flag must be true |
| 401 | INVALID_API_KEY | API key is missing, invalid, revoked, or expired |
| 403 | FORBIDDEN | API key lacks the required scope |
| 409 | NAME_CONFLICT | Organization name already exists for this company |
| 429 | RATE_LIMITED | Too many requests — back off and retry |
| 500 | INTERNAL_SERVER_ERROR | Unexpected server error — contact support with requestId |
Health Check
Create Invoice
Create Organization