Skip to main content
A payin collects money from a customer’s Mobile Money wallet into your wallet. You ask the customer for their network and phone number in your own interface, then create the payin: KryptaPay charges the wallet directly.

1. Create the payin

Save the reference with your order. A 201 means the payin was started, not that the customer has paid.
network and customer.msisdn are required. The number accepts local or international format (97000000, 22997000000 or +22997000000).
Rules to know
  • Minimum Mobile Money amount: 300 (700 for NGN).
  • XOF, XAF and NGN amounts must be whole numbers.
  • expiresInSec ranges from 60 to 86400 seconds.
  • Check List available networks before showing networks to customers: operators are occasionally under maintenance (network_unavailable).

2. The customer approves

What the customer does next depends on the operator. Read the create response to know which case you’re in: The payin stays PENDING or PROCESSING meanwhile.

Networks that need a code

Some operators — currently Orange Money Côte d’Ivoire (ORANGE_CI) and Burkina Faso (ORANGE_BF) — don’t send a prompt. Instead, the customer generates a one-time code on their phone. In that case the create response has otpRequired: true:
  1. Show otpInstructions to the customer and ask for the code. The text is in French, written for the customer, so show it as-is.
  2. Send it with Confirm a payin with a code:
  3. The payin moves to PROCESSING; continue with the webhook below.
If you get otp_failed, the code was wrong or the operator refused the payment: let the customer generate a new code and try again.
Sandbox payins complete immediately and never ask for a code.

3. Receive the webhook

When the payin settles you receive PAYIN_RECEIVED or PAYIN_FAILED:
See Webhooks to verify the signature.

4. Confirm before fulfilling

Before you ship goods or credit a user, confirm the status from the API:
Fulfil only when status is COMPLETED, and only once per reference — webhooks can be delivered more than once.

Statuses

Checklist

  • Store the reference with your order before redirecting the customer.
  • Fulfil from the webhook or a status check, never from the redirect alone.
  • Make your fulfilment idempotent per reference.
  • Handle FAILED by letting the customer retry, possibly on another network.