Alle fouten volgen RFC 7807. De responsebody is application/problem+json met de velden type, title, status, detail, request_id en eventueel reason of errors[].
{
"type": "https://www.kernelhost.com/en/kernelhost-api/errors/payment_required",
"title": "Payment required",
"status": 402,
"detail": "The order could not be paid.",
"request_id": "01HX7Z3K8Q...",
"reason": "insufficient_credit_and_no_card"
}
| HTTP | type | Betekenis |
|---|---|---|
| 400 | validation_failed | Invoervalidatie mislukt. Zie errors[] voor detail per veld. |
| 401 | auth_failed | Authenticatie mislukt. Het antwoord bevat altijd reason unauthorized (of ip_not_allowed als de sleutel tot andere IP-adressen beperkt is) en verraadt bewust niets meer. Controleer sleutel, secret, klok (±300 s), nonce en handtekening; support kan de exacte oorzaak via de request_id opzoeken. |
| 402 | payment_required | Betaling vereist. reason zie hieronder. |
| 403 | forbidden_scope | Machtiging ontbreekt. reason: missing_scope. |
| 404 | not_found | Resource bestaat niet of is voor deze sleutel niet zichtbaar (voorkomt tenant-enumeratie). |
| 409 | idempotency_conflict, order_in_progress, service_not_active | Conflict. Ofwel is de Idempotency-Key al gebruikt met een andere body of een ander endpoint (idempotency_conflict, reason in_progress zolang de eerste aanvraag nog loopt), ofwel wordt er voor uw account nog een andere bestelling verwerkt (reason order_in_progress, Retry-After respecteren), ofwel bevindt de service zich niet in een toestand die de actie toestaat (service_not_active, zie service_status). |
| 413 | payload_too_large | Request-body groter dan 65.536 bytes. Deze wordt al vóór de authenticatie geweigerd. |
| 422 | unprocessable | Begrepen maar niet uitvoerbaar. reason billing_cycle_not_available: het product wordt niet in deze factureringscyclus aangeboden. reason zero_total_not_allowed: de bestelling zou zonder geldige reden, zoals een promotiecode, gratis zijn. |
| 429 | rate_limited | Snelheidsbeperking overschreden. Header Retry-After respecteren. |
| 500 | internal_error | Interne serverfout. Geef request_id op voor correlatie met het auditlogboek wanneer u contact opneemt met de support. |
Redenen voor Payment Required (HTTP 402)
Wanneer de bestelling niet betaald kan worden, levert de API HTTP 402 met een machineleesbare reden in de JSON-body.
insufficient_credit_and_no_card(Tegoed onvoldoende en geen kaart opgeslagen. Oplossing: tegoed bijladen of kaart toevoegen in het klantenportaal.)card_declined(Kaart geweigerd door de bank of gateway. Oplossing: een andere kaart opslaan of contact opnemen met uw bank.)credit_apply_failed(Het tegoed kon niet op de factuur worden toegepast. Er is niets afgeschreven en de bestelling is geannuleerd. Probeer het opnieuw met een nieuwe Idempotency-Key of neem contact op met support.)client_not_found(Account-id niet gevonden (zou praktisch nooit mogen voorkomen, neem contact op met de support).)

