Skip to main content

Mobile money transfer

Last updated: 2026-07-17

Mobile money transfer is an inbound-only payment method. Use it when the account catalog makes the method available for the selected market, then discover a transfer rail with the pay-in operator discovery operation.

It is separate from standard mobile money: the selected operator is a transfer rail code, not the customer's wallet operator.

Hosted pay-in

  1. Call pay-in operator discovery with paymentMethod=PAYMENT_METHOD_MOBILE_MONEY_TRANSFER and the selected request context.
  2. Initialize the pay-in with the same market, payment method, and one returned rail code in mobileMoneyOperator.
  3. Redirect the customer only when paymentOrder.paymentUrl is returned.
  4. Reconcile the payment after the hosted step through a verified webhook or a payment read.

Hosted initialization does not send mobileMoneyTransferDetails; the customer completes the method-specific step on the hosted page.

Direct pay-in

  1. Discover the transfer rail as described above.
  2. Create the pay-in with paymentMethod=PAYMENT_METHOD_MOBILE_MONEY_TRANSFER and exactly one mobileMoneyTransferDetails block.
  3. Send the returned rail code as mobileMoneyTransferDetails.operator and the customer's wallet number as mobileMoneyTransferDetails.mobileNumber.
  4. Render returned instructions in order. Use each instruction's label for display, value as the customer-facing value, and copyable to decide whether to offer a copy action.
  5. Show displayMessage and expiresAt when present, then reconcile the payment status independently of instruction display.

Do not combine mobile-money-transfer details with bank, standard mobile-money, or test detail blocks. Mobile money transfer is not available for payouts.

API reference