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
Get started

Error Codes

How Paysasa signals failure: HTTP statuses for branching, plus machine-readable codes for verification and KYC problems.

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

Prefer HTTP status for branching. For verification / KYC failures use the machine code field when present (HTTP 403, not 422).

HTTP StatusMeaningCommon Cause
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
403ForbiddenAPI key scope, business unverified/suspended, or KYC required
404Not FoundResource doesn't exist or belongs to another account
409ConflictSession already paid/expired, or ownership transfer already open
422UnprocessableInsufficient balance or invalid business state
429Rate LimitedToo many requests or OTP attempts — back off and retry
500Server ErrorPaysasa server error — contact support
codeHTTPWhen
business_unverified403Business not verified (checkout/Lengo/WaaS/money ops)
business_suspended403Business suspended
owner_kyc_unverified403Owner KYC required for business money features
kyc_required_for_withdrawal403Personal withdrawal KYC gate
Response · JSON
// Typical error shape (code present on compliance gates)
{
  "error": "Business must be verified before checkout",
  "code": "business_unverified"
}