Skip to main content
An offramp converts crypto on Stellar or Celo into local fiat and pays it to a saved beneficiary. You confirm an active offramp quote, PeerPesa returns a deposit address, and the fiat payout starts once your deposit confirms on-chain.

How an offramp works

1

Create a beneficiary

Save the recipient’s mobile money or bank details with POST /beneficiaries.
2

Generate a quote

Call POST /quotes with type: "offramp". The quote locks the rate and fee for 30 minutes.
3

Confirm the quote

Call POST /quotes/{id}/confirm with the beneficiary_id and refund_address.
4

Send the deposit

Send exactly deposit.amount of deposit.asset to deposit.address before deposit.deposit_by. On Stellar, include deposit.memo.
5

Track the payout

Poll GET /orders/{order_id} until the status is completed.
Stellar deposits must include the memo exactly as returned. Deposits without the correct memo cannot be matched to your transaction.

Confirm an offramp quote

POST /quotes/{id}/confirm Confirms an active offramp quote and creates the offramp transaction.
string
required
ID of an active offramp quote, for example qt_8f2k.... Expired or already confirmed quotes are rejected.
string
required
ID of the beneficiary who receives the fiat payout. Its currency and method must match the quote.
string
required
Wallet address on the quote’s network where PeerPesa returns funds if the payout fails.
string
Your own identifier for this transaction, returned on the transaction object.
Response
string
Starts as awaiting_deposit, then moves to processing and completed. See order details.
object
Fee breakdown carried over from the quote.
object
Where and how to send the crypto.
If the deposit does not arrive before deposit_by, the transaction becomes expired. Generate a new quote and create a new offramp.