> ## Documentation Index
> Fetch the complete documentation index at: https://developers.qomon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update and refund bundles

> How to update, partially refund, or cancel a transaction bundle.

## How updates work

`PATCH /v1/transaction_bundles/{id}` is **additive**: items you do not include in the request remain in the bundle unchanged.

* **To update an existing item**: include its `id` plus all required fields. Missing required fields may be cleared to zero/empty values.
* **To add a new item**: omit `id`. A new item is created and appended to the bundle.
* **To leave an item unchanged**: do not include it in the request at all.

> Always resend all required fields when updating an item, not just the fields you want to change.

## Refund

For a **refund** (full or partial)

1. Fetch the bundle to get the transaction `id` and membership/donation `id`:
   ```
   GET /v1/transaction_bundles/{id}
   ```

2. PATCH with the reimbursed status, `reimbursed_amount`, and the updated `amount` on the linked memberships and donations:

```json theme={"system"}
{
  "id": 42,
  "data": {
    "transactions": [
      {
        "id": 101,
        "contact_id": 123456,
        "amount": 2000,
        "currency": "eur",
        "payment_method_kind": "CB",
        "date": "2026-03-29T12:59:52+02:00",
        "external_transaction_id": 1001,
        "status_id": 2,
        "reimbursed_amount": 1000
      }
    ],
    "memberships": [
      {
        "id": 55,
        "contact_id": 123456,
        "membership_price_id": 10,
        "start_date": "2026-01-01T00:00:00Z",
        "end_date": "2026-12-31T00:00:00Z",
        "amount": 1000,
        "amount_initial": 2000,
        "currency": "eur"
      }
    ]
  }
}
```

Use `GET /v1/transaction_statuses` to find the `id` of the **Reimbursed** status for your group (`kind: reimbursed`).

If a product should deleted, patch the bundle then delete the products.
