Skip to content
luftflow

MTN Mobile Money

Collect a payment the caller approves on their handset, with the sandbox keys to try it and the live ones to run it.

MTN Mobile Money

Collections through MTN's MoMo Open API. The caller approves the payment on
their own handset, so a collection is asked for and then checked; the
momo_collect template shows the whole conversation.

Sandbox

  1. Sign up at https://momodeveloper.mtn.com and subscribe to Collections.
    The primary key of that subscription is the subscription_key secret.
  2. Create an API user: POST /v1_0/apiuser with a fresh UUID as
    X-Reference-Id and { "providerCallbackHost": "luftflow.com" }. That
    UUID is the api_user secret.
  3. Create its key: POST /v1_0/apiuser/{api_user}/apikey. The apiKey in
    the answer is the api_key secret.

The sandbox takes EUR, its target environment is sandbox, and every number
but MTN's documented test numbers is approved at once.

Live

MTN issues production keys per country once the business is onboarded. The
host is https://proxy.momoapi.mtn.com, the target environment names the
operating company (mtnzambia, mtnuganda), and the currency is the
country's own. Each secret is the live subscription's, never the sandbox's.

Outcomes

  • Collect a payment answers 202 once the prompt is on the handset, 409
    when this session already asked, and 4xx/5xx when MTN refuses.
  • Check a payment reads SUCCESSFUL, PENDING or FAILED; MTN's own
    status field sits under body, since status at the top is the HTTP
    status.