Link Search Menu Expand Document

Receipt created webhook

Triggered as a result of a basket being sent successfully to Spaaza and a digital receipt being subsequently created in Spaaza.

Contents

Payload version

The shape of the transaction payload delivered to generic (https) webhooks depends on the webhook_config_payload_spaaza_api_version configured for the webhook:

  • Version > 1.4.8: The modern payload format is used. The shopper is represented in the user object, which includes fields such as member_number, opt_in_programme, and loyalty_status.
  • Version <= 1.4.8: The legacy payload format is used. The shopper is represented in the shopper object, which has a different structure.

New webhook configurations should use a payload version greater than 1.4.8 to receive the modern format.

Modern payload (version > 1.4.8)

The object returned for webhook configurations with webhook_config_payload_spaaza_api_version greater than 1.4.8 is as follows:

{
    "id": 123456,
    "chain_id": 1740,
    "retailer_basket_code": "0000100101000000102",
    "timestamp": "2026-01-15T11:56:04Z",
    "type": "in_store",
    "quantity": 1,
    "country_code": "ZA",
    "fx_rate": 1,
    "currency": {
        "currency_id": 2,
        "currency_code": "EUR",
        "currency_name_en": "Euro",
        "currency_symbol": "\u20ac"
    },
    "subtotal": 1000,
    "subtotal_converted": 1000,
    "total_value": 1000,
    "total_converted": 1000,
    "shipping_charge": 0,
    "shipping_charge_converted": 0,
    "notes": "",
    "tax_lines": [],
    "payment_methods": [
        {
            "payment_method": "Cash EUR",
            "payment_amount": 1000,
            "payment_amount_converted": null
        }
    ],
    "chain": {
        "id": 1740,
        "name": "ACME",
        "email": "support@acme.co.za",
        "logo_url": "https://s3-eu-west-1.amazonaws.com/receipts-chain-logo/1000.png",
        "website_url": "",
        "currency": "South African Rand",
        "currency_code": "ZAR",
        "currency_symbol": "R",
        "business": {
            "id": 0,
            "name": "ACME Cape Town",
            "address": {
                "address_1": "1 Table Mountain Drive",
                "address_2": "",
                "address_3": "",
                "towncity": "Cape Town",
                "postal_code": "",
                "country_code": "ZA",
                "region": "",
                "location": {
                    "lat": -33.962822,
                    "lon": 18.409841
                },
                "google_place_id": ""
            },
            "phone_number": "+272189777777",
            "format": "",
            "email": "table-mountain@acme.co.za",
            "branch_code": "CPT-01",
            "website_url": "",
            "review_url": ""
        },
        "receipts_service_active": true,
        "password_reset_url": ""
    },
    "employee": null,
    "user": {
        "id": 897654,
        "user_id": 897654,
        "first_name": "John",
        "last_name": "Smith",
        "username": "john.smith@email.com",
        "country_code": "ZA",
        "gender": "M",
        "birthday": "1982-05-30",
        "signup_channel": "",
        "auxiliary_identifier": "",
        "authentication_point_identifier": "",
        "authentication_point": {
            "is_multi": false,
            "id": 0
        },
        "mailing_list": {
            "mailing_list_subscribed": true,
            "printed_mailing_list_subscribed": false,
            "sms_opted_in": false
        },
        "opt_in_programme": {
            "programme_opted_in": true,
            "join_date": "2025-06-15T00:00:00Z"
        },
        "obfuscated": false,
        "is_influencer": false,
        "member_number": {
            "type": "regular",
            "code": "897654"
        },
        "language": "",
        "registered": true,
        "is_employee": false,
        "loyalty_status": {
            "campaign_id": 0,
            "name": "",
            "description": "",
            "loyalty_level_id": 0,
            "points_balance_current": 0,
            "monetary_balance_current": 0,
            "points_to_proceed_next_level": 0,
            "points_to_remain_current_level": 0,
            "last_review_date": "",
            "next_review_date": "",
            "date_reached": ""
        },
        "phone_number": "",
        "home_store": {
            "home_store_id": null,
            "home_store_name": "",
            "home_store_owner_code": ""
        },
        "push_notification_subscription": {
            "subscribed": false,
            "subscriptions": []
        }
    },
    "line_items": [
        {
            "product_id": 0,
            "barcode": "2000046371025",
            "original_retailer_item_code": "",
            "basket_item_subtotal": 1000,
            "return_item": false,
            "return_transaction_id": 0,
            "retailer_product_code": "",
            "sku": "2000046371025",
            "name": "ACME shorts",
            "description": "the best pair you can buy",
            "cost_price": 0,
            "original_price": 1000,
            "original_price_converted": 1000,
            "sale_price": 1000,
            "sale_price_converted": 1000,
            "quantity": 1,
            "quantity_unit": "",
            "metadata": {
                "brand": "",
                "color": "blue",
                "size": "L",
                "image_url": "",
                "category": "",
                "webshop_url": ""
            },
            "product": null,
            "purchase_progress_distribution": [],
            "voucher_distribution": []
        }
    ],
    "monetary_wallet": {
        "contributions": [
            {
                "amount": 100,
                "campaign_title": "Earn big on every purchase"
            }
        ],
        "total": 1640,
        "title": "ACME Bucks"
    },
    "entries_wallet": null,
    "points_wallet": {
        "contributions": [],
        "total": 0,
        "title": ""
    },
    "basket_vouchers": [
        {
            "campaign_title": "Acme Loyalty Campaign",
            "campaign_id": 1805,
            "campaign_title_localised": "Acme Loyalty Campaign",
            "voucher_text": "5% off for Acme customers",
            "task_id": 0,
            "amount": 22.5,
            "discount_ratio": 0,
            "type": "basket",
            "description": "",
            "notes": "",
            "title": "",
            "image_url": ""
        }
    ],
    "honour_vouchers": []
}

