adspay.fun

Don't trust us. Verify.

A payout dashboard is just a number a server tells you. Ours ships proof instead: every payout comes with a receipt cryptographically signed by adspay, and you can check it yourself, offline, without trusting our API.

$ npx adspay verify

Why signed receipts?

The honest failure mode of every rev-share product is the same: the server decides what you earned, and you have no way to audit it.

The problem with dashboards

  • A number with no proof. If the server quietly rounds down, throttles near cash-out, or changes the split, a dashboard just shows the new number.
  • You can't recompute it. Without the inputs and the formula, "you earned $4.21" is something you either believe or don't.
  • Trust is the whole product. This is the exact place competitors have been caught quietly shaving payouts.

What a receipt gives you

  • A signature you can check. Each payout is signed with our Ed25519 key; the signature covers every field, so nothing can be edited after the fact.
  • The inputs, in the open. Impressions, gross, your share in basis points, and the formula version all travel with the receipt.
  • Reproducible math. You re-run the split locally and confirm it matches, to the last micro-dollar.

How the receipt is built

The split formula is public and versioned. A receipt is just its inputs, its output, and a signature binding them together.

{
  "deviceId":     "dev_9f3c…",
  "periodStart":  1751990400,
  "periodEnd":    1751994000,
  "impressions":  1240,
  "shareBps":     8500,          // 85% for founding devices, else 7000
  "grossMicroUsd": 2480000,      // what advertisers paid for your impressions
  "amountMicroUsd": 2108000,     // what you were paid = gross × shareBps / 10000
  "formulaVersion": "split-v1",
  "sig": "ed25519:…"             // signature over every field above
}

amountMicroUsd is not asserted — it's derived: grossMicroUsd × shareBps ÷ 10000. If that arithmetic doesn't reproduce the amount you were paid, verification fails. The server can't sign a receipt whose math doesn't cross-check, and it can't change a signed one.

The verify flow, step by step

1

Run one command

npx adspay verify pulls your receipts and adspay's public key. You can also hand it a receipt file directly and run fully offline — the check never needs to trust our server.

$ npx adspay verify
↓ 3 receipts · public key pinned
2

Check the signature

For each receipt, the Ed25519 signature is verified against adspay's public key. A valid signature means every field is exactly what we signed — untouched by the server, the network, or anyone else.

sig ✔ valid · ed25519
key adspay-prod-1
3

Re-run the split math

Locally, it recomputes gross × shareBps ÷ 10000 and confirms it equals the amount you were paid. Signature genuine and arithmetic correct — both must hold, or the receipt is flagged.

2480000 × 8500 ÷ 10000
= 2108000 ✔ matches payout
4

See the verdict

You get a per-receipt pass/fail and a total you computed yourself — not a number we handed you. If anything is off, you have signed evidence of exactly what we claimed and when.

✔ 3/3 receipts verified
total $6.3240 (you computed this)

Verify now, or read the code first.

The client is MIT-licensed — check what it does before you run it. The only thing that ever leaves your machine is a six-field count, never your code or prompts.

$ npx adspay verify
Start earning → Read the FAQ