One POST request. Upload a photo or scan of any receipt or invoice — get back structured JSON in under 2 seconds. No templates. No training. Just results.
No subscriptions. No monthly fees. Buy a credit pack — each receipt parse uses one credit. Credits never expire.
# Base64 encode your image then POST
curl -X POST \
https://receiptiq.dev/api/parse \
-H "x-api-key: riq_live_your_key" \
-H "Content-Type: application/json" \
-d '{"image":"<base64>","media_type":"image/jpeg"}'
const toBase64 = file => new Promise(res => {
const r = new FileReader();
r.onload = e => res(e.target.result.split(',')[1]);
r.readAsDataURL(file);
});
const data = await toBase64(file);
const res = await fetch("https://receiptiq.dev/api/parse", {
method: "POST",
headers: {
"x-api-key": "riq_live_your_key",
"Content-Type": "application/json"
},
body: JSON.stringify({ image: data, media_type: file.type })
});
const { data: receipt } = await res.json();
{
"success": true,
"data": {
"merchant": {
"name": "Blue Bottle Coffee",
"address": "300 Webster St, Oakland",
"phone": null
},
"transaction": {
"date": "2024-03-04",
"payment_method": "Visa ****4821",
"receipt_number": "#4892"
},
"items": [{
"description": "Gibraltar",
"quantity": 1,
"unit_price": 4.50,
"total": 4.50
}],
"totals": {
"subtotal": 4.50,
"tax": 0.39,
"tip": null,
"total": 4.89
},
"currency": "USD",
"category": "restaurant"
},
"meta": {
"processing_time_ms": 1842,
"credits_remaining": 499
}
}