Skip to content
Dashboard
DeveloperAPI documentation

Rulesets

Create and manage resolution rulesets and their child rules.

Base URL: https://api.chargebackstop.com/v1/rulesets/

Authentication: Bearer token via API key.

Required abilities:

  • rulesets:read for GET endpoints
  • rulesets:write for POST, PATCH, and DELETE endpoints

Access scope model:

  • Organisation-level keys can access rulesets for their own organisation only.
  • Admin partner-group keys can access rulesets across all organisations for their partner.
  • Non-admin partner-group keys can access rulesets only for organisations assigned to their group.

A rule is defined by its type and a parameters object whose shape depends on the type. Each ruleset can contain at most one rule of each type. The same rule types apply to embedded rules on POST /v1/rulesets and to the nested POST / PATCH rule endpoints.

Matches the transaction amount against a threshold.

Field Type Description
operator string GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, EQUAL, or NOT_EQUAL
currency_code string Three-letter currency code. Must be USD.
amount_in_cents integer Non-negative amount in cents.

Example parameters:

{
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
}

Matches the transaction's statement descriptor against one or more entries.

Field Type Description
descriptors array[object] One or more descriptor entries

Each descriptor entry:

Field Type Description
value string Descriptor string to match against.
match_type string STARTS_WITH or EXACT_MATCH

Example parameters:

{
"descriptors": [
{"value": "NETFLIX", "match_type": "STARTS_WITH"},
{"value": "SPOTIFY", "match_type": "EXACT_MATCH"}
]
}

Creates one ruleset and optionally creates child rules within the same request.

API level: Organisation-level and partner-level
Authentication: rulesets:write

