Reference6 min read

Error codes

Every S/E code the SDKs return, what causes it, and how to fix it.

Look-up tables. Come here when something breaks.

Every code the charging SDKs return, what it actually means, and what to do about it. S1000 is the only success code; everything beginning with E is a failure.

Showing 31 of 31 codes

  • S1000Success

    The request completed. For a charge, still wait for the async notification before you deliver anything.

  • E1001Error Occurred. Please Try Again.

    A general failure with no specific cause reported. Retry with a fresh requestId; if it persists, send your requestId to support.

  • E1002Invalid Signature

    The most common integration error. Check the field order, that separators are pipes with no spaces, that requestTime in the hash is byte-identical to the one in the URL, and that you hashed with SHA-512.

  • E1003Invalid Time Format

    Send requestTime in UTC form, for example 2024-07-08T10:33:54.929Z, generated in the Asia/Dhaka timezone.

  • E1004Request Timeout

    The request took too long or requestTime was too far from server time. Sync your clock with NTP and build the URL immediately before redirecting.

  • E1005A record with this requestId already exists. Please enter a unique requestId to proceed.

    Generate a fresh 15-digit requestId for every request. Never retry with one you have already used.

  • E1006Invalid Api Key

    Copy the API Key again from your application in the Digimart portal.

  • E1007Unauthorized

    The credentials are recognised but not permitted for this call. Confirm the application is approved and the key belongs to it.

  • E1008This Service Is Not Allowed For The Application. Please Contact Administrator.

    The application is not entitled to the service you called. Enable the relevant API on the app and resubmit it for approval.

  • E1009Invalid Request

    A parameter is missing or malformed. Compare your query string against the parameter table for the flow.

  • E1010This Service Is Not Allowed For The SP. Please Contact Administrator

    The restriction is on the service provider account rather than the app. Only an administrator can lift it.

  • E1011SDK Is Not Enabled For This Application. Please Contact Administrator

    Turn on the Subscription Charging SDK toggle on the application, then have it approved.

  • E1012Please Start From The Beginning

    The session state was lost, usually because a step was skipped or a page was reloaded. Build a new URL with a new requestId.

  • E1013Internal Error Occurred. Please Try Again.

    A platform-side failure. Retry with a new requestId; report it with the requestId if it repeats.

  • E1014Sorry, your number of verification attempts exceeded. Please try again in (xx) minutes.

    The subscriber is rate limited. Show the wait time from the message rather than letting them retry immediately.

  • E1329Charging amount too high

    The amount exceeds the permitted ceiling. The published one-time band is 1 to 600 BDT.

  • E1330Charging amount too low

    The amount is below the permitted floor. The published one-time band starts at 1 BDT.

  • E2001Request OTP Failed Due to an Internal Error

    The OTP could not be issued. Usually transient at the operator, so let the subscriber retry.

  • E2002You Have Exceeded Resend Attempts

    The subscriber pressed resend too many times. They must start a new flow.

  • E2003OTP Verification Failed Due to an Internal Error

    Verification could not complete on the platform side. Restart with a new requestId.

  • E2004Subscriber MSISDN validation Failed Due to an Internal Error

    The number could not be validated. Confirm it is a Grameenphone number in the expected format.

  • E3001User Already Registered

    The subscriber already has an active subscription. Check status with the charging-info API before starting a new opt-in.

  • E3002Authentication Failure.

    The subscriber could not be authenticated by the operator.

  • E3003Maximum Number of OTP Requests Reached

    The subscriber has requested too many OTPs. They must wait before trying again.

  • E3004This Service Is Not Allowed for Your Operator

    The number is not on an operator this service covers. Digimart charges Grameenphone subscribers.

  • E3005Your Mobile Number Is Not Whitelisted to Use This Application

    Common in sandbox: only whitelisted test numbers can transact until the app is approved for production.

  • E3006Your Mobile Number Is Blacklisted to Use This Application

    The number is blocked for this application. Do not retry automatically.

  • E3007Your Mobile Number Has Reached Maximum Number of OTP Attempts

    Too many wrong entries from this number. The subscriber is locked out temporarily.

  • E3008Invalid Mobile Number Format

    The msisdn is malformed. The tutorial's sample uses the local form 01748277168.

  • E3009Your account balance is too low, recharge and try again

    The single most common real-world failure. Design a friendly recharge prompt for it, and consider offering a cheaper tier.

  • E4001Invalid OTP, please try again

    The subscriber typed the wrong code. Digimart lets them re-enter it within the same flow.

A sane handling strategy

Do not write a branch for all thirty codes. Group them by what the user should do next:

  • S1000, deliver the goods, but only once the async notification confirms it.
  • E3009, E3007, a money problem. Show a friendly “please recharge and try again” screen with a retry button. This is your most common failure by far.
  • E2xxx, E4001, an OTP problem. Offer to resend or restart the flow.
  • E3005, E3006, the customer said no. Return them somewhere pleasant and do not automatically re-prompt.
  • E1xxx, your bug, not theirs. Log it with the request ID, alert yourself, and show a generic apology rather than a code.