Mini apps
Payment verification
By default a mini-app payment confirms with one tap in the wallet. You can require a second step — the customer’s wallet PIN, or their account password when they have no PIN — before money moves. The wallet handles the prompt and mMoney verifies the credential server-side; your code does not change.
Choosing a threshold
On your dashboard’s Mini Apps page, set Payment verification to one of:
| Setting | Behaviour |
|---|---|
| Off | One-tap payments (the default). |
| Every payment | The customer verifies on every payment. |
| Above an amount | Verification only when the invoice is at or above the amount (minimum BBD 20.00). |
Pick “Every payment” for high-value or resellable goods (vouchers, crypto, gift cards). Keep one-tap for low-value, high-frequency purchases where friction costs conversion.
What your mini-app sees
Nothing new. MMoneyMiniApp.requestPayment(...) behaves exactly as on
Payments: the wallet inserts the
verification sheet between its confirmation dialog and the debit. The
promise still resolves on succeeded, and still rejects into your
catch with err.status set to cancelled (the customer dismissed
the confirmation or the verification sheet) or failed. That is
the same contract as the code sample on the Payments page. One new failure you
may observe: after repeated wrong entries the customer’s verification
locks for a few minutes and the payment rejects failed with a
message saying so.
Enforcement is server-side
The threshold is enforced by the pay endpoint, not the wallet UI — a
pay request arriving without a valid credential is refused with
step_up_required, so the verification cannot be bypassed by a
tampered client. Wallet builds older than the verification feature
cannot pay a verification-enabled mini-app; set Min app version on
your manifest if you enable this while old builds are still common.