Field Type Description
organisation_id string Organisation ID
enrolment_ids array[string] One or more enrolment IDs
outcome string REFUND, CANCEL, REFUND_AND_CANCEL, or ACCEPT_DISPUTE
join_operator string AND or OR
rules array[object] Optional initial rules. Each entry has type and parameters — see Rule types.
curl -X POST "https://api.chargebackstop.com/v1/rulesets/" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"organisation_id": "org_xyz456",
"enrolment_ids": ["enrl_abc123", "enrl_def456"],
"outcome": "REFUND",
"join_operator": "AND",
"rules": [
{
"type": "DESCRIPTOR",
"parameters": {
"descriptors": [
{"value": "NETFLIX", "match_type": "STARTS_WITH"},
{"value": "SPOTIFY", "match_type": "STARTS_WITH"}
]
}
},
{
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
}
}
]
}'
{
"id": "rset_abc123",
"organisation_id": "org_xyz456",
"enrolment_ids": ["enrl_abc123", "enrl_def456"],
"outcome": "REFUND",
"join_operator": "AND",
"rules": [
{
"id": "resrule_desc123",
"type": "DESCRIPTOR",
"parameters": {
"descriptors": [
{"value": "NETFLIX", "match_type": "STARTS_WITH"},
{"value": "SPOTIFY", "match_type": "STARTS_WITH"}
]
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
},
{
"id": "resrule_amt123",
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}
],
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

Returns a paginated list of accessible rulesets.

API level: Organisation-level and partner-level
Authentication: rulesets:read

Parameter Type Description
organisation_id string Filter by organisation ID
sort string -created_at (default), created_at, -updated_at, or updated_at
limit integer Number of results per page
offset integer Number of results to skip
curl -X GET "https://api.chargebackstop.com/v1/rulesets/?organisation_id=org_xyz456&sort=-created_at&limit=20&offset=0" \
-H "Authorization: Bearer <api_key>"
{
"items": [
{
"id": "rset_def456",
"organisation_id": "org_xyz456",
"enrolment_ids": ["enrl_abc123", "enrl_def456"],
"outcome": "REFUND",
"join_operator": "AND",
"rules": [],
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}
],
"count": 1
}

GET /v1/rulesets/{ruleset_id} - get ruleset by ID

Section titled “GET /v1/rulesets/{ruleset_id} - get ruleset by ID”

Returns one accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:read

curl -X GET "https://api.chargebackstop.com/v1/rulesets/rset_abc123" \
-H "Authorization: Bearer <api_key>"
{
"id": "rset_abc123",
"organisation_id": "org_xyz456",
"enrolment_ids": ["enrl_abc123"],
"outcome": "ACCEPT_DISPUTE",
"join_operator": "AND",
"rules": [
{
"id": "resrule_amt123",
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}
],
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

PATCH /v1/rulesets/{ruleset_id} - update ruleset

Section titled “PATCH /v1/rulesets/{ruleset_id} - update ruleset”

Updates one accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:write

Field Type Description
enrolment_ids array[string] Optional. One or more enrolment IDs
outcome string Optional. REFUND, CANCEL, REFUND_AND_CANCEL, or ACCEPT_DISPUTE
join_operator string Optional. AND or OR
curl -X PATCH "https://api.chargebackstop.com/v1/rulesets/rset_abc123" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"enrolment_ids": ["enrl_abc123", "enrl_def456"],
"outcome": "CANCEL",
"join_operator": "OR"
}'
{
"id": "rset_abc123",
"organisation_id": "org_xyz456",
"enrolment_ids": ["enrl_abc123", "enrl_def456"],
"outcome": "CANCEL",
"join_operator": "OR",
"rules": [],
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

DELETE /v1/rulesets/{ruleset_id} - delete ruleset

Section titled “DELETE /v1/rulesets/{ruleset_id} - delete ruleset”

Deletes one accessible ruleset and its child rules.

API level: Organisation-level and partner-level
Authentication: rulesets:write

curl -X DELETE "https://api.chargebackstop.com/v1/rulesets/rset_abc123" \
-H "Authorization: Bearer <api_key>"
204 No Content

POST /v1/rulesets/{ruleset_id}/rules - add rule

Section titled “POST /v1/rulesets/{ruleset_id}/rules - add rule”

Adds one rule to an existing accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:write

Field Type Description
type string AMOUNT or DESCRIPTOR. See Rule types.
parameters object Parameters for the selected rule type. See Rule types.
curl -X POST "https://api.chargebackstop.com/v1/rulesets/rset_abc123/rules" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
}
}'
{
"id": "resrule_amt123",
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

GET /v1/rulesets/{ruleset_id}/rules/{rule_id} - get rule by ID

Section titled “GET /v1/rulesets/{ruleset_id}/rules/{rule_id} - get rule by ID”

Returns one accessible rule from an accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:read

curl -X GET "https://api.chargebackstop.com/v1/rulesets/rset_abc123/rules/resrule_amt123" \
-H "Authorization: Bearer <api_key>"
{
"id": "resrule_amt123",
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 5000
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

PATCH /v1/rulesets/{ruleset_id}/rules/{rule_id} - update rule

Section titled “PATCH /v1/rulesets/{ruleset_id}/rules/{rule_id} - update rule”

Updates one accessible rule within an accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:write

Field Type Description
type string Must match the existing rule type. See Rule types.
parameters object Parameters for the selected rule type. See Rule types.
curl -X PATCH "https://api.chargebackstop.com/v1/rulesets/rset_abc123/rules/resrule_amt123" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 7500
}
}'
{
"id": "resrule_amt123",
"type": "AMOUNT",
"parameters": {
"operator": "GREATER_THAN",
"currency_code": "USD",
"amount_in_cents": 7500
},
"created_at": "2026-05-05T10:00:00Z",
"updated_at": "2026-05-05T10:00:00Z"
}

DELETE /v1/rulesets/{ruleset_id}/rules/{rule_id} - delete rule

Section titled “DELETE /v1/rulesets/{ruleset_id}/rules/{rule_id} - delete rule”

Deletes one accessible rule from an accessible ruleset.

API level: Organisation-level and partner-level
Authentication: rulesets:write

curl -X DELETE "https://api.chargebackstop.com/v1/rulesets/rset_abc123/rules/resrule_amt123" \
-H "Authorization: Bearer <api_key>"
204 No Content

{
"errors": [
{
"code": "FORBIDDEN",
"message": "Forbidden"
}
]
}
{
"errors": [
{
"code": "NOT_FOUND",
"message": "Not found"
}
]
}
{
"errors": [
{
"code": "INVALID_CURRENCY_CODE",
"message": "Only USD is allowed.",
"field": "currency_code"
}
]
}

Example 13: rules not allowed on ruleset update

Section titled “Example 13: rules not allowed on ruleset update”
{
"errors": [
{
"code": "RULES_NOT_ALLOWED_ON_RULESET_UPDATE",
"message": "Rules cannot be updated via this endpoint. Use PATCH /v1/rulesets/{ruleset_id}/rules/{rule_id} instead.",
"field": "rules"
}
]
}