Process tickets using Easypromos AI

Upload receipts and get structured deterministic JSON back

You only need a Easypromos account with an API key

Features
  • Images or PDF input
  • Deterministic JSON Output
  • Webhook ready
  • From 0.02 USD per validation
  • Get the JSON in less than 8 seconds in average

Flow

Submit an image or PDF receipt and 1) Get an event that you can poll or 2) Send us a webhook url and then 3) Receive the structured AI JSON output.

Authentication

Bearer token per Easypromos account. Start with 50 trial credits in the panel, then buy more when you need them. From 0.02 USD per validation.

Endpoints

POST /v2/ocr/tickets
GET /v2/ocr/events/{event_id}

API examples

Poll or receive a webhook

Example 1

Upload and poll the event

curl -X POST "https://api.easypromosapp.com/v2/ocr/tickets" \
  -H "Authorization: Bearer $TOKEN" \
  -F "ticket=@receipt.jpg"

Upload response with the generated event_id:

{
    "status": "ok",
    "event_id": 987654,
    "created_at": "2026-04-08T09:30:00Z"
}

Polling request:

curl -X GET "https://api.easypromosapp.com/v2/ocr/events/987654" \
  -H "Authorization: Bearer $TOKEN"

Finished response:

{
    "status": "finished",
    "event_id": 987654,
    "finished_status": "ok",
    "result": {
        "header": {
            "store_name": "CLAREL",
            "store_address": "AV PRIMERO DE JUNIO 66",
            "tax_id": "A43227628",
            "phone": "+34912345678",
            "date": "2025-09-24",
            "time": "20:08",
            "receipt_number": "00309139",
            "currency": "EUR",
            "city": "Venta de Banos",
            "postal_code": "34200",
            "country": "Spain",
            "country_code": "ES",
            "timezone": "Europe/Madrid",
            "utc_date_time": "2025-09-24T20:08:00+02:00"
        },
        "line_items": [
            {
                "article": "SERUM REVITALIFT LAS",
                "sku": "171752",
                "quantity": 1,
                "total": 24.19
            },
            {
                "article": "CREMA REVITALIF LASE",
                "sku": "155687",
                "quantity": 1,
                "total": 22.09
            },
            {
                "article": "DETER MAQU CAPSULA O",
                "sku": "308872",
                "quantity": 1,
                "total": 9.99
            },
            {
                "article": "ESPUMA PERFECT VOLUM",
                "sku": "290794",
                "quantity": 1,
                "total": 5.49
            },
            {
                "article": "LACA PERFECT VOLUMEN",
                "sku": "290790",
                "quantity": 1,
                "total": 5.29
            }
        ],
        "footer": {
            "total": 37.87
        },
        "controls": {
            "handwritten": 0,
            "text_quality": 95
        }
    },
    "processed_at": "2026-04-08 09:30:18"
}

Example 2

Upload and receive a webhook

curl -X POST "https://api.easypromosapp.com/v2/ocr/tickets" \
  -H "Authorization: Bearer $TOKEN" \
  -F "ticket=@receipt.jpg" \
  -F "webhook_url=https://your-app.example/webhooks/easypromos" \
  -F "webhook_key=your-shared-secret"

Webhook payload sent by Easypromos when processing finishes:

{
    "event_id": 987654,
    "status": "finished",
    "finished_status": "ok",
    "result": {
        "header": {
            "store_name": "CLAREL",
            "store_address": "AV PRIMERO DE JUNIO 66",
            "tax_id": "A43227628",
            "phone": "+34912345678",
            "date": "2025-09-24",
            "time": "20:08",
            "receipt_number": "00309139",
            "currency": "EUR",
            "city": "Venta de Banos",
            "postal_code": "34200",
            "country": "Spain",
            "country_code": "ES",
            "timezone": "Europe/Madrid",
            "utc_date_time": "2025-09-24T20:08:00+02:00"
        },
        "line_items": [
            {
                "article": "SERUM REVITALIFT LAS",
                "sku": "171752",
                "quantity": 1,
                "total": 24.19
            },
            {
                "article": "CREMA REVITALIF LASE",
                "sku": "155687",
                "quantity": 1,
                "total": 22.09
            },
            {
                "article": "DETER MAQU CAPSULA O",
                "sku": "308872",
                "quantity": 1,
                "total": 9.99
            },
            {
                "article": "ESPUMA PERFECT VOLUM",
                "sku": "290794",
                "quantity": 1,
                "total": 5.49
            },
            {
                "article": "LACA PERFECT VOLUMEN",
                "sku": "290790",
                "quantity": 1,
                "total": 5.29
            }
        ],
        "footer": {
            "total": 37.87
        },
        "controls": {
            "handwritten": 0,
            "text_quality": 95
        }
    },
    "processed_at": "2026-04-08 09:30:18"
}

Need the schema?

Review the cleaned ticket payload and the JSON Schema side by side.

The schema matches the same cleaned result used in Easypromos pre-moderation.