How verified is your app?
Send test funds
To any user of this app — a teammate, a tester, a seller in your marketplace test.
Generate a test card
Draws on your wallet balance, so declines happen for real reasons.
Try a test charge
A customer paying one of your projects with a test card — settlement lands in the project owner's wallet.
Test cards
No cards yet — generate one above and it appears here, ready to spend.
Create a project
Register the app or site you're verifying and get its test keys.
Charges to your projects
Wallet activity
Wire TestnetPay into your app
Add test mode, verify the full payment loop, then swap to live keys with your real provider later. Successful charges settle into your TestnetPay wallet — spend or transfer the test funds onward.
curl -X POST https://testnetpay.adascannerpro.com/v1/charges \
-H "Authorization: Bearer tp_test_sec_YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{
"card_number": "539983........",
"expiry": "MM/YY", "cvv": "123", "pin": "1234",
"amount": 49.99, "currency": "USD",
"reference": "order-1001",
"customer_email": "buyer@example.com"
}'
201 successful · 402 with decline_code:
insufficient_funds · card_frozen · expired_card
invalid_cvv · incorrect_pin · limit_exceeded
Refund: POST /v1/charges/{id}/refund
Balance: GET /v1/balance
USE IT IN ANY PRODUCT — three ways:
1) Hosted checkout (no code): send buyers to
/pay/{project_id}?amount=49.99&reference=order-1
They pay with any TestnetPay card; we settle and
return them to your project's success URL.
2) API charge (above) from your server, test keys only.
3) Provider emulation: set the project's provider to
Flutterwave, Paystack or Stripe and webhooks arrive
in that provider's exact payload shape, signed the
way that provider signs (verif-hash / HMAC-SHA512 /
stripe-signature) — your existing webhook handler
verifies test events with only its keys swapped.
TestnetPay is a testing instrument. No real money moves here, and nothing here is a financial service.
Real-funds support, when it comes, will be built on a licensed card issuer — never on this test ledger.