Send a FaucetPay payout with the legacy v1 API
The v1 form-POST payout, kept for installs that still run it. New builds should use the v2 scoped-key API, which adds idempotency keys.
Payouts, balance checks, merchant deposits and IPN verification against the FaucetPay API.
13 entries
The v1 form-POST payout, kept for installs that still run it. New builds should use the v2 scoped-key API, which adds idempotency keys.
Verifying a merchant callback server-side, including the endpoint shape that quietly 404s. Still current; see the v2 entry for the retry schedule and order-first ordering.
If your ledger is in dollars and your payout API is in satoshi, this is the conversion, with the guard that stops a stale price from emptying your wallet.
One call that stops the worst failure mode on a faucet: telling a user they were paid when the wallet was already empty.
An auto-submitting form POST with your own reference in the custom field — the field that makes the deposit traceable when it comes back.
A unique index on your own reference turns duplicate callbacks, browser refreshes and manual replays into no-ops instead of free balance.
Auto-pay when the API answers, hold when it does not, and never refund on a timeout. The three-state queue that keeps a faucet solvent.
Bearer auth, JSON POST, and an envelope that is documented one way and returned another on the endpoint you care about most.
Generate the key and save it on the claim row before you call send, then reuse it on every retry. Generating it at call time is the same as having none.
v2 send takes integer smallest units and FaucetPay uses eight decimals for every coin. Doing that conversion in floating point is how a payout comes out wrong.
payout.sent and payout.failed arrive signed. Check the HMAC, dedupe on the event id, and let the webhook correct a payout your send call never heard about.
The token is single use and they retry at fixed intervals, so check your own order first and answer 200 before verifying again.
v2 keys carry scopes. A faucet needs send and read; anything with admin scope on a web server is a wallet waiting to be emptied.