ROOKDocs
PATCH

Update a dispute

ENDPOINT/v1/disputes/{dispute_id}

Applies a partial update to amount, reason, or note while status is NEW or PENDING_CUSTOMER. Omitted fields are left unchanged. note replaces customer_note. Later statuses reject this operation. This operation is program-scoped.

Authentication & Headers

HeaderTypeRequirementDescription
AuthorizationstringREQUIREDAPI key passed as an HTTP Bearer token: Bearer rk_live_...
X-Program-IDUUIDPROGRAM-SCOPEDProgram boundary UUID that scopes the issuing card, wallet, or transfer.
Content-TypestringREQUIREDMust be application/json.
Idempotency-KeystringOPTIONALUnique UUID to prevent duplicate execution of financial creations or mutations.

Path Parameters

ParameterTypeRequirementDescription
dispute_idstringREQUIREDUnique identifier of the dispute.

Request Body Schema

application/json
amountobject
optional

Replacement disputed amount. `amount` is a positive integer of minor units and must not exceed the transaction's settled amount.

Properties of amount
amountanyrequired
currencystringrequired
ISO 4217 alphabetic currency code.
reasonstring
optional

Why the cardholder is disputing the transaction. `FRAUD_CARD_NOT_PRESENT` and `FRAUD_CARD_PRESENT` are fraud. The rest are non-fraud claims (merchandise, duplicate posting, amount, or recurring billing).

Enum values:FRAUD_CARD_NOT_PRESENTFRAUD_CARD_PRESENTGOODS_SERVICES_NOT_RECEIVEDDEFECTIVEDUPLICATEINCORRECT_AMOUNTCANCELLED_RECURRINGOTHER
notestringnull
optional

Replacement cardholder explanation. Null clears it. This is the canonical field; prefer `note` over `customer_note`.

customer_notestringnull
optional

Alias of `note`. Accepted for compatibility; both fields write the same cardholder explanation. Prefer `note`.

Response Codes & Schemas

200The dispute after the update.
application/json
{
  "id": "1d4b7e82-5f9c-4e34-d1a6-0b3e6f1d5687",
  "object": "dispute",
  "transaction_id": "2b5f7a28-9c4d-4e01-a6f3-1d8e0b7c2354",
  "wallet_id": "4d8f2a10-6c3e-4b91-9e5a-2f7c8d1e0b44",
  "amount": {
    "amount": 4280,
    "currency": "USD"
  },
  "reason": "GOODS_SERVICES_NOT_RECEIVED",
  "status": "NEW",
  "customer_filed_date": "2026-08-27",
  "customer_note": "Merchant confirmed non-delivery.",
  "resolution": null,
  "network_claim_ids": [],
  "events": [
    {
      "type": "CREATED",
      "status_from": null,
      "status_to": "NEW",
      "note": "Opened for goods not received.",
      "created_at": "2026-08-27T18:00:00Z"
    },
    {
      "type": "PROVISIONAL_CREDIT_POSTED",
      "status_from": "NEW",
      "status_to": "NEW",
      "note": "Provisional credit posted to the wallet.",
      "created_at": "2026-08-27T18:00:01Z"
    },
    {
      "type": "UPDATED",
      "status_from": "NEW",
      "status_to": "NEW",
      "note": "Merchant confirmed non-delivery.",
      "created_at": "2026-08-27T18:04:00Z"
    }
  ],
  "provisional_credit": {
    "amount": {
      "amount": 4280,
      "currency": "USD"
    },
    "status": "POSTED"
  },
  "created_at": "2026-08-27T18:00:00Z",
  "updated_at": "2026-08-27T18:04:00Z"
}
400Bad Request: malformed JSON, failed schema validation, or conflicting parameters.
application/json
{
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_request",
    "message": "invalid order by: foo. Valid options are: [created_at updated_at]",
    "param": "order_by",
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/invalid_request"
  }
}
401Unauthorized: missing, malformed, or unknown API key.
application/json
{
  "error": {
    "type": "authentication_error",
    "code": "authentication_error",
    "message": "A valid API key is required.",
    "param": null,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/authentication_error"
  }
}
403Forbidden: the API key is denied by RBAC, or it cannot access this program. A resource that exists on another program or organization returns `404 not_found`, not `403`.
application/json
{
  "error": {
    "type": "permission_error",
    "code": "permission_denied",
    "message": "The API key cannot access this program.",
    "param": "X-Program-ID",
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/permission_denied"
  }
}
404Not Found: unknown id, or the resource is not visible to this API key.
application/json
{
  "error": {
    "type": "not_found_error",
    "code": "not_found",
    "message": "No card found for the given id.",
    "param": "card_id",
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/not_found"
  }
}
409Conflict: incompatible state, or Idempotency-Key reused with a different body.
application/json
{
  "error": {
    "type": "conflict_error",
    "code": "conflict",
    "message": "The card cannot be reissued from its current state.",
    "param": null,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/conflict"
  }
}
422Unprocessable Entity: the document is valid JSON but violates a business rule.
application/json
{
  "error": {
    "type": "invalid_request_error",
    "code": "insufficient_funds",
    "message": "The source financial account does not have enough available balance.",
    "param": "amount",
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/insufficient_funds"
  }
}
429Too Many Requests: the API key exceeded its rate limit.
application/json
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limited",
    "message": "Rate limit exceeded. Retry after the number of seconds in Retry-After.",
    "param": null,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/rate_limited"
  }
}
500Internal Server Error: unexpected failure. Retry with the same Idempotency-Key.
application/json
{
  "error": {
    "type": "api_error",
    "code": "internal_error",
    "message": "An unexpected error occurred. Retry with the same Idempotency-Key.",
    "param": null,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "doc_url": "https://docs.rookpayments.com/errors/internal_error"
  }
}