DGS-Pay API v2
Dashboard
Reference

Error Codes

Every API response includes a status field ("success", "pending", or "failed"). When a request fails at the API level, an error_code field indicates the category of error. Payment-level outcomes (declined card, insufficient mobile money balance) are different — those use transaction_status and processor_response.

CodeLabelMeaning & Next Steps
00SuccessRequest processed successfully.
90Validation ErrorInvalid JSON structure or missing required fields. Check your request body against the parameter table.
91Auth ErrorAPI key is missing, invalid, or blocked by IP whitelist. Verify your credentials in the dashboard.
92Not FoundThe resource (transaction, payment link, etc.) does not exist or belongs to a different account.
93Idempotency ErrorAn idempotency key conflict was detected. Use a unique key per request.
99Server ErrorUnexpected internal error. Safe to retry after a short delay. Contact support if persistent.

Status vs Error Code Explained

These two concepts operate at different layers:

FieldLayerMeaning
status: "success"API levelThe request was accepted and a response was produced. Does not mean the payment succeeded.
status: "pending"Payment levelTransaction initiated; awaiting customer authorization (e.g. STK push).
status: "failed"Payment levelPayment declined or rejected by the provider or customer.
error_codeAPI levelSpecific error category (see table above). Only present when the API itself could not process your request.
Example A charge request that triggers an STK push returns status: "success" (the API accepted it) and transaction_status: "pending" (the payment is waiting for the customer). Later, if the customer rejects the push, your webhook receives status: "failed" — not an error_code.

Need Help?

Our technical team is ready to assist with integration questions, testing, and go-live checks.

Contact Support