MegTrustDevelopers

Destinations

Register the addresses you pay out to. A destination is usable only once can_send is true.

Payouts can only go to destinations in your organisation's destination book (the API calls them counterparties). A new destination starts pending and is not usable until its ownership is verified.

List destinations

GET /api/v1/counterparties returns your destination book.

Branch on can_send — it is the single field that says whether a destination is usable, so you never have to infer the rule from status and verification separately. can_send means the destination passed the book's verification gate; other policy checks may still refuse a payout.

Add a destination

POST /api/v1/counterparties registers a destination as pending.

FieldTypeNotes
networkstringRequired. Network id, e.g. ethereum. Up to 128 characters.
addressstringRequired. Validated for that network's format. Up to 128 characters.
counterparty_typestringRequired. individual · company.
first_name / last_namestringRequired when individual.
company_namestringRequired when company.
wallet_typestringRequired. vasp (a hosted wallet at a service provider) · unhosted.
vasp_namestringRequired when wallet_type is vasp.
countrystringRequired. ISO-2, e.g. SG.
directionstringOptional. send (default) · both.

Names (first_name, last_name, company_name, vasp_name, label) are up to 120 characters. Unknown fields are refused with 400 validation_failed.

body
{
  "network": "ethereum",
  "address": "0x03a6…81b9",
  "counterparty_type": "company",
  "company_name": "ACME Markets Pte Ltd",
  "wallet_type": "vasp",
  "vasp_name": "ACME Digital Custody",
  "country": "SG",
  "direction": "send"
}
response
201 Created

{
  "data": {
    "id": "cp_5d02…",
    "label": "ACME Markets Pte Ltd",
    "network": "ethereum",
    "network_name": "Ethereum",
    "address": "0x03a6…81b9",
    "direction": "send",
    "status": "pending",
    "can_send": false,
    "verified_at": null,
    "counterparty_type": "company",
    "company_name": "ACME Markets Pte Ltd",
    "wallet_type": "vasp",
    "vasp_name": "ACME Digital Custody",
    "country": "SG",
    "created_at": "2026-07-30T09:10:00.000Z"
  },
  "meta": {}
}

Re-posting an address that is already registered returns the existing entry with meta.already_exists: true instead of erroring. It does not edit the entry.

Verification

Creating an entry cannot approve or verify it. Complete ownership verification in the console; until then a payout to it is refused with 422 destination_not_whitelisted. Poll GET /counterparties (or check before each payout) and send only when can_send is true.

On this page