⚒ Pennyforge / SendCheck

SendCheck Pro — 0.50 USDC, once.

No daily cap. No account. No subscription. A one-time payment straight on Base that the page verifies itself — your unlock is a transaction hash, re-checkable by anyone on the explorer. The free tier (3 checks a day) stays free forever.

Unlock in two steps

1. Send 0.50 USDC on Base — a plain USDC transfer. If your wallet needs gas, a few cents of ETH on Base covers it (Base fees are tiny).

USDC · Base · ≥ 0.50 (extra = tip)

Works with MetaMask, Brave, Coinbase Wallet and any other browser wallet: you sign one 0.50 USDC transfer on Base, and this page verifies it itself — no copying, no pasting.

Prefer a hosted checkout page? Open the hosted payment page →
On that page pick USDC on Base, type 0.50 as the amount and send 0.50 USDC: the Base minimum is just under 0.47, so the hosted route on Base costs exactly what Pro is — no premium. (The processor's minimum is higher on other networks, so Base is the one to use here.) No account or email needed — your wallet does the paying.

The trade-off, honestly: the hosted route goes through a third-party processor (NOWPayments) instead of straight to the address above, so a hosted payment can't self-verify here with a hash. Keep the confirmation that page shows you (it includes a payment ID) — if it doesn't reach us, write to pennyforge@emalupe.com with the ID and we'll unlock you. Paying the address directly (the two steps above) verifies itself and skips the middleman entirely.

Affiliate note: if you sign up for NOWPayments for your own payments through our referral link ↗, we earn a small share of their fees on your account — it costs you nothing and your rate stays the same.

Can't find Base in your wallet? Add it in ~30 seconds

Network Base · Chain ID 8453 · RPC https://mainnet.base.org · Explorer https://basescan.org.
In MetaMask: Settings → Networks → Add new network, then paste the JSON below (or type the four fields). Coinbase Wallet, Rainbow, Trust Wallet and most others already have Base built in — just switch networks.

{
  "chainName": "Base",
  "chainId": "8453",
  "rpcUrls": ["https://mainnet.base.org"],
  "nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
  "blockExplorerUrls": ["https://basescan.org"]
}

2. Paste the transaction hash of that transfer and the page proves it on-chain — no email, no login, nothing to wait for.

We look up the receipt on public Base nodes and confirm a USDC transfer of at least 0.50 to the address above. Any amount beyond 0.50 is a tip — thank you.

How this works

🔗 The hash is the receipt

There's no email confirmation and no "account" in our database. The on-chain transaction is your proof of payment — open the hash on the Base explorer and you'll see the transfer right there, verifiable by anyone.

🔍 Verified in your browser

When you paste the hash, this page fetches the transaction receipt from public Base nodes and checks that a USDC transfer of at least 0.50 landed in the address above. No third party in between, nothing to trust but the chain.

🔓 One-time, not a subscription

Pay once, unlimited checks on this browser. The unlock lives in your browser's local storage — clear it any time and re-verify with your hash to get it back. No email, no login, no "cancel before trial ends".

Payment FAQ

Which wallets can I pay from?

Any wallet that can send USDC on Base — MetaMask, Coinbase Wallet, Rainbow, Ledger, or a withdrawal from an exchange that supports Base. What matters is the token (USDC) and the network (Base), not the wallet. If your browser has a wallet extension (MetaMask, Brave, Coinbase Wallet, ...), you can skip the copy-paste entirely: "pay from your wallet" signs the 0.50 USDC transfer in one click and this page verifies it.

I pay from an exchange — what do I watch out for?

Two things: the network must be Base (not Ethereum mainnet, not "ERC-20"), and the token must be USDC. Exchanges let you pick either at withdrawal — get both wrong and the funds need a manual bridge back. (That's, honestly, what SendCheck is for.)

What if I sent ETH by mistake?

Verification will say "no USDC transfer in that transaction" — nothing is lost, the ETH is still in the address above. Send the USDC, then verify with the hash of that transfer. If the mix-up bothers you, write us and we'll sort it out.

Do I pay gas?

The sender does — you're initiating the USDC transfer, so your wallet pays a small Base fee (fractions of a cent at current gas). We pay nothing extra; there's no middleman.

How is the hosted checkout different from paying the address directly?

Same payment, two routes. Direct (the two steps above): USDC goes straight to the address on this page, and the transaction hash verifies itself in your browser — no one in between. Hosted (NOWPayments): a third-party payment page where you pick USDC and send 0.76 USDC — the processor's minimum is just under 0.76, which is why the hosted route costs a touch more than 0.50. It's convenient and needs no account, but the processor sits in the loop and the payment can't self-verify with a hash (keep its confirmation — it has a payment ID).

Is this a subscription? Hidden fees?

No subscription, no auto-renew, no hidden fees. 0.50 USDC one time, and that's the whole bill. Sending 0.60 is fine — the extra 0.10 is a tip.

What if I use a different browser or device later?

The unlock is stored per browser. On any other browser or device, paste your transaction hash here and hit verify — the chain remembers, so your receipt works forever.

Refunds?

It's a small one-time payment from an independent studio, so the default is no refunds. When we do refund (rare), it goes back on-chain to the exact address that paid — write us at the email in the footer.

Is Pennyforge a company? An exchange? A wallet?

A small one-person studio. Not affiliated with any wallet, exchange or chain — the data on this site comes from public RPC endpoints, and the payment lands in a plain wallet you can see right here.

For agents: the same check, as a paid API — no API key

The engine behind this page also runs as a plain HTTP API for software: agents, scripts, integrations, wallets — anything that can POST JSON. It uses the x402 payment protocol: your client asks, the endpoint answers 402 Payment Required with a payment request, your client pays in USDC on Base and retries — and gets the verdict. No account, no API key, no subscription, no invoice: the payment itself is the authentication.

What you see is what you pay — the price is the entire cost per call, no gas on top (USDC's EIP-3009 flow lets the receiving side settle, so a $0.01 check costs you $0.01).

And the payment details ride a signed service card: the endpoint signs its service URL, its settlement address and the per-route price ceiling with a stable key, so any client that has pinned that key once can cryptographically confirm — before paying — that the address in the payment request is one we signed. First contact is still trust-on-first-use; we say so.

  • POST /check — one address on one chain: EIP-55 checksum, wallet-vs-contract, outgoing activity, native/USDC/USDT balances, leveled verdict with reasons and next action. $0.01
  • POST /deep — the same scan across all five chains (Base, Ethereum, Arbitrum, Optimism, Polygon), including wrong-network detection. $0.05
  • GET /validate?address=0x…free checksum pre-check, so you never pay for a malformed address.

One minute of code

// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const signer = toClientEvmSigner(privateKeyToAccount("<your-key>"));
const client = x402Client().register("eip155:8453", new ExactEvmScheme(signer));
const fetchPay = wrapFetchWithPayment(fetch, client); // 402 → pay → retry

const res = await fetchPay(
  "https://api.pennyforge.org/check",
  { method: "POST", headers: { "content-type": "application/json" },
    body: JSON.stringify({ address: "0x…", chain: "base" }) });
console.log(await res.json()); // { verdict: "ok|caution|warn|danger", reasons: [...] }

The endpoint advertises its own price, schema and example bodies in its x402 discovery document — standard x402 clients read it automatically. Base URL: https://api.pennyforge.orgopen the service card.

Listed in the public x402 directories: x402 List (compliance grade A, uptime tracked) and x402scan.