GET /currencies. Internal transfers to other PeerPesa users are always free and settle instantly. Use POST /wallet/send to execute a send, or POST /wallet/send/estimate to preview fees and net amounts before committing.
- On-chain to address
- Internal to PeerPesa user
Sending to an external address requires a valid
address and, for some networks, a memo. For Bitcoin, you can also send over Lightning using an invoice or a Lightning address.Estimate a Send
Before executing a send, you can preview the network fee and net amount the recipient will receive. This is useful for on-chain sends where fees vary by network.Endpoint
POST /wallet/send/estimate
Request
Headers
Body Parameters
string
required
Asset symbol. For example:
USDC, XLM, BTC, CELO, USDT.string
required
Network code from GET /currencies. For example:
STELLAR, CELO, BITCOIN.string
required
Amount to send as a decimal string; must respect
min_withdraw and max_withdraw from GET /currencies.object
required
Response
string
Asset symbol.
string
Network code.
string
Amount you are sending.
object
Fee breakdown.
string
Amount the recipient receives after fees.
Example Request
Example Response
Execute a Send
Initiate a send from your wallet balance. The response is a wallet transaction object withstatus: pending or processing.
Endpoint
POST /wallet/send
Request
Headers
Body Parameters
string
required
Asset symbol. For example:
USDC, XLM, BTC.string
required
Network code from GET /currencies.
string
required
Amount to send as a decimal string.
object
required
string
Your own reference or ID for the transaction.
string
Optional memo or note for your records.
Response
A wallet transaction object.string
Unique transaction ID prefixed with
txn_.string
Always
send.string
One of
pending, processing, completed, failed, refunded.string
Asset symbol.
string
Network code.
string
Amount sent.
object
Fee breakdown.
string
Amount received after fees.
string|null
Your optional reference.
string|null
On-chain transaction hash;
null for internal transfers.string
ISO 8601 creation timestamp.
string
ISO 8601 last update timestamp.
Send to an On-chain Address
Follow these steps to send cryptocurrency to an external wallet address.1
Check supported coins and withdrawal limits
Call GET /currencies to fetch the latest
send_fees, min_withdraw, and max_withdraw for your chosen symbol and network. Only networks with status: active can be used.2
Estimate the fee
Call
POST /wallet/send/estimate with the same parameters you plan to use for the send so you know the exact fee and net amount before committing.3
Execute the send
Call
POST /wallet/send with the destination type set to address, the recipient address, and a memo if required. Save the returned id and poll GET /orders/{order_id} or listen to webhooks to track status.- Stellar USDC with memo
- CELO USDC
Send via Lightning
For Bitcoin (symbol: BTC, network: BITCOIN), you can send over the Lightning Network by passing a Lightning destination.
Body Parameters
object
required
Example Request
If you provide both
invoice and lightning_address, the API prefers the invoice.Send to a PeerPesa User
Transfer crypto instantly and fee-free to another PeerPesa account.Body Parameters
object
required
Example Request
Track a Send
After creating a send, track its status by polling or listening to webhooks.1
Poll the transaction
Use GET /orders/{order_id} with the
id from the send response.2
Listen to webhooks
Configure your webhook endpoint to receive transaction events:
transaction.processing: the send is being broadcast to the networktransaction.completed: confirmations received; the send is finaltransaction.failed: the send could not complete; funds remain in your balance
Error Codes
All errors are returned in this shape:
