Errors and status codes

Environment: Live

Read Moolre response envelopes, distinguish transport errors from API errors, and surface actionable failures to users.

# Errors and status codes

Read Moolre response envelopes, distinguish transport errors from API errors, and surface actionable failures to users.

## Read the response envelope first

Moolre responses include a status value, a code, a message, data, and an optional go value. Use the HTTP status for transport-level handling, then use the response code and message to decide what the application should do next.

Treat successful HTTP responses with an application error payload as an API-level failure. Keep the code and a correlation value in your logs so support can trace the request quickly.

## API status code reference

The following application codes are used across the live and sandbox environments. Use the code as the stable value for branching and logging, and use the message as user-facing context. Always handle the HTTP status separately because an HTTP success response can still contain an application-level failure.

| Code | Response | Condition |
| --- | --- | --- |
| WC02 | Wallet created successfully. Your wallet will be reloaded shortly, or click close to refresh now. | When a wallet is created successfully. |
| AIN01 | Authentication Error | When the API keys or username are incorrect. |
| WCU02 | Account updated successfully. | Not specified in the source catalogue. |
| APGW06 | This currency does not support API. | Not specified in the source catalogue. |
| APGW16 | Wallet updated successfully. | Not specified in the source catalogue. |
| WCU01 | Wallet update failed: invalid account number. | Not specified in the source catalogue. |
| APGW12 | Authentication Error, wallet not found. | When the wallet being updated is not found in your wallets. |
| APGW21 | You already have a wallet with this account name. Please choose a different account name. | When creating a new wallet with an existing account name. |
| APGW00 | Wallet created successfully. | Not specified in the source catalogue. |
| SW01 | Wallet Found | Not specified in the source catalogue. |
| AIN03 | Authentication Error, wallet not found. | When checking account status and the API keys or wallet cannot be found. |
| ST08 | Transactions Found | Not specified in the source catalogue. |
| ST09 | Transactions not Found | Not specified in the source catalogue. |
| AVD01 | Successful | When validating the name for a Ghanaian number. |
| IN01 | Authentication Error | When validating a name with incorrect API keys. |
| OBGH01 | Pay out Successful | When making a payout. |
| APY18 | External reference is required and must be unique. | When making a payout with a missing or non-unique external reference. |
| APY17 | Pay out Failed | Not specified in the source catalogue. |
| APY21 | Insufficient wallet balance. | When making a payout with insufficient wallet balance. |
| TR099 | Internal transfer initiated successfully | When making an internal transfer. |
| OM03 | Pay out Successful | When an internal transfer is completed successfully. |
| TR09 | It looks like you have insufficient balance to make this payment | When the wallet used for an internal transfer has insufficient funds. |
| SS01 | Transaction Successful | When checking a transfer transaction status. |
| TP13 | External reference is required and must be unique. | When receiving mobile money with a missing or non-unique external reference. |
| TR099 | null | Mobile money collection: when the Mobile Money USSD prompt is triggered successfully. |
| TP17 | Phone number verification successful. | Mobile money collection: when OTP verification is successful. |
| TP14 | Please complete the verification process sent to you via SMS and try again. | Mobile money collection: when verifying an OTP. |
| TP01 | Currency Invalid | Mobile money collection: when an unsupported currency is supplied. |
| OTGH02 | Pay out in Progress | When an unsupported channel is selected. |
| AD14 | Terminal Creation Successful | When creating a Payment ID. |
| AD19 | Account No. Creation Successful | For bank collections. |
| AC01 | Payment ID / Bank Account Found | For a bank account status lookup that finds the account. |
| AC03 | Payment ID / Bank Account Not Found | For a bank account status lookup when the reference or account number is incorrect. |
| POS09 | POS payment link successfully generated. | Not specified in the source catalogue. |
| TP09 | This channel does not support API topup. | For a payment link using an unsupported channel. |
| SMS01 | Success | When an SMS is sent successfully. |
| ASMS07 | Sender ID is not approved. Please log in to app.moolre.com and set up your Sender ID. | When the Sender ID is incorrect, not approved, or does not exist. |
| ASMQ10 | SMS Status | When checking the status of an SMS. |
| ASMQ12 | Sender IDs Created Successfully. | Not specified in the source catalogue. |
| ASMQ08 | Sender ID: '[sender ID]' is longer than 11 characters. | Not specified in the source catalogue. |
| ASMQ01 | Sender ID Status | For approved, pending, or rejected Sender ID statuses. |
| ASMQ08 | List of Your Sender IDs | When listing Sender IDs; the same status code can also be returned when creating one. |
| ASMS09 | Request Unknown. | For an unknown Sender ID request. |
| ASMQ07 | Sender IDs updated successfully. | When approving Sender IDs. |
| ASMQ09 | You do not have permission to update Sender IDs. Contact Customer Support. | Not specified in the source catalogue. |
| ASMQ06 | senderid is required. | Not specified in the source catalogue. |
| ASMQ03 | Account Status | For the SMS service balance. |
| DA01 | sublistid for Ghana Bank Transfer | When retrieving banks. |
| WAS200 | Templates retrieved successfully or success | When listing templates, sending a message successfully, or checking message status. |

> **Keep integrations resilient:** Some codes can be returned by more than one operation, and response wording may evolve. Prefer the status code and endpoint context over exact message text. Treat duplicate codes such as TR099 and ASMQ08 as context-dependent.

Back to the Moolre AI documentation index