Payer routes

Attest the wallet

POST/v1/payer/deposit-requests/{id}/wallet/attest

Submits the signature. Binds the wallet and derives the deposit address.

Unauthenticated · Payday-Payer-Session unlocks gated content.

Request

Shell
curl -fsS -X POST "$API/v1/payer/deposit-requests/dr_0198f80c-…/wallet/attest" \
  -H "Payday-Payer-Session: $PAYER_SESSION" \
  -H "Content-Type: application/json" \
  -d '{ "wallet": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed", "signature": "0x…" }'

Response

200 OK
{
  "id": "dr_0198f80c-8d2f-7dc1-a369-90556a64f700",
  "issuer_name": "Acme LLC",
  "heading": "March retainer",
  "payer_policy": { "mode": "verified_email", "expected_email_hint": "a****@c***.example" },
  "requirements": { "email": "approved", "wallet": "approved", "merchant_session": "not_required", "complete": true },
  "status": "awaiting_deposit",
  "payable": true,
  "expires_at": "2026-09-06T13:00:00Z",
  "server_timestamp": "1757160400",
  "settlement_tx_hash": null,
  "settlement_explorer_url": null,
  "payer_message": null,
  "content_unlocked": true,
  "chain": { "id": "143", "name": "Monad" },
  "token": { "symbol": "USDC", "address": "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", "decimals": 6 },
  "amount": "10.500000",
  "amount_base_units": "10500000",
  "received": "0.000000",
  "received_base_units": "0",
  "remaining": "10.500000",
  "remaining_base_units": "10500000",
  "payer_wallet": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
  "address": "0x2222222222222222222222222222222222222222",
  "address_explorer_url": "https://monadvision.com/address/0x2222222222222222222222222222222222222222",
  "deposit_uri": "ethereum:0x754704Bc059F8C67012fEd69BC8A327a5aafb603@143/transfer?address=0x2222222222222222222222222222222222222222&uint256=10500000",
  "details": {
    "amount": "10.500000",
    "amount_base_units": "10500000",
    "payer": { "name": "Customer Inc" },
    "notes": "Net 30. Thank you.",
    "reference": "INV-1042",
    "attachment": null
  }
}

Signature must recover to wallet (EOA only). Salt, recovery term, and address are written atomically, once. Raises deposit_request.ready.

Headers

Payday-Payer-Sessionstring
Payer session token.

Path parameters

iddr_ idrequired

Body

walletstringrequired
signaturestringrequired
65 bytes, 0x hex.

Response

Payer view, unlocked, with address and payer_wallet.

Status codes

  • 401wallet_signature_invalid
  • 401verification_required / payer_session_invalid
  • 409wallet_challenge_required No unexpired challenge on the session.
  • 409wallet_already_bound
  • 410deposit_request_not_payable