One invoice contract. Explicit routing decisions.
Send a canonical invoice, preserve an idempotency key, and receive a versioned ruleset outcome with a request correlation ID.
Submit an invoice
POST /api/v1/invoices
Authorization: Bearer vtr_live_...
Idempotency-Key: 29f3e57e-...
Content-Type: application/json
{
"schema_version":"2026-10-16",
"external_id":"ERP-AP-88421",
"document_type":"invoice",
"currency":"EUR",
"routing":{"destination_country":"FR","archive_policy":"eu-10y"}
}Safe integration behaviour
- Use the same idempotency key only for an identical logical write.
- Treat
RULESET_NOT_AVAILABLEas a hard stop, not a warning. - Provision access only from verified billing webhook state.
- Verify timestamped webhook signatures and acknowledge events idempotently.