Skip to main content
POST
Submit a pay-out route ownership proof
Requires scope: manage:pay-outs — see Required scopes. Submits the signed message and resumes the route’s registration. On success the route leaves AWAITING_OWNERSHIP_PROOF and continues to ACTIVE asynchronously.
A 200 means the proof was accepted, not that the route is ready. Poll the route or register a webhook to hear when it reaches ACTIVE — only then does it have a depositAddress.
Send message exactly as prepare returned it. It must match the canonical text for this route, which embeds the route’s own wallet, and the signature must recover that wallet. That’s what makes the stateless design safe, and it has two consequences worth knowing:
  • A proof signed for a different wallet, route or tenant is rejected — it can’t be replayed here.
  • A message with extra text wrapped around the expected content is rejected too, even if the signature is valid.
You don’t have to call prepare first. This endpoint only cares that the message is canonical and the signature matches.
The proof is never stored or logged. It’s verified in memory, forwarded once, and discarded — only the outcome is persisted.

Authorizations

Path Parameters

accountId
string<uuid>
required

Unique account identifier

routeId
string<uuid>
required

Unique pay-out route identifier

Body

application/json
message
string
required

The message exactly as prepare returned it

signature
string
required

EIP-191 signature produced by the route's source wallet

Response

The route, with registration resumed

success
boolean

Indicates whether the request was successful

result
object

Customer-facing route view. Provider identity is never exposed.