Skip to main content
POST
/
v2
/
users
/
{userId}
/
orchestration-addresses
/
{orchestrationAddressId}
/
deactivate
Deactivate an orchestration address
curl --request POST \
  --url https://production.hifibridge.com/v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/deactivate \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "walletAddress": "<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

Body for deactivating an orchestration address. Any deposits still PENDING (not yet rolled into a batch) are refunded in-kind to walletAddress.

walletAddress
string
required

Destination address for the in-kind refund of the address's PENDING deposits. Must be a valid address for the orchestration address's chain (else 400 FIELD_VALIDATION_ERROR). Required even when there are no pending deposits to refund.

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"
}