# Change membership balance

Modifies the remaining visit count for a membership.
**For unified balance memberships:**
- Use `united_balance_services_count` to set total visits

**For separate balance memberships:**
- Use `services_balance_count` array with service_id and balance for each service/category

**Use cases:**
- Adjust balance after administrative changes
- Correct errors in visit counts
- Add bonus visits

**Note:** Requires chain-level permissions.

Endpoint: POST /chains/{chain_id}/loyalty/abonements/{membership_id}/set_balance
Version: 1.0.0
Security: BearerPartnerUser

## Security:

  - `BearerPartnerUser` (unknown)
    http bearer Bearer {PartnerToken}, User {UserToken}

## Path parameters:

  - `chain_id` (integer, required)
    Chain ID

  - `membership_id` (integer, required)
    Membership ID

## Header parameters:

  - `Accept` (string, required)

  - `Content-Type` (string, required)

  - `Authorization` (string, required)
    Bearer {partner_token}, User {user_token}

## Request fields (application/json):

  - `united_balance_services_count` (integer)
    New visit count for unified balance memberships
    Example: 10

  - `services_balance_count` (array)
    New balance for separate balance memberships (per service/category)
    Example: [{"service_id":13160808,"balance":5},{"service_id":13160809,"balance":3}]

  - `services_balance_count.service_id` (integer, required)
    Service or category ID
    Example: 13160808

  - `services_balance_count.balance` (integer, required)
    New visit count for this service/category
    Example: 5

## Response 200:

  - `200` (unknown)
    Balance updated successfully

## Response 200 fields (application/json):

  - `success` (boolean)
    Example: true

  - `data` (object)

  - `data.id` (integer)
    Example: 123

  - `data.united_balance_services_count` (integer)
    Example: 10

  - `data.balance_container` (object)
    Updated balance details

  - `meta` (array)
    Example: []

## Response 400:

  - `400` (unknown)
    Bad Request - cannot change balance

## Response 400 fields (application/json):

  - `success` (boolean)
    Example: false

  - `data` (null)

  - `meta` (object)

  - `meta.message` (string)
    Example: Cannot change balance

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `success` (boolean)
    Example: false

  - `data` (null)

  - `meta` (object)

## Response 403:

  - `403` (unknown)
    Forbidden - insufficient permissions

## Response 403 fields (application/json):

  - `success` (boolean)
    Example: false

  - `data` (null)

  - `meta` (object)

## Response 404:

  - `404` (unknown)
    Membership not found

## Response 404 fields (application/json):

  - `success` (boolean)
    Example: false

  - `data` (null)

  - `meta` (object)

## Response 422:

  - `422` (unknown)
    Validation error (invalid balance values, wrong membership type, etc.)

## Response 422 fields (application/json):

  - `success` (boolean)
    Example: false

  - `data` (null)

  - `meta` (object)

  - `meta.message` (string)
    Example: Invalid service ID

