Skip to main content
Use the PeerPesa Send API to move crypto from your wallet balance to an external blockchain address or to another PeerPesa user. On-chain sends are irreversible and carry network fees from 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.
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.
All send examples use the Sandbox base URL:
Send production requests to:

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 with status: 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.
When sending to a Stellar exchange or custodial wallet, the memo field is required. Omitting it can result in lost funds because these services use a single shared address to credit accounts by memo.

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 network
  • transaction.completed: confirmations received; the send is final
  • transaction.failed: the send could not complete; funds remain in your balance

Error Codes

All errors are returned in this shape:

On-chain Irreversibility Warning

On-chain blockchain transactions are irreversible. Always verify the destination address and, for Stellar, include a memo when required. PeerPesa cannot recover funds sent to the wrong address.