Test wallet
—
TUSD · test funds, transferable to any TestnetPay user
Free faucet: max 2,500 per top-up, 10,000/day.
Send test funds
Generate a test card
Card draws on your wallet balance. Freeze it, cap it, or let a charge fail for real insufficient funds.
Your test cards
No cards yet.
Verify your payment app — create a Project
Try a test charge
Simulates a customer paying one of your projects with a test card.
Charges to your projects
None yet.
Wallet activity
Nothing yet.
Developer integration
Add TestnetPay test mode to your app, verify the full payment loop, then swap to live keys with your real provider later. Charges settle into your TestnetPay wallet — spend or transfer the test funds onward.
curl -X POST https://YOUR-TESTNETPAY-HOST/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"
}'
# Responses mirror real gateways:
# 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
# Webhooks: POST to your webhook_url as
# { "event": "charge.completed", "data": { ... } }
# with a tp-signature HMAC header.