v1
latestOpenAPI 3.0.02026-07-26103425558.9 KBOrchestration Address
Deactivate an orchestration address
Soft-delete the address: sets status=DEACTIVATED and deactivatedAt=now(). Requires a walletAddress in the body — any deposits still PENDING (not yet rolled into a batch) are refunded in-kind to it. The claim and refund run atomically under the address row lock, so a deposit can never be both offramped and refunded. Idempotent — calling on an already-deactivated address returns 200 with the current record and issues no second refund.
After deactivation:
- The on-chain wallet still exists and can receive funds (we can't take it offline).
- Incoming deposits are recorded with status=IGNORED and ignoredReason=ADDRESS_DEACTIVATED. A Slack alert fires for manual ops follow-up. These are NOT auto-refunded — only the deposits that were PENDING at deactivation are.
- The escrow wallet stays locked to this address (it's never returned to the general allocation pool).
- Batches already in PROCESSING continue to completion; batches still PENDING will be marked FAILED with failureReason=ADDRESS_NOT_ACTIVE on the next worker tick.
post/v2/users/{userId}/orchestration-addresses/{orchestrationAddressId}/deactivate
Path parameters
userIdstring required
ID of the user
orchestrationAddressIdstring uuid required
ID of the orchestration address.
Request body
Response
A single orchestration address record.
Example response
{
"address": "0xAbC0123456789AbCdEf0123456789AbCdEf01234",
"source": {
"chain": "BASE"
},
"thresholdAmount": "100.00",
"balance": {
"currency": "usdc",
"amount": "100.500000"
}
}