Skip to content

Fees and billing

How fees accrue, how 402pay collects them from your payments, and how to read your fee statement.

Every payment, by card or crypto, lands in your own wallet whole, so 402pay never holds the money its fees would come out of and never takes anything out of a deposit. Instead, fees add up on your fee statement, and once you owe enough, 402pay collects them by sending some of your payments to its own address. Your customers pay exactly as they always do.

How fees accrue

FeeWhen
The rate (0% for crypto, 3% for cards) plus $0.25Each payment that succeeds, whoever pays the fee.
The wallet plan: $5 for a wallet made or imported here, $15 for an external oneOnce for each calendar month you have a wallet, starting when it's made. Replacing it never bills a month twice.

When your customers pay the fee, it's added to their total and lands in your wallet with the payment, so you owe it on your statement like any other. Payments that don't succeed owe nothing. Fees on test networks stay there: a business that moves to mainnet starts a new statement, and test fees are never collected with real money.

How fees are collected

Once you owe at least $25.00, a new checkout whose whole total fits what you owe goes to 402pay's own address instead of your wallet. It's decided as the checkout opens, for crypto and card alike, and a checkout is never split: all of it goes to 402pay, or all of it goes to you.

  • Payments already on their way to 402pay count against what you owe: a checkout's whole total once its payment arrives or its card is approved, and what arrived of an underpaid one. Only one ordinary fee checkout can be open, waiting on the customer, processing or confirming for your business at a time. A checkout nobody has paid yet holds no debt, and late transfers can together pay down more than you owed.
  • The customer sees the same pay page, amount, receipt and success URL. Only the address differs.
  • The rest of an underpaid payment goes where the payment went: to 402pay for one collected as fees, and to your wallet for one paid to it, so no payment is split between the two.
  • The payment still owes its own fee when it succeeds, so what you owe drops by its total less that fee.
An overpayment, a transfer that arrives late, or checkouts paid at about the same time can pay down more than you owed. What's left is credit against future fees, never a refund, and your statement shows it as a negative owed.

What you see

A payment collected as fees is a normal payment: it succeeds, sends payment.succeeded, and counts in your metrics. Its settlement.destination is fees instead of wallet, its wallet_id is null, and its address and transaction are 402pay's. Nothing is added to your wallet, so it has no wallet transaction.

SettlementJSON
{  "destination": "fees",  "asset": "USDC",  "network": "solana",  "amount": "25.00",  "wallet_id": null,  "address": "7DmM84gY7ZokTyQcKydWauBdvwithGVG1pgDH44qWTG8",  "tx_hash": "a1ot1F4sVTnAMfnC2UwnMCxBkLGNrfBGuHsx2GAW5qFNTkSXMZdZ5SYjxToTw9ct5JvjzxixQbV18Y4ZcvAe7oE",  "explorer_url": "https://solscan.io/tx/a1ot1F4sVTnAMfnC2UwnMCxBkLGNrfBGuHsx2GAW5qFNTkSXMZdZ5SYjxToTw9ct5JvjzxixQbV18Y4ZcvAe7oE"}

Right before its payment.succeeded, a fee.collected event carries the collection as a fee entry. In the dashboard, the payment says it was collected as fees, and Settings, Payments shows your statement.

Your statement

GET /billing/fees returns what you owe, what's on its way to 402pay, and what accrued and was collected this month. GET /billing/fees/entries lists every fee, collection and adjustment behind it, each with what you owed right after it.

Statement and entries
curl "https://dash.402pay.co/api/v1/billing/fees" \  -H "Authorization: Bearer $PAY402_SECRET_KEY"
Response
{  "data": {    "kind": "fee_statement",    "currency": "USD",    "owed": 3140,    "reserved": 2500,    "accrued": 10250,    "collected": 7110,    "adjusted": 0,    "this_month": {      "period": "2026-09",      "accrued": 1200,      "collected": 2500    },    "collection": {      "enabled": true,      "threshold": 2500,      "active": true    }  }}

Reporting

On every payment, reporting.fee is the rate and reporting.transaction_fee the $0.25 flat fee, and reporting.net is what you keep after both. The flat fee and net stay 0 until the payment succeeds. The metrics' net_revenue counts the same way. See reporting and reconciliation for every amount on a payment.

Next steps