---
title: "Get fulfillment cost report"
method: GET
path: "/v1/reports/fulfillment-cost"
tags: ["Reporting"]
---

# Get fulfillment cost report

`GET /v1/reports/fulfillment-cost`

## Request

- Base URL: `https://api.scrip.dev`
- URL: `https://api.scrip.dev/v1/reports/fulfillment-cost`
- Auth: HTTP bearer

Summarize fulfillment face value, fees, and cost by program, status, and currency.
This report does not accept created_after or created_before.

## Query parameters

- `period_start` string, date-time, required
- `period_end` string, date-time, required
- `program_id` string, uuid

## Response `200`

Fulfillment cost report

- FulfillmentCostReportResponse: Summarize fulfillment face value, fees, and cost by program, status, and currency.
  - `data` FulfillmentCostReportRowResponse[]: One row per program, status, and currency with fulfillment activity in the period.
    - `cost` Money: 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
    - `count` integer: Number of fulfillment rows in this cell
    - `face_currency` string: ISO 4217 currency code every amount in this row is denominated in. face_currency is free text per catalog item, so a program with items in multiple currencies produces one row per (program, status, currency) combination rather than mixing denominations.
    - `face_value` Money: 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
    - `program_id` string, uuid: Program this fulfillment activity belongs to. Null only if the redemption somehow carries no program.
    - `program_name` string: Display name of the program (null when program_id is null)
    - `provider_fee` Money: 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
    - `status` 'PENDING' | 'PROCESSING' | 'SUCCEEDED' | 'FAILED' | 'AWAITING_FUNDS': Fulfillment lifecycle status this cell aggregates
  - `pagination` PaginationResponse: Cursor details for a list. `has_more` says whether another page exists, and `next_cursor` is the value to send to get it.
    - `has_more` boolean, required: Whether more results are available beyond this page
    - `next_cursor` string, nullable, required: Cursor to fetch the next page. Null on the last page
  - `period_end` string: Period end (inclusive, RFC 3339), echoed from the request
  - `period_start` string: Period start (inclusive, RFC 3339), echoed from the request

## Other responses

- `400`: Invalid query parameters (code: validation_error)
- `401`: The API key is missing or not valid. See [Authentication](https://docs.scrip.dev/authentication).
- `429`: Too many requests. Wait the number of seconds in the `Retry-After` header, then retry. See [Limits and durations](https://docs.scrip.dev/limits#rate-limits).
- `500`: Something failed on Scrip's side. Retry the request, and quote `request_id` if it keeps failing. [Errors](https://docs.scrip.dev/errors) lists every code, and the [API introduction](https://docs.scrip.dev/api-reference/introduction) describes the error format.

---

[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)
