---
title: "Update Cashback Rule"
method: PATCH
path: "/cashback_rules/{id}"
tags: ["Cashback Rules"]
---

# Update Cashback Rule

`PATCH /cashback_rules/{id}`

Updates a cashback rule funded by the authenticated platform account. Requires payout:transfer_funds. Only merchant_name, merchant_category_code, description, and expires_at can change; starts_at, rate_bps, funding_account_id, and scoped_account_id are immutable. Omitted fields stay unchanged. Scheduled, active, and expired rules can be updated; discarded rules cannot. Updating a rule does not transfer funds.

## Request body

- object
  - `description` string, nullable — Description of the rule. Set null to clear it.
  - `expires_at` string, date-time, nullable — Exclusive end as an ISO 8601 timestamp, strictly later than the original starts_at. May be in the past to end an active rule. Set null to remove the expiration.
  - `merchant_category_code` string, nullable — Four-digit MCC, including leading zeros. Null matches any MCC. When both merchant filters are absent, scoped_account_id is required.
  - `merchant_name` string, nullable — Raw merchant name reported by the card provider. Set null to match any merchant name. Supplied names must contain a non-whitespace character and match together with any MCC filter. Clearing both filters requires an existing scoped_account_id.

## Response `200`

cashback rule updated

- CashbackRule
  - `created_at` string, required — When the rule was created, as an ISO 8601 timestamp.
  - `description` string, nullable, required — Optional description of the cashback rule.
  - `discarded_at` string, nullable, required — When the rule was discarded, as an ISO 8601 timestamp. Null means it has not been discarded.
  - `expires_at` string, nullable, required — Exclusive end of the eligibility window, as an ISO 8601 timestamp. Null means no expiration.
  - `funding_account_id` string, required — Platform account designated to fund cashback, prefixed `biz_`. Derived from the authenticated credential.
  - `id` string, required — Cashback rule ID, prefixed `cicbr_`.
  - `merchant_category_code` string, nullable, required — Four-digit merchant category code. Null matches any MCC. When both merchant filters are null, scoped_account_id is required.
  - `merchant_name` string, nullable, required — Raw merchant name reported by the card provider. Null matches any merchant name. When set, matches together with any MCC filter; not a substring or enriched display-name match.
  - `rate_bps` integer, required — Cashback rate in basis points. 100 means 1%, and 10000 means 100%.
  - `scoped_account_id` string, nullable, required — Connected account ID, prefixed `biz_`. Null designates all direct connected accounts of the funding platform.
  - `starts_at` string, required — Inclusive start of the rule's eligibility window, as an ISO 8601 timestamp.
  - `updated_at` string, required — When the rule was last updated, as an ISO 8601 timestamp.

## Other responses

- `400` — Invalid Parameters
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found

## Changes

> 70 revisions in range; 1 not diffed.

- **2026-09-23** `140d015b9966` — 2 breaking, 2 info
  - the response property `merchant_category_code` became nullable for the status `200`
  - the response property `merchant_name` became nullable for the status `200`
  - the request property `merchant_category_code` became nullable
  - the request property `merchant_name` became nullable

[Change history](https://skmtc.dev/whop/apis/whop-api/changes/cashback_rules/:id/patch.md)

---

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