Declare self-hosted counterparty

Creates a DECLARED self-hosted counterparty for userId + application. For subType OWNED, optional signature and signedMessage verify wallet control; the signed message format and UTC date rules are enforced server-side (embedded DD/MM/YYYY must be yesterday, today, or tomorrow in UTC).

Example signedMessage (replace address, userId, and the date so the date is valid in UTC):

I am verifying ownership of the wallet address bc1q0xcqpzrky6eff2g52qdye53xkk9jxkvrh6yhyw as customer 550e8400-e29b-41d4-a716-446655440000. This message was signed on 14/05/2026 to confirm my control over this wallet.

This string is built the same way as in signatureVerifiers.test.ts (buildSelfHostedMessage). Sign it with the wallet that owns address, then send the resulting signature with the same signedMessage text you signed (see request body examples).

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
uuid
required

User this counterparty belongs to.

string
required

Wallet address.

string
required

e.g. ethereum

string
enum
required

OWNED or third-party self-hosted.

Allowed:
string

Optional on subType OWNED; required together with signedMessage when proving wallet control at declaration. Must be a valid signature for signedMessage from the declared address on the given blockchain (EVM personal_sign, Bitcoin signed message, or Solana Ed25519 detached, per server support).

string

Optional on subType OWNED; pairs with signature. When both are sent, the message must match exactly (after extracting the embedded date). The same string is sent as message on PATCH /counterparty/{counterpartyId} wallet verification (declare uses this field name signedMessage).

I am verifying ownership of the wallet address {address} as customer {userId}. This message was signed on {DD/MM/YYYY} to confirm my control over this wallet.

{address} and {userId} are the same strings as in the JSON body. {DD/MM/YYYY} is the calendar date in UTC and must be yesterday, today, or tomorrow relative to the server's current UTC date when the request is processed.

Example (same layout as src/services/travel-rule/__tests__/signatureVerifiers.test.ts):

I am verifying ownership of the wallet address bc1q0xcqpzrky6eff2g52qdye53xkk9jxkvrh6yhyw as customer 550e8400-e29b-41d4-a716-446655440000. This message was signed on 14/05/2026 to confirm my control over this wallet.

string
enum

Person or legal entity (when required by flow).

Allowed:
string

Given name (natural person).

string

Family name (natural person).

string

Country code (natural person).

string

Date of birth (natural person).

string

Place of birth (natural person).

string

Registered name (legal entity).

string

Legal entity identifier (legal entity).

Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json