Skip to content

Docs

Everything you need to verify your first payout run.

A five-minute quickstart, the CSV format, what each status means, and how to use the API.

Quickstart

Your first verification.

  1. 01

    Create an account

    Register, confirm your email and create an organisation.

  2. 02

    Add your paying wallet

    Wallets → Add wallet, with the public address your payouts come from.

  3. 03

    Start a verification

    New Verification: name the batch, pick USDC on Base, the wallet and the time window.

  4. 04

    Upload your payouts

    Use the CSV template below. Every row is validated before anything is stored.

  5. 05

    Read the results

    Each row gets a status with its evidence. Review exceptions, sign off, export a report.

Payout file

The CSV format.

Download the template
Columns of the payout CSV
ColumnRequiredMeaning
payout_idRequiredYour identifier for the payout. Unique within the file.
recipient_addressRequiredThe address that should receive the payout. Mixed-case addresses must pass their EIP-55 checksum.
amountRequiredA decimal amount in the token, such as 250.00. More decimals than the token supports is an error, never rounded.
token_addressOptionalIf present, it must be the batch's token; rows for another token belong in a separate batch. Bridged variants (USDbC, USDC.e) are different tokens.
referenceOptionalA note carried into results and reports, such as an invoice number.
recipient_labelOptionalA readable name for the recipient.

Amounts are always decimal strings. A file with any invalid row is rejected as a whole, with a report of every problem, so a batch never contains half a file.

Statuses

What the results mean.

Verified means the right amount reached the right recipient in a finalized block, with the whole window scanned. Provisional means paid but not final yet, and Unverified means the window has not been fully checked yet; both resolve on their own as the chain settles. The others are exceptions that need a person: missing, underpaid, overpaid, potential duplicate, wrong token, ambiguous, unsupported and scan incomplete.

How verification works

Finality, in one line

A transfer in a block that is not finalized can still disappear. PayoutGuard never says Verified until the network has finalized the block and every block of the window has been read.

API

The same results, for your systems.

  • Authentication

    Create a key under API Keys (owners and admins). Send it as Authorization: Bearer pg_live_…. It is shown once.

  • Scopes

    Keys are default-deny: wallets, batches, verifications, reports, Safe and monitoring each have their own scope. A key can never manage keys, members or billing.

  • Safe retries

    Send Idempotency-Key when creating batches, submitting rows, starting a verification or exporting a report. A retry with the same key replays the first answer.

  • Plans

    API access is included from Starter, with a per-key rate limit that grows with the plan.

Interactive API reference

Create a batch

curl https://<your-host>/api/v1/orgs/<org-id>/batches \
  -H "Authorization: Bearer pg_live_..." \
  -H "Idempotency-Key: october-rewards-2026-10" \
  -H "Content-Type: application/json" \
  -d '{"name": "October rewards", "chain_id": 8453,
       "token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
       "source_addresses": ["0x..."],
       "window_start": "2026-10-01T00:00:00Z",
       "window_end": "2026-10-31T23:59:59Z"}'

Verify your next payout run free.

No card, no keys, nothing to install.

Start verifying payouts