Escrow Safe Trade is live: protect your next high-value deal Learn more
ProductsPayment links & checkoutM-Pesa, cards, invoices, split payoutsEscrow Safe TradeMilestone and release-based escrowWallets & P2PPersonal and business walletsChama, Lengo & DeniGroup savings, goals and IOUsBusiness toolkitAccounting, payroll, POS, ticketingBulk payments & payrollPay many people in one uploadSubscriptions & billingRecurring plans and renewalsRent, loans & donationsCollections and campaignsAll products
SolutionsMerchantsBuyersChama groupsBusiness solutionsIndustries
Pricing
DevelopersDeveloper overviewQuickstart, auth and sandboxREST APIsCheckout, invoices and requestsWebhooksSigned, real-time eventsWallet-as-a-ServiceVirtual sub-accountsDocumentationGuides and API reference
Security
CompanyAbout usCareersPartnersBlogHelp centreContact us
Log in Get started Talk to sales
Wallets & money movement

Wallets & Conversion

Hold balances in several currencies and convert between your own wallets using a quoted rate.

Base URLhttps://api.paysasa.com/api/v1Authx-api-keyFormatJSON

Users can hold multiple currency wallets per owner. Convert between your own wallets with a quoted FX rate and platform conversion fee.

GET/wallets/convert/quote#

Query: from_wallet_id, to_wallet_id, amount (minor units in source currency).

POST/wallets/convert#
JavaScript
const res = await fetch("https://api.paysasa.com/api/v1/wallets/convert", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json",
    "X-Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    from_wallet_id: "wal_kes_...",
    to_wallet_id: "wal_usd_...",
    amount: 10000,
    pin: "1234",
  }),
});
POST/wallets#

Create an additional currency wallet: { currency: "USD", wallet_type: "individual" }. Currency must be enabled.