Partner API

Register a withdrawal address

Creates the address in pending_partner_approval and emails a 6-digit code to a registered administrator. The address is not usable until your administrator confirms the code and OnLink approves it. Re-registering the same address is idempotent: the existing registration is returned and no second row is created. If that registration is still awaiting your administrator and its code is no longer usable (expired, or cancelled after too many incorrect attempts), re-registering re-issues a fresh code — this is how you recover such an address. A code that is still live is never replaced, and no code is issued once the address has moved past your administrator’s approval.

post/v1/wallets

Request

  • Base URL
    https://sandbox.onlink.africa
  • Auth
    API key in header X-OnLink-Key

Request body

chain'tron' required

Only tron at launch.

asset'USDT' required

Only USDT at launch.

addressstring required

The withdrawal address. Validated for base58check format AND checksum before it is stored.

labelstring

Your own label for this address. Never used for routing.

Example request

{
  "address": "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb"
}

Response

Address registered, pending approval

walletIdstring uuid required

The registration id. Use it for POST /v1/wallets/{id}/confirm and DELETE /v1/wallets/{id}.

chain'tron' required

Network. Tron only at launch.

asset'USDT' required

Asset. USDT only at launch.

addressstring required

The withdrawal address, in full — exactly as stored, checksum already verified. Compare the entire string when you reconcile: a truncated rendering makes a lookalike address indistinguishable from the real one, and USDT sent to the wrong address is an irrecoverable burn.

labelstring nullable required

Your own label, echoed back. Never used for routing. null if you sent none.

status'pending_partner_approval' | 'pending_onlink_approval' | 'active' | 'revoked' required

Where the address sits in the two-party approval. active is the only deliverable value — a correct administrator code moves it to pending_onlink_approval, and OnLink’s own review is what makes it usable. revoked is terminal.

screeningStatus'pending' | 'clear' | 'flagged' required

Address-screening outcome. Never defaults to a clear verdict: a newly registered address reads pending until a screen has actually run.

createdAtstring date-time required

When the address was registered, ISO 8601 UTC.

approvalSentTostring nullable required

The administrator mailbox the 6-digit code was sent to, masked (j•••@yourcompany.com). Masked rather than whole so the response is not an address-harvesting oracle for anyone holding a leaked credential. null when no code was issued — an idempotent re-registration of an address that is already past your administrator’s approval.

nextStepstring required

Plain-language next action, keyed to status. Prose for a human reading the response — branch on status, not on this string.

Example response

{
  "walletId": "b8e4d1c7-2f39-4a05-8d6b-1c2e3f4a5b60",
  "chain": "tron",
  "asset": "USDT",
  "address": "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb",
  "label": "Settlement wallet — Tron",
  "status": "pending_partner_approval",
  "screeningStatus": "pending",
  "createdAt": "2026-08-31T09:30:00.000Z",
  "approvalSentTo": "o•••@yourcompany.com",
  "nextStep": "A 6-digit approval code was emailed to a registered administrator. Confirm with POST /v1/wallets/{id}/confirm. The address is NOT usable until OnLink also approves it."
}

Changes

No recorded changes to this operation across all 1 revision of this API.