Errors

Payroo uses standard HTTP status codes and structured error responses.

Error Response Shape

{
  "error": {
    "code": "INVALID_REQUEST",
    "message": "amount is required.",
    "type": "validation_error",
    "request_id": "req_01HXYZ"
  }
}

Error Codes

CodeHTTP StatusDescription
INVALID_REQUEST400Missing or invalid request parameters.
UNAUTHORIZED401Missing or invalid API key.
FORBIDDEN403API key lacks the required scope.
NOT_FOUND404The requested resource does not exist.
IDEMPOTENCY_CONFLICT409Same Idempotency-Key used with a different request body.
INVALID_STATE_TRANSITION422Transaction cannot be moved to the requested status.
RATE_LIMITED429Too many requests. Retry after the indicated period.
PROVIDER_ERROR502The upstream payment provider returned an error.
INTERNAL_ERROR500An unexpected internal error occurred.

Webhook Events

EventDescription
payment.succeededA QR Ph or eWallet payment was completed.
payment.failedA payment failed or expired.
payout.succeededA payout was successfully disbursed.
payout.failedA payout failed or was rejected.
payout.reversedA payout was reversed.
eload.purchase.succeededAn e-load purchase was completed.
eload.purchase.failedAn e-load purchase failed.
bill.inquiry.succeededA bill inquiry returned a result.
bill.payment.succeededA bill payment was completed.
bill.payment.failedA bill payment failed.