PlutoPay Docs
API Reference Dashboard ↗

#Testing

Build and verify your entire integration without moving real money. Test mode rides the same endpoints as live — only the API key differs.

#Test mode

Use a test key (sk_test_…, pk_test_…). Everything you create is flagged is_test: true and isolated from live data. Webhooks fire in test mode too, so you can exercise your receiver end-to-end.

#Test cards

When confirming a payment client-side with a test publishable key, use Stripe's standard test cards (any future expiry, any CVC, any ZIP):

Number Behavior
4242 4242 4242 4242 Visa — succeeds.
4000 0000 0000 0002 Card declined (card_declined).
4000 0000 0000 9995 Declined — insufficient funds.
4000 0025 0000 3155 Requires 3D Secure authentication.

The full list is in Stripe's testing documentation. For ACH, see the ACH test payment methods.

#Simulating a terminal payment

Physical readers aren't required in test mode. After creating a terminal payment, present a test card on a simulated reader:

POST /v1/terminal/simulate-payment
Field Type Required
reader_id string
{ "data": { "reader_id": "tmr_simulated_…", "status": "succeeded" } }

This endpoint is test-mode only — calling it with a live key returns 400.

#A full test loop

  1. Register a webhook endpoint (test mode) pointing at your receiver — e.g. a webhook.site bucket or a local tunnel.
  2. Create a payment with a sk_test_… key.
  3. Confirm it client-side with a test card, or use the terminal simulator.
  4. Observe payment.created then payment.succeeded (or payment.failed) hit your endpoint.
  5. Verify the signature on each delivery.