Skip to main content

MoMo payments

You can make MoMo payments in Vietnam in Vietnamese dongs (VND).

No recurring payments are available.

Required sender parameters

Check all the required parameters

NameTypeDescription
participant_detailsobjectInformation on the participants
  senderobjectSender details
    full_namestringSender's full name (3–50 characters)
    emailstringSender's email address (up to 64 characters before @)
    documentstringVNID (9 to 13 digits)
    msisdnstringPhone number (up to 15 characters, without + )

Making a payment

  1. Create a session using the session/create method.

    Alternatively, you can use the session/init/payment method. In this case, specify all the payment parameters right away and skip the next step.

  2. Send a session/start/payment request. Specify the following parameters:

    • country_ewallet_momo in internet_banking.type
    • country_iso2 in internet_banking.country_ewallet
    • the payer's full name, email, msisdn, and document in participant_details.sender
      Optionally, you can add a return URL to redirect the customer back after the payment (payment_options.return_url).
    Request example
    curl -X POST \
    https://demo.smart-glocal.com/api/v1/session/start/payment \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "session_id": "ps_5666",
    "payment_details": {
    "type": "internet_banking",
    "internet_banking": {
    "type": "country_ewallet_momo",
    "country_ewallet": {
    "country_iso2": "VN"
    }
    }
    },
    "amount_details": {
    "amount": 100000,
    "currency": "VND"
    },
    "customer": {
    "reference": "qwiqwi"
    },
    "participant_details": {
    "sender": {
    "full_name": "Name Surname",
    "email": "email@example.com",
    "document": "12333315123",
    "msisdn": "12345678901"
    }
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com/",
    "recurrent": false
    }
    }'
    Response example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "status": "ok",
    "session": {
    "id": "ps_5666",
    "status": "in_progress",
    "created_at": "2025-12-04T19:28:58.077701Z",
    "updated_at": "2025-12-04T19:29:23.216667Z",
    "acquiring_payments": [{
    "id": "pm_566184419",
    "status": "in_progress",
    "created_at": "2025-12-04T19:29:23.217101Z",
    "customer": {
    "reference": "qwiqwi"
    },
    "payment_details": {
    "type": "internet_banking",
    "internet_banking": {
    "type": "country_ewallet_momo",
    "country_ewallet": {
    "country_iso2": "VN"
    }
    }
    },
    "amount_details": {
    "amount": 100000,
    "currency": "VND"
    },
    "participant_details": {
    "sender": {
    "full_name": "Name Surname",
    "email": "email@example.com",
    "document": "12333315123",
    "msisdn": "12345678901"
    }
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com/",
    "recurrent": false
    }
    }]
    }
    }'
  3. Wait for a ready_to_confirm webhook. When you receive it, it means that Smart Glocal is ready to make the payment and is waiting for your confirmation.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "ready_to_confirm",
    "status": "ok",
    "session": {
    "id": "ps_5666",
    "status": "in_progress",
    "created_at": "2025-12-04T19:28:58.077701Z",
    "updated_at": "2025-12-04T19:29:23.216667Z",
    "acquiring_payments": [{
    "id": "pm_12354",
    "status": "in_progress",
    "created_at": "2025-12-04T19:29:23.217101Z",
    "customer": {
    "reference": "qwiqwi"
    },
    "payment_details": {
    "type": "internet_banking",
    "internet_banking": {
    "type": "country_ewallet_momo",
    "country_ewallet": {
    "country_iso2": "VN"
    }
    }
    },
    "amount_details": {
    "amount": 100000,
    "currency": "VND"
    },
    "participant_details": {
    "sender": {
    "full_name": "Name Surname",
    "email": "email@example.com",
    "document": "12333315123",
    "msisdn": "12345678901"
    }
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com/",
    "recurrent": false
    }
    }],
    "actions": {
    "confirm": "2025-12-04T07:48:28.275964Z"
    }
    }
    }'
  4. Send a session/confirm request to confirm the operation or a session/cancel request to cancel it.

    Request example
    curl -X POST \
    https://demo.smart-glocal.com/api/v1/session/confirm \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "session_id":"ps_5666"
    }'
  5. Wait for an action_required webhook. The customer_interaction.redirect.url parameter contains a deeplink to a QR code.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "action_required",
    "status": "ok",
    "session": {
    "id": "ps_5666",
    "status": "in_progress",
    "created_at": "2025-12-04T07:48:28.296138Z",
    "updated_at": "2025-12-04T07:48:28.958891Z",
    "acquiring_payments": [{
    "id": "pm_12354",
    "status": "pending",
    "created_at": "2025-12-04T07:48:28.296138Z",
    "customer": {
    "reference": "qwiqwi"
    },
    "participant_details": {
    "sender": {
    "full_name": "Name Surname",
    "email": "email@example.com",
    "document": "12333315123",
    "msisdn": "12345678901"
    }
    },
    "payment_details": {
    "type": "internet_banking",
    "internet_banking": {
    "type": "country_ewallet_momo",
    "country_ewallet": {
    "country_iso2": "VN"
    }
    }
    },
    "amount_details": {
    "amount": 100000,
    "currency": "VND"
    },
    "customer_interaction": {
    "type": "redirect",
    "redirect": {
    "url": "https://redirect-url-example.com/12345",
    "base_url": "https://redirect-url-example.com/12345",
    "method": "GET",
    "params": {}
    }
    },
    "metadata": {
    "key": "value"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com/",
    "recurrent": false
    }
    }],
    "actions": {
    "confirm": "2025-12-04T07:48:28.327146Z"
    }
    }
    }'

    5.1 The user redirected by the link from the webhook lands on a payment page.

    5.2 The user selects a payment method and the QR code appears.

    5.3 After the user completes the payment, a message on successful payment appears.

  6. After the customer makes the payment, you will receive a payment_finished webhook containing the payment result from Smart Glocal. The succeeded status indicates a successful payment.

    Webhook example
    curl -X POST \
    https://partner.com \
    -H 'content-type: application/json' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "type": "payment_finished",
    "status": "ok",
    "session": {
    "id": "ps_5666",
    "status": "accepted",
    "created_at": "2025-12-04T07:48:28.275964Z",
    "updated_at": "2025-12-04T07:49:43.022068Z",
    "acquiring_payments": [{
    "id": "pm_12354",
    "status": "succeeded",
    "created_at": "2025-12-04T07:48:28.296138Z",
    "finished_at": "2025-12-04T07:49:43.002789Z",
    "customer": {
    "reference": "qwiqwi"
    },
    "participant_details": {
    "sender": {
    "full_name": "Name Surname",
    "email": "email@example.com",
    "document": "12333315123",
    "msisdn": "12345678901"
    }
    },
    "payment_details": {
    "type": "internet_banking",
    "internet_banking": {
    "type": "country_ewallet_momo",
    "country_ewallet": {
    "country_iso2": "VN"
    }
    }
    },
    "amount_details": {
    "amount": 100000,
    "currency": "VND"
    },
    "metadata": {
    "key": "value"
    },
    "payment_options": {
    "return_url": "https://smart-glocal.com",
    "recurrent": false
    }
    }],
    "actions": {
    "confirm": "2025-12-04T07:48:28.327146Z",
    "capture": "2025-12-04T07:49:42.965552Z"
    }
    }
    }'

Sequence diagram