---
title: "Find stores and cashback offers"
method: POST
path: "/v1/cashback-savings"
tags: ["Cashback"]
---

# Find stores and cashback offers

`POST /v1/cashback-savings`

## Request

- Base URL: `https://api.openstock.sh`
- URL: `https://api.openstock.sh/v1/cashback-savings`
- Auth: HTTP bearer

Search by exact domain or merchant-name prefix, or omit query to page through the catalog. Country defaults to US. Mode defaults to sandbox. Network rates pass through 100% of affiliate commission, subject to product and order exclusions. Only tracking_available=true is activatable. Catalog-only rates are informational; In live mode, source=example is an 8% placeholder and cannot earn cashback. Use mode=sandbox for catalog-rate simulations (8% when no rate is available), without spending money or calling Core.

## Request body

- CashbackSavingsRequest
  - `mode` 'live' | 'sandbox'
  - `query` string: Exact domain or URL, or merchant name prefix. Omit to browse the catalog.
  - `country` string
  - `limit` integer
  - `cursor` string

## Response `200`

Store offers with explicit live, catalog-only, or example status.

- CashbackSavingsResponse
  - `mode` 'live' | 'sandbox', required
  - `items` object[], required
    - `id` string, required
    - `name` string, required
    - `store_url` string, uri, required
    - `merchant_id` string, nullable, required
    - `country` string, required
    - `cashback` object, required
      - `type` 'percentage' | 'fixed', required
      - `value` number, required
      - `currency` string
      - `source` 'network' | 'example', required
      - `basis` 'up_to' | 'fixed' | 'example', required
    - `status` 'live' | 'catalog_only' | 'example', required
    - `tracking_available` boolean, required
    - `program_id` string, nullable, required
    - `terms` string[], required
    - `rate_updated_at` string, nullable, required
    - `commission_share` 1, required
  - `next_cursor` string, nullable, required

## Other responses

- `400`: The request could not be completed. Retry temporary failures with the same idempotency key.
- `401`: The request could not be completed. Retry temporary failures with the same idempotency key.
- `403`: The request could not be completed. Retry temporary failures with the same idempotency key.
- `409`: The request could not be completed. Retry temporary failures with the same idempotency key.
- `503`: The request could not be completed. Retry temporary failures with the same idempotency key.

## Changes

- **2026-11-02** `e3af2bb31234`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openstock/apis/openstock-api/changes/v1/cashback-savings/post.md)

---

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