Testing Collections

Choose the correct sandbox testing guide for hosted Payment SDK or direct collection API integrations.

Honeycoin provides separate sandbox workflows for the hosted Universal Payment SDK and the direct collection APIs. Both use configured test values and never send a payment to a live provider, but they do not always expose the same intermediate steps.

Choose Your Integration

IntegrationUse it whenTesting guide
Universal Payment SDKHoneycoin hosts the checkout and handles payment-method forms and challengesTesting the Universal Payment SDK
Direct collection APIsYour application calls the mobile money, bank, card, or OPay endpoint directlyTesting Direct Collection APIs

Choose a Mobile Money Test Number for Your Country

Build the sandbox number as country calling code + scenario digits. Use the calling code for the country you are testing and keep the scenario digits unchanged.

ScenarioTest number templateExpected final status
Success<CALLING_CODE>712345678successful
Failure<CALLING_CODE>787654321failed

Replace <CALLING_CODE> with the country's numeric international calling code, not its two-letter country code. Send the complete number as a string of digits without +, spaces, angle brackets, or a local leading zero.

  1. Choose a country and collection currency supported by your sandbox account.
  2. Select an operator for that country from Mobile Money Operators. Direct requests use momoOperatorId.
  3. Combine that country's calling code with the digits for the scenario you want to test.
  4. Submit the request with all required fields, an amount within your account's limits, and a new externalReference.

For direct collections, the API determines the collection country from the phone prefix. For hosted checkout, the number and operator must match the session's collection country and currency. A phone prefix from another country can cause PROVIDER_NOT_FOUND, even when the scenario digits are correct.

These numbers select a simulated outcome only after the request is accepted. They do not enable an unavailable currency, country, or operator, or bypass your sandbox account's limits. These are sandbox fixtures; use actual customer numbers in production.

Why the Guides Are Separate

Some values are shared, but the resulting journey can differ by integration:

  • A hosted card 3DS scenario returns stepRequired: three_ds; the direct card sandbox exposes the same card as a redirect step.
  • Hosted SDK OTP, PIN, and address-verification challenges use fixed success and failure values inside checkout.
  • Direct OPay is redirect-first for every configured outcome, while hosted SDK OPay can fail without an additional step.

Use the guide for the integration you are testing instead of assuming that an identical value produces an identical response shape.

Rules Shared by Both Workflows

  • Authenticate with sandbox credentials and keep production credentials out of test requests.
  • Use a new externalReference for every attempt on your account.
  • Use a supported currency and payment method, include all required fields, and respect the limits on your sandbox account. Test values do not bypass these requirements.
  • Treat successful as the only fulfilled state.
  • Verify the final transaction status through a webhook or transaction-status endpoint before providing value.
  • Never send real money or real card details to a sandbox flow.