Legacy payload (version <= 1.4.8)

For webhook configurations with webhook_config_payload_spaaza_api_version of 1.4.8 or lower, the legacy payload format is used. The main difference is that the shopper is represented in a shopper object instead of user, and some fields present in the modern format are not included.

{
    "id": 123456,
    "retailer_basket_code": "0000100101000000102",
    "fx_rate": 1,
    "currency": {
        "currency_id": 2,
        "currency_code": "EUR",
        "currency_name_en": "Euro",
        "currency_symbol": "\u20ac"
    },
    "timestamp": "2026-01-15T11:56:04Z",
    "type": "in_store",
    "quantity": 1,
    "subtotal": 1000,
    "subtotal_converted": 1000,
    "total_value": 1000,
    "total_converted": 1000,
    "shipping_charge": 0,
    "shipping_charge_converted": 0,
    "payment_methods": [
        {
            "payment_method": "Cash EUR",
            "payment_amount": 1000,
            "payment_amount_converted": null
        }
    ],
    "line_items": [
        {
            "product_id": 0,
            "barcode": "2000046371025",
            "sku": "2000046371025",
            "name": "ACME shorts",
            "description": "the best pair you can buy",
            "original_price": 1000,
            "original_price_converted": 1000,
            "quantity": 1,
            "sale_price": 1000,
            "sale_price_converted": 1000,
            "metadata": {
                "brand": "",
                "color": "blue",
                "size": "L",
                "image_url": "",
                "category": "",
                "webshop_url": ""
            }
        }
    ],
    "tax_lines": [],
    "chain": {
        "id": 1740,
        "name": "ACME",
        "email": "support@acme.co.za",
        "logo_url": "https://s3-eu-west-1.amazonaws.com/receipts-chain-logo/1000.png",
        "website_url": "",
        "currency": "South African Rand",
        "currency_symbol": "R",
        "business": {
            "id": 0,
            "name": "ACME Cape Town",
            "address": {
                "address_1": "1 Table Mountain Drive",
                "address_2": "",
                "address_3": "",
                "towncity": "Cape Town",
                "postal_code": "",
                "country_code": "ZA",
                "location": {
                    "lat": -33.962822,
                    "lon": 18.409841
                }
            },
            "phone_number": "+272189777777",
            "email": "table-mountain@acme.co.za",
            "website_url": ""
        },
        "receipts_service_active": true
    },
    "shopper": {
        "id": 897654,
        "user_name": "",
        "entity_code": "",
        "first_name": "John",
        "last_name": "Smith",
        "country_code": "",
        "gender": "M",
        "birthday": "1982-05-30",
        "total_points_balance": 0,
        "email": "john.smith@email.com",
        "opted_in": false,
        "mailing_list_subscribed": true
    },
    "monetary_wallet": {
        "contributions": [
            {
                "amount": 100,
                "campaign_title": "Earn big on every purchase"
            }
        ],
        "total": 1640,
        "title": "ACME Bucks"
    },
    "points_wallet": {
        "contributions": [],
        "total": 0,
        "title": ""
    },
    "basket_vouchers": [
        {
            "campaign_title": "Acme Loyalty Campaign",
            "campaign_id": 1805,
            "campaign_title_localised": "Acme Loyalty Campaign",
            "voucher_text": "5% off for Acme customers",
            "task_id": 0,
            "amount": 22.5,
            "discount_ratio": 0,
            "type": "basket",
            "description": "",
            "notes": "",
            "title": "",
            "image_url": ""
        }
    ]
}