Documentation
Everything you need to integrate ReceiptorX into your stack.
ReceiptorX API
Submit a receipt image and expected payment details — get a definitive valid or invalid result in milliseconds.
Base URL
https://receiptor-x.onrender.com
Authentication
All requests require a Bearer token in the Authorization header. Generate keys from the API Keys page.
HTTP Header
Authorization: Bearer rcx_live_your_key_here
Never include your API key in client-side code. Use environment variables on your server.
Verify Receipt
POST
/api/verify
Submit a receipt image (base64 or URL) with expected payment details. The AI checks every field and returns a decision.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
image | string | required | Base64 data URL or public image URL of the receipt |
config.expectedRecipientName | string | required | Exact recipient name as it should appear |
config.expectedBankName | string | required | Bank name (e.g. GTBank) |
config.expectedAmount | number | required | Exact expected amount |
config.currency | string | optional | Currency code. Default: NGN |
config.allowedNameVariations | string[] | optional | Acceptable alternative spellings |
config.maxDateAgeDays | number | optional | Max receipt age in days. Default: 1 |
config.timezone | string | optional | IANA timezone. Default: Africa/Lagos |
Code Examples
cURL
curl -X POST https://receiptor-x.onrender.com/api/verify \ -H "Authorization: Bearer rcx_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "image": "data:image/jpeg;base64,/9j/4AAQ...", "config": { "expectedRecipientName": "Ayo David", "expectedBankName": "GTBank", "expectedAmount": 5000, "currency": "NGN", "maxDateAgeDays": 1, "timezone": "Africa/Lagos" } }'
Response — Valid
JSON — 200 OK
{ "valid": true, "reason": "All checks passed.", "detected": { "bank": "GTBank", "amount": 5000, "recipient": "Ayo David", "date": "2026-06-21" } }
Error Codes
| Status | Meaning | Description |
|---|---|---|
200 | OK | Request processed — check valid field. |
400 | Bad Request | Missing or invalid fields. |
401 | Unauthorized | Invalid or missing API key. |
403 | Forbidden | API key has been revoked. |
429 | Rate Limited | 30 verifications / minute exceeded. |
502 | Bad Gateway | AI engine failed — retry with backoff. |
500 | Server Error | Internal error. |
Rate Limits
30
requests / minute
200
global / 15 min
10 MB
max body size
Check the
Retry-After header when rate-limited for the exact wait time in seconds.
Health Check
cURL
curl https://receiptor-x.onrender.com/health
JSON — 200 OK
{ "status": "ok", "service": "ReceiptorX" }