Authentication

The WasaaPay Partner API uses API keys to authenticate requests. You can manage your API keys from the dashboard.

API Key Authentication

All API requests must include your API key in the X-API-Key header:

curl https://api.wasaapay.com/api/v1/partner/users \
-H "X-API-Key: sk_sandbox_abc123xyz"

API Key Types

TypePrefixEnvironmentUse Case
Sandboxsk_sandbox_TestingDevelopment and testing
Productionsk_live_ProductionReal transactions

Required Headers

Every API request must include these headers:

HeaderRequiredDescription
X-API-KeyYesYour API key
Content-TypeYes (for POST/PUT)Must be application/json
X-Idempotency-KeyYes (for POST)Unique identifier to prevent duplicate requests

Idempotency

All POST requests require an X-Idempotency-Key header. This prevents duplicate operations if you retry a request due to network issues.

// Generate a unique idempotency key for each operation
const idempotencyKey = `transfer_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
const response = await fetch('https://api.wasaapay.com/api/v1/partner/transfers', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'sk_sandbox_abc123xyz',
'X-Idempotency-Key': idempotencyKey,
},
body: JSON.stringify({
// ... request body
}),
});

If you send the same idempotency key twice, you'll receive the same response without creating a duplicate transaction.

Rate Limiting

API requests are rate limited to protect the service. Current limits:

TierRequests/MinuteRequests/Hour
Sandbox601,000
Production (Default)1205,000
Production (Enterprise)CustomCustom

Rate limit information is included in response headers:

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1705312800

IP Whitelisting

For production environments, you can restrict API access to specific IP addresses. Configure this in your dashboard under Partner Settings.

Error Responses

Authentication errors return appropriate HTTP status codes:

Status CodeError CodeDescription
401MISSING_API_KEYX-API-Key header is missing
401INVALID_API_KEYAPI key is invalid or revoked
403INSUFFICIENT_PERMISSIONSAPI key doesn't have required permissions
403IP_NOT_WHITELISTEDRequest IP is not in whitelist
429RATE_LIMIT_EXCEEDEDToo many requests

Best Practices

  • Keep API keys secure: Never expose API keys in client-side code or public repositories
  • Use environment variables: Store API keys in environment variables, not in code
  • Rotate keys regularly: Create new keys and revoke old ones periodically
  • Use separate keys: Use different keys for development and production
  • Enable IP whitelisting: Restrict production access to known IP addresses