Getting started

Stablecoin deposits that settle themselves.

Payday turns USDC transfers into verified customer deposits. You state what you are owed and by whom; Payday gives that one payer a one-time address, watches the chain, and moves exactly the requested amount to your wallet.

You create a deposit request through a small API or the dashboard. Payday gives you a link. The payer opens it, proves whatever your policy asks of them, and signs once from the wallet they will pay from. That signature creates the one-time address they pay into. When finalized USDC reaches it, Payday settles exactly the amount you asked for to your wallet, and anything left over goes straight back to the payer's own wallet on-chain.

Your serveror the dashboardcreatePayday APIdeposit requestdeposit_urlPayerhosted checkoutsignsOne-time addressbound to that walletUSDC, from the attested walletChainfinalized blocksindexedPayday settlesone transactionexactly the amountYour walletpayout_addressremainder, if anyPayer's walletthe attested onewebhooks: ready · deposited · settled
One deposit, end to end. Solid arrows are money and messages; the dashed arrow is the webhooks that tell your server what happened. Payday never holds the funds at any point.

How a deposit works#

  1. You issue a deposit request

    An amount in USDC, who is asking, who should pay, a deadline, and a payer policy. From the dashboard, or with one API call. You get back an id and a deposit_url.

  2. The payer opens the link and satisfies the policy

    Permissionless requests open at once. A verified-email request asks the payer to type a code sent to the mailbox you named. A merchant-session request opens unlocked when your own application hands the payer in.

  3. The payer signs from the wallet they will pay from

    One signature, no transaction. It binds that wallet to this request, and Payday derives the one-time deposit address from it. Only transfers from that wallet are the payer's, and anything returned goes back to it.

  4. USDC arrives and is finalized

    Payday credits only finalized transfers of the exact USDC contract on the configured chain. Partial transfers accumulate. The request moves through awaiting_deposit, partially_deposited, and deposited, and webhooks report each step.

  5. Payday settles

    Exactly the requested amount goes to your payout address in one transaction. An overpayment remainder, an expired balance, or a late transfer goes back to the payer's attested wallet. The request is settled, and a Proof of Payment is available that anyone can verify offline.

Two ways in#

The dashboard

no code

Sign in with an emailed code. Set up the identity you issue under, create requests in four steps, share the link, and watch each one settle. Every account gets its own wallet, where deposits settle by default.

The API and SDK

server-side

One bearer key. Create requests from your own system, attach PDFs, keep customers, register webhooks, and download proofs. A zero-dependency TypeScript client wraps every call.

Both together

typical

Your application issues requests and listens for webhooks; your operations team follows along in the dashboard, which shows the same requests, the same statuses, and the same proofs.

What Payday deliberately is not#

  • Not a custodian. The requested amount moves from the one-time address to your wallet. Returns move from the address to the payer's wallet. Nothing sits with Payday, so there is nothing to withdraw and nothing to freeze.
  • Not an invoicing system. A request has one amount, used exactly as given. There are no line items, tax fields, or fiat conversions. Attach a PDF when you need an itemised breakdown; Payday stores and hashes it but never parses it.
  • Not multi-asset. Each environment accepts one exact Circle-issued USDC contract on one chain. Bridged USDC, look-alike tokens, and other networks do not count.

Where next#