TestnetPay

Transferable test funds + balance-linked test cards, so you can verify your payment app without spending real money.

Create account

Sign in

Built for the wave of new payment apps: test charges, transfers, refunds, insufficient funds and webhooks — before you have real customers or real money to risk.

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.