> ## Documentation Index
> Fetch the complete documentation index at: https://developers.loyaltylion.com/llms.txt
> Use this file to discover all available pages before exploring further.

# program_events/customer.receipt_declined

This webhook is triggered when a customer's uploaded receipt is declined. The
receipt may have been declined automatically or after manual review.

To subscribe to this webhook, your access token needs to contain the
`read_customers` scope.

## Payload

<ResponseField name="customer" type="object" required>
  Customer object with the same shape as the [Customers
  API](/api-reference/v2/resources/customers/list-customers#response-customers)
  response
</ResponseField>

<ResponseField name="receipt" type="object" required>
  <Expandable defaultOpen>
    <ResponseField name="id" type="number" required>
      The LoyaltyLion ID of the receipt
    </ResponseField>

    <ResponseField name="status" type="string" required>
      The status of the receipt. Will be `declined` for this event
    </ResponseField>

    <ResponseField name="retailer_name" type="string | null" required>
      The name of the retailer on the receipt
    </ResponseField>

    <ResponseField name="total_paid" type="number | null" required>
      The total amount paid, in the receipt's currency
    </ResponseField>

    <ResponseField name="tax_paid" type="number | null" required>
      The tax amount paid, in the receipt's currency
    </ResponseField>

    <ResponseField name="currency" type="string | null" required>
      The ISO 4217 currency code of the receipt
    </ResponseField>

    <ResponseField name="fraud_score" type="number | null" required>
      The fraud score of the receipt, from 0 to 100
    </ResponseField>

    <ResponseField name="duplicate" type="boolean | null" required>
      Whether the receipt was detected as a duplicate
    </ResponseField>

    <ResponseField name="retailer_receipt_date" type="string | null" required>
      The date on the receipt, as an ISO 8601 timestamp
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      When the receipt was uploaded, as an ISO 8601 timestamp
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="rule" type="object" required>
  <Expandable defaultOpen>
    <ResponseField name="id" type="number" required>
      The LoyaltyLion ID of the retail purchase rule
    </ResponseField>

    <ResponseField name="name" type="string" required>
      The name of the rule
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="declined_reason" type="string | null" required>
  The reason the receipt was declined, if available
</ResponseField>

<ResponseField name="upload_url" type="string" required>
  A URL the customer can use to re-upload a new receipt
</ResponseField>

## Example

```json Example theme={null}
{
  "id": "bff1bddb-6cd8-4c2c-9619-18744657053c",
  "topic": "program_events/customer.receipt_declined",
  "created_at": "2025-03-15T10:30:00.000Z",
  "payload": {
    "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
    "created_at": "2025-03-15T10:30:00.000Z",
    "kind": "customer.receipt_declined",
    "unique_until": null,
    "properties": {
      "customer": {
        "id": 6932,
        "merchant_id": "2134606599",
        "email": "jessica@example.com",
        "points_approved": 200,
        "points_pending": 0,
        "points_spent": 500,
        "rewards_claimed": 5,
        "rewards_used": 0,
        "properties": {
          "name": "Jessica White"
        },
        "metadata": {},
        "birthday": "1990-01-29",
        "blocked": false,
        "guest": false,
        "enrolled": true,
        "enrolled_at": "2015-12-10T03:00:00.000Z",
        "referral_id": null,
        "referred_by": null,
        "loyalty_tier_membership": null,
        "tier_eligibility": null,
        "insights_segment": "Loyal",
        "referral_url": null,
        "created_at": "2016-12-10T03:00:00.000Z",
        "updated_at": "2025-03-15T10:30:00.000Z"
      },
      "receipt": {
        "id": 43,
        "status": "declined",
        "retailer_name": "Walmart",
        "total_paid": 85.5,
        "tax_paid": 7.5,
        "currency": "USD",
        "fraud_score": 92,
        "duplicate": false,
        "retailer_receipt_date": "2025-03-14T00:00:00.000Z",
        "created_at": "2025-03-14T18:22:00.000Z"
      },
      "rule": {
        "id": 1234,
        "name": "$retail_purchase"
      },
      "declined_reason": "Fraud score exceeded threshold",
      "upload_url": "https://upload.loyaltylion.com/123/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
    }
  }
}
```
