Skip to content

Errors

All errors return a consistent JSON structure:

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Contact name can't be blank",
"details": {}
}
}
CodeHTTP StatusDescription
UNAUTHORIZED401Missing, invalid, or expired API key
FORBIDDEN403Key not bound to a books owner
SCOPE_MISSING403Key lacks required scope for this endpoint
BOOKS_NOT_SETUP412Books module not initialized for this entity
CodeHTTP StatusDescription
NOT_FOUND404Resource does not exist
VALIDATION_ERROR400/422Invalid parameters or business rule violation
CodeHTTP StatusDescription
INVOICE_NOT_DRAFT422Cannot modify a posted or voided invoice
PERIOD_CLOSED422Cannot post to a closed accounting period
CodeHTTP StatusDescription
PAYMENT_OVER_APPLIED422Applied amount exceeds payment or invoice balance
CodeHTTP StatusDescription
IDEMPOTENCY_KEY_REUSE_MISMATCH409Same key used with different request body
HTTP StatusDescription
429Too many requests. Check Retry-After header for seconds to wait.