---
title: "Redemption fulfillment failed"
method: POST
path: "redemption.fulfillment_failed"
tags: ["Webhook events"]
---

# Redemption fulfillment failed

`POST redemption.fulfillment_failed` (webhook)

A gift-card redemption's fulfillment failed for good, or expired, and its reservation was released. Scrip sends this request to every endpoint subscribed to `redemption.fulfillment_failed`, signed with both the Standard Webhooks headers (`webhook-id`, `webhook-timestamp`, `webhook-signature`) and the `Scrip-Signature` header; verify either one.

## Payload

- WebhookRedemptionFulfillmentFailed: A gift-card redemption's fulfillment failed for good, or expired, and its reservation was released. This is the body of the delivery.
  - `api_version` string, required: The payload contract that `data` follows. Scrip adds fields without changing it, so ignore fields you do not know.
  - `created_at` string, date-time, required: When Scrip created the event, as an RFC 3339 timestamp.
  - `data` object, required: The payload of the event.
    - `face_value` Money, required: A fiat amount: an integer count of the currency's minor units, such as cents, and the ISO 4217 currency code.
      - `amount_minor` integer, required: Amount in the currency's minor units, such as cents for USD
      - `currency` string, required: ISO 4217 currency code
    - `failure_reason` string: Why the redemption failed or was cancelled.
    - `fulfillment_account_id` string, uuid, required: The fulfillment account that serves the order.
    - `fulfillment_id` string, uuid, required: The gift-card fulfillment.
    - `organization_id` string, uuid, required: Your organization.
    - `participant_id` string, uuid, required: The participant the event is about.
    - `program_id` string, uuid, required: The rewards program the event ran under. On a program wallet entry it is the program that owns the wallet.
    - `provider` string, required: The gift-card provider.
    - `redemption_id` string, uuid, required: The redemption the event is about.
    - `status` 'FAILED', required: The status after the change.
  - `id` string, uuid, required: The id of the webhook event. It is the same for every endpoint that receives the event.
  - `organization_id` string, uuid, required: The organization that owns the event.
  - `test` boolean: True on a delivery from a test send. It is absent on a real delivery.
  - `type` 'redemption.fulfillment_failed', required: The event type.

## Acknowledgement `200`

Return any 2xx status to acknowledge the delivery. Scrip retries any other status except `410 Gone`, which ends the delivery as `FAILED`.

---

[API](https://skmtc.dev/scrip/apis/scrip-api.md) · [All operations](https://skmtc.dev/scrip/apis/scrip-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scrip/apis/scrip-api/revisions/c52d35da8d97?raw)
