Error Handling
Status-code semantics, the 409/410 pattern, and retry guidance
When something cannot be done, the platform refuses cleanly: nothing partial ever happens, and the refusal says why. Here is how to read the outcomes — in operational terms.
The Outcomes Your Team Will Meet
What the response means | What to do |
|---|---|
The request itself has a problem — wrong code, not enough points, a limit was hit, a centre code that is not on your list | Read the stated reason; it names the issue directly (e.g. a fraud limit, an expired code) |
The feature is switched off for your tenant | Talk to your account team, or check the Settings page — it is a configuration choice, not an error |
The thing referenced does not exist | An unknown customer, a rule that belongs to another tenant, or a redemption that is no longer pending |
Already done | The operation succeeded earlier — a repeat was recognized and ignored. Treat it as success |
Too late | The confirmation window passed, or the notification for that transaction was already sent. Start the calculation again — nothing happened |
A platform fault | Rare; retrying is always safe because nothing partial was recorded |
Two Habits Worth Building
- “Already done” is good news. It means your safety reference did its job — the original attempt landed and the repeat changed nothing.
- “Too late” has one fix. Recalculate and confirm within the new window. There is never anything to undo.
For Developers: the Status Codes
Code | Meaning on this platform | Typical cause |
|---|---|---|
| The request was refused before anything changed | Validation failure, invalid or expired OTP, insufficient points for a reversal or penalty, a |
| The feature is disabled or not allowed for this tenant | Earning or redemption switched off, OTP enabled without a template, debits not permitted by policy |
| The referenced record does not exist in this tenant | Unknown phone, unknown rule, no pending redemption for that |
| Already done — the idempotency key was seen before | A repeated |
| The window has passed |
|
| A platform fault | Retry safely — nothing partial was recorded |
Keys that make repeats harmless
For developers
Last updated on