Skip to main content
Converting turns stablecoins into dalasi (GMD). You create a conversion, we give you an address and the exact amount to send, and once the money arrives we pay out the dalasi to your Modem Pay balance or straight to a Wave or Afrimoney wallet. You can size a conversion either way:
  • By the dalasi you want, with gmd_amount: “I need 5,000 GMD, how much USDT do I send?”
  • By the stablecoin you have, with pay_amount: “I have 100 USDC, how much GMD do I get?”
Conversions work in live mode only. Use a live API key.

How it works

1

Create a conversion

Tell us the amount, the coin, the network and where the dalasi should go. We lock the rate and return a payment address.
2

Send the stablecoin

Send exactly pay_amount of pay_currency on network to pay_address within 10 minutes.
3

Receive the dalasi

As soon as the payment is confirmed, we credit gmd_amount to your balance or pay it to the mobile money wallet you chose.
Want to show a price before committing? Use the price estimate endpoint. It returns the same numbers without creating a payment address.

Create a conversion

POST /v1/minting/offramp Send either gmd_amount or pay_amount, not both.
number
The dalasi you want to receive. We work out how much stablecoin to send.
number
The stablecoin amount you will send, in USD (for example 100 for 100 USDT). We work out the dalasi you receive, after fees.
Minimums depend on the network: $25 on Tron and $5 on Arc, measured on the amount sent. Requests must also be worth at least 400 GMD. Anything smaller is rejected with a message stating the minimum.
string
default:"USDT"
The coin you’ll send: USDT or USDC.
string
default:"TRC20"
The network you’ll send on: TRC20 (Tron) or ARC. Arc supports USDC only. See supported coins and networks.
string
default:"modempay_balance"
Where the dalasi goes: modempay_balance or mobile_money.
object
Required when destination is mobile_money. The wallet to pay.
string
Where we send updates for this conversion. See Updates.
object
Only for resellers. See Resell conversions.

Example: you want 5,000 GMD

Example: you have 100 USDC on Arc

The payment request is for exactly 100 USDC, and gmd_amount in the response tells you the dalasi you’ll receive.

Example: pay the dalasi to a Wave wallet

Response

Statuses

Partial payments

A payer may send less than pay_amount, or split it across several transfers. You don’t lose anything:
  • Each transfer is credited as it arrives, in proportion. If half of pay_amount arrives, you get half of gmd_amount.
  • When the rest arrives, you get the remainder, so the total is exactly gmd_amount.
  • You never receive more than gmd_amount for a conversion.
Follow progress with status and actually_paid, or wait for the updates we send.
Send the payment within 10 minutes. Money that arrives after the conversion expires isn’t converted automatically. Contact support with the reference and it will be resolved manually.

Look up a conversion

GET /v1/minting/ramps/{id}
cURL
Returns the same object as when you created it, with the latest status, actually_paid and a timeline in events.

Updates (webhooks)

When money arrives, we send an update to your callback_url (and your dashboard webhook). The event name follows the status: The payload is the conversion object shown above. You can get several updates for one conversion as transfers come in, so match on id or reference and treat actually_paid as the running total. Expiry doesn’t send an update; look the conversion up if you need to confirm it. To check an update really came from Modem Pay, see the Webhooks guide.

If a mobile money payout fails

When destination is mobile_money, the dalasi first lands in your Modem Pay balance and is then paid to the wallet. If the wallet payout fails (wrong number, provider outage), the dalasi stays in your balance. It’s never lost, and you can pay it out again from the dashboard or the Payouts API.

Good to know

  • The rate is locked when you create the conversion and doesn’t change while it waits for payment.
  • Fees are included in pay_amount. The fee field shows how much of it is Modem Pay’s: a percentage (capped at $2), plus the network fee on Tron.
  • With pay_amount, you receive the largest whole number of dalasi that amount covers after fees. Any fraction under 1 GMD isn’t credited.
  • Network values are case-insensitive: ARC, arc and Arc all work.