Skip to main content
POST
/
v2
/
users
/
{userId}
/
orchestration-addresses
/
{orchestrationAddressId}
/
update
Update an orchestration address
curl --request POST \
  --url https://production.hifibridge.com/v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/update \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "thresholdAmount": "<string>"
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "address": "0xAbC0123456789AbCdEf0123456789AbCdEf01234",
  "source": {
    "chain": "BASE"
  },
  "destination": {
    "currency": "usd",
    "accountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  },
  "schedule": {
    "nextRunAt": "2023-11-07T05:31:56Z"
  },
  "thresholdAmount": "100.00",
  "createdAt": "2023-11-07T05:31:56Z",
  "updatedAt": "2023-11-07T05:31:56Z",
  "deactivatedAt": "2023-11-07T05:31:56Z",
  "balance": {
    "currency": "usdc",
    "amount": "100.500000"
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

userId
string
required

ID of the user

orchestrationAddressId
string<uuid>
required

ID of the orchestration address.

Body

application/json

Partial update. Any combination of mode, schedule, thresholdAmount, and destination.accountId may be set. Same mode cross-rules as create apply to the resulting configuration (e.g. switching to THRESHOLD requires thresholdAmount).

Side effects:

  • Switching mode clears schedule-only fields when they no longer apply.
  • Changing schedule.interval without an explicit nextRunAt resets the next tick to now + newInterval.
  • Changing destination.accountId re-validates the new account (must belong to user, be USD, be an offramp account, etc.).
  • Already-created offramps and in-flight batches are NOT affected. Future deposits use the new config.

A DEACTIVATED address cannot be updated — returns 400 RESOURCE_CONFLICT.

mode
enum<string>

Determines when deposits are converted into an offramp.

  • PER_DEPOSIT — each deposit is batched into its own offramp immediately, UNLESS the cumulative PENDING amount is below the destination rail's offramp minimum, in which case the deposit is held PENDING and all pending deposits are batched together once their cumulative amount reaches the minimum.
  • SCHEDULED — deposits accumulate until the next schedule boundary (HOURLY/DAILY/WEEKLY), then the entire pending pool is batched together (only if it meets the offramp minimum; otherwise it rolls into the next tick).
  • THRESHOLD — deposits accumulate until their summed amount reaches thresholdAmount, then the entire pending pool is batched.
Available options:
PER_DEPOSIT,
SCHEDULED,
THRESHOLD
schedule
object

Schedule config for a SCHEDULED orchestration address.

thresholdAmount
string | null

New aggregate threshold. Required if the resulting mode is THRESHOLD, and must be at least the destination rail's offramp minimum (else 400).

destination
object

Partial destination update — only accountId may be changed.

Response

A single orchestration address record.

An orchestration address record.

id
string<uuid>

Unique orchestration address ID.

userId
string<uuid>

ID of the user that owns this orchestration address.

address
string | null

The on-chain wallet address that accepts deposits. null while status=PENDING_WALLET (provisioning in flight); populated once the wallet exists.

Example:

"0xAbC0123456789AbCdEf0123456789AbCdEf01234"

source
object

Source token + chain the address accepts.

destination
object

Destination payout configuration.

mode
enum<string>

Determines when deposits are converted into an offramp.

  • PER_DEPOSIT — each deposit is batched into its own offramp immediately, UNLESS the cumulative PENDING amount is below the destination rail's offramp minimum, in which case the deposit is held PENDING and all pending deposits are batched together once their cumulative amount reaches the minimum.
  • SCHEDULED — deposits accumulate until the next schedule boundary (HOURLY/DAILY/WEEKLY), then the entire pending pool is batched together (only if it meets the offramp minimum; otherwise it rolls into the next tick).
  • THRESHOLD — deposits accumulate until their summed amount reaches thresholdAmount, then the entire pending pool is batched.
Available options:
PER_DEPOSIT,
SCHEDULED,
THRESHOLD
schedule
object

Populated only when mode=SCHEDULED; null otherwise.

thresholdAmount
string | null

Populated only when mode=THRESHOLD; null otherwise. Decimal amount in the source currency.

Example:

"100.00"

status
enum<string>

Lifecycle status of the orchestration address.

  • PENDING_WALLET — created but the escrow wallet is still being provisioned. The on-chain address is null. Typically transient (a few seconds).
  • ACTIVE — wallet provisioned, ready to receive deposits.
  • DEACTIVATED — soft-deleted. The on-chain wallet still exists and can receive funds, but incoming deposits are recorded with status=IGNORED and never offramped.
Available options:
PENDING_WALLET,
ACTIVE,
DEACTIVATED
createdAt
string<date-time>
updatedAt
string<date-time>
deactivatedAt
string<date-time> | null

ISO 8601 timestamp when the address was deactivated. null if still active.

balance
object

The escrow wallet's live on-chain balance of the source token. Present ONLY on the single-address GET (GET /orchestration-addresses/{id}); the list endpoint omits it to avoid a provider call per row. null if the wallet isn't provisioned yet or the balance lookup failed — the GET still returns 200.

Example:
{
"currency": "usdc",
"amount": "100.500000"
}