Error Codes
All API errors return JSON of the form:
{
"success": false,
"code": "ERROR_CODE",
"message": "Human-readable message",
"details": "Optional details",
"requestId": "uuid"
}Include requestId when contacting support.
Authentication
MISSING_API_KEY (401), INVALID_API_KEY (401), INTEGRATION_DISABLED (403).
Validation
INVALID_AMOUNT (400), INVALID_CURRENCY (400), INVALID_PARTICIPANTS (400), INVALID_INPUT (400), MISSING_SESSION_ID (400), MISSING_PARTICIPANT_ID (400).
Session lifecycle
SESSION_NOT_FOUND (404), SESSION_NOT_PAYABLE (400), SESSION_EXPIRED (400), SESSION_COMPLETED (400), SESSION_CANCELLED (400).
Payment
PAYMENT_FAILED (402), STRIPE_ERROR (502), INSUFFICIENT_FUNDS (402), CARD_DECLINED (402).
Server / limits
SERVER_ERROR (500), DATABASE_ERROR (500), RATE_LIMIT_EXCEEDED (429). See Rate limits for when 429 happens and how to handle it.
Response headers may include X-Request-ID, X-PayShare-API-Version, X-RateLimit-Remaining, X-RateLimit-Reset. These codes and status mappings are stable.