GetPaidly API
Business PlanAccess your business data programmatically. REST API for transactions, contacts, business summaries, and real-time webhooks.
Quick Start
Get up and running in 3 steps.
Get your API key
Send "api key" to GetPaidly on WhatsApp. You'll receive your unique API key instantly.
Make your first request
Try fetching your business summary:
curl -H "x-api-key: YOUR_API_KEY" \
https://api.getpaidly.com/v1/summaryExplore endpoints
Browse the full endpoint reference below to access transactions, contacts, and more.
Authentication
All API requests require an x-api-key header.
cURL
curl -H "x-api-key: YOUR_API_KEY" \
https://api.getpaidly.com/v1/summaryJavaScript (fetch)
const res = await fetch("https://api.getpaidly.com/v1/summary", {
headers: { "x-api-key": "YOUR_API_KEY" }
});
const data = await res.json();
console.log(data);Python (requests)
import requests
res = requests.get(
"https://api.getpaidly.com/v1/summary",
headers={"x-api-key": "YOUR_API_KEY"}
)
print(res.json())Endpoints
Read-only data endpoints. Base URL: https://api.getpaidly.com
Webhooks
Business PlanReceive real-time notifications when events happen in your GetPaidly account. Register an HTTPS endpoint and we'll POST event payloads to it.
Webhook Endpoints
Webhook Events
| Event | Description |
|---|---|
| transaction.created | A due was added (WhatsApp, dashboard, import or API). |
| transaction.updated | Amount, due date or notes changed. |
| transaction.paid | A due was marked paid. |
| transaction.deleted | A due was removed. |
| payment.received | A buyer paid through the hosted pay page or a payment link. |
| reminder.sent | A WhatsApp reminder went out for a due. |
| contact.created | A new contact was added. |
Payload Format
{
"event": "transaction.paid",
"timestamp": "2026-03-17T14: 30: 00Z",
"data": {
"id": "tx_uuid-here",
"contactName": "Ramesh Steel",
"amountPaise": 450000,
"paidAt": "2026-03-17T14: 30: 00Z",
"paymentRef": "UTR123456789"
}
}Security & Verification
Every webhook delivery includes an X-GetPaidly-Signature header containing an HMAC-SHA256 signature. Verify it by computing the HMAC of the raw request body using your webhook secret, then comparing with the header value.
// Node.js verification example
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
);
}Try It Live
Paste your API key and send a real request. Responses come directly from the GetPaidly API.
Rate Limits
If you exceed the limit, you will receive a 429 status code. Wait 60 seconds before retrying.
Error Codes
Standard HTTP status codes are used to indicate success or failure.
| Status | Meaning | Description |
|---|---|---|
| 400 | Bad Request | A field is missing or invalid. The error message says which. |
| 401 | Unauthorized | Invalid or missing API key. |
| 403 | Forbidden | Your plan does not include API access. Upgrade to Business. |
| 404 | Not Found | The resource does not exist or belongs to another business. |
| 409 | Conflict | The action does not apply to the current state, e.g. marking an already-paid due as paid. |
| 422 | Unprocessable | The request was valid but could not be completed, e.g. the transaction could not be created. |
| 429 | Too Many Requests | Rate limit exceeded (30 requests per minute). Wait and retry. |
Need a Custom API?
We're actively building new endpoints based on what our customers need. If you need write access, bulk operations, or any integration that would help your business - we'd love to hear from you.
Need help? Message us on WhatsApp
ā Back to GetPaidly