Skip to main content
POST
Adjust group balance
Credits or debits a group’s balance for a specific asset within a program. Set type to CREDIT or DEBIT and provide a positive amount. A DEBIT fails if the group does not have sufficient balance in the target bucket, unless allow_negative is true (used for clawbacks). The optional bucket field selects AVAILABLE or HELD and defaults to AVAILABLE. You must specify program_id and asset_id to identify which balance to adjust; groups are organization-level entities, but each group maintains separate balances per program-asset pair. The adjustment creates one journal entry whose action_type is CREDIT or DEBIT, matching type, with event_id and rule_id both null. There is no separate adjustment action type. This endpoint mirrors adjust participant balance.
For usage patterns and examples, see the Balance Operations guide, including expiration and maturity on credits.

Authorizations

X-API-Key
string
header
required

API key passed in the X-API-Key header.

Headers

Idempotency-Key
string

Idempotency key (1-255 printable ASCII chars). Equivalent to the idempotency_key body field; if both are provided they must match. Replays with the same key and identical parameters return the original journal_entry_id; the same key with different parameters returns 409 idempotency_conflict.

Maximum string length: 255

Path Parameters

id
string<uuid>
required

Group ID

Body

application/json

Adjustment details

amount
string
required

Adjustment amount (must be positive, decimal string)

Minimum string length: 1
Example:

"100.00"

asset_id
string<uuid>
required

The asset to adjust

Example:

"550e8400-e29b-41d4-a716-446655440001"

description
string
required

Reason for this adjustment (1-500 chars)

Required string length: 1 - 500
Example:

"Team bonus allocation"

program_id
string<uuid>
required

The program this adjustment belongs to

Example:

"550e8400-e29b-41d4-a716-446655440000"

type
enum<string>
required

Whether to CREDIT or DEBIT the balance

Available options:
CREDIT,
DEBIT
Example:

"CREDIT"

allow_negative
boolean

DEBIT only. When true, allows this adjustment to overdraw and set a negative balance.

Example:

false

bucket
enum<string>

Balance bucket to adjust: AVAILABLE or HELD (defaults to AVAILABLE)

Available options:
AVAILABLE,
HELD
Example:

"AVAILABLE"

expires_at
string

CREDIT + LOT only. RFC3339 timestamp or positive duration from request processing time. Not supported with bucket HELD.

Required string length: 1 - 255
Example:

"90d"

idempotency_key
string

Client-provided key to dedupe retries. May also be supplied via the Idempotency-Key HTTP header; when both are present they must match. Identical adjusts with the same key return the original journal_entry_id; a reused key with different payload returns 409 idempotency_conflict.

Required string length: 1 - 255
Example:

"adjust-group-123"

matures_at
string

CREDIT + LOT only. RFC3339 timestamp or positive duration from request processing time. Future values route the credit to DEFERRED. Not supported with bucket HELD.

Required string length: 1 - 255
Example:

"7d"

Response

Adjustment applied

amount
string

Amount adjusted

Example:

"100.00"

asset_id
string<uuid>

Asset that was adjusted

Example:

"550e8400-e29b-41d4-a716-446655440001"

bucket
string

Balance bucket that was adjusted

Example:

"AVAILABLE"

journal_entry_id
string<uuid>

Ledger journal entry created by this adjustment

Example:

"550e8400-e29b-41d4-a716-446655440000"

message
string

Confirmation message

Example:

"Group balance adjusted successfully"

program_id
string<uuid>

Program the balance belongs to

Example:

"550e8400-e29b-41d4-a716-446655440000"

type
string

Whether the adjustment was a credit or debit

Example:

"CREDIT"