Skip to content
Dashboard

Warning: Provisional contract proposal

These endpoints are not operational and no SDK is published. Examples use test identifiers only and nothing is sent anywhere.

Get started

Test environment

Everything you can try today without real money: test keys, test cards for each outcome, a simulated Pix payment and simulated webhooks, plus what is not available yet.

What is simulated

The test environment is the only environment today. It runs inside the demo dashboard and the hosted checkout, in your browser: nothing is sent to a server, no money moves and no real card or bank is involved.

  • Charges, payment links, customers, products, prices and subscriptions, created and updated like the API describes.
  • The hosted checkout at /pay/{id}, with card and Pix.
  • Refunds, balances and payouts, using demo fees and holding periods. These are not commercial terms.
  • Webhook deliveries and API logs, generated in the browser.

Test keys

Test keys start with kp_test_. They are fictional: they only exist in the demo and cannot authenticate anywhere. See API keys for prefixes and rolling.

Test identifiersbash
# Secret key: server-side onlykp_test_sk_4f9a2c7e1b8d4a6f9c3e5d7b​# Publishable key: reserved for future client-side usekp_test_pk_8b1d3f5a7c9e2b4d6f8a0c2e​# Webhook signing secretwhsec_test_2e4c6a8b0d1f3a5c7e9b

Test cards

Use these numbers in the card form of the hosted checkout. Any future expiry date and any CVC work.

Card numberResult
4242 4242 4242 4242Approved: the charge becomes paid
4000 0000 0000 0002Declined with card_declined
4000 0000 0000 9995Declined with insufficient_funds
4000 0000 0000 0069Declined with expired_card
4000 0000 0000 0127Declined with incorrect_cvc
  • Any other number that passes the card checksum (Luhn) is approved.
  • Numbers that fail the checksum are declined with card_declined.
  • A declined attempt marks the charge failed and sends charge.failed. See payment failures.

Warning: Never use a real card

The demo does not validate cards with anyone, so a real number adds nothing and only exposes your data. Card numbers and CVC stay in the form's memory and are never stored.

Pix simulation

  1. Step 1: Choose Pix

    Open a pending charge or a payment link in the hosted checkout and choose Pix.

  2. Step 2: Get the demo code

    The page shows a fictional QR code and copy-and-paste code. They are deliberately not in the real format, so no banking app can read them.

  3. Step 3: Simulate the payment

    Open Demo controls and press Confirm Pix payment. The charge becomes paid and charge.paid is delivered.

If nobody pays before the countdown ends (15 minutes in the demo, a demo value), the charge becomes expired and charge.expired is delivered. Expire the code in the demo controls does the same at once.

A charge waiting for paymentJSON
{  "id": "chg_9Qs5MbT2kXn8Vd",  "object": "charge",  "amount": 49700,  "currency": "BRL",  "status": "pending",  "method": null,  "card": null,  "description": "Curso Identidade Visual do Zero",  "customer_id": "cus_8Hq2LmZr4TxN1a",  "product_id": "prod_3Vb7QpK9sWd2Ee",  "price_id": "price_5Kd1NcR8vYq3Hm",  "link_id": null,  "subscription_id": null,  "fee": null,  "net": null,  "refunded_amount": 0,  "failure_code": null,  "created_at": "2026-11-03T18:40:00.000Z",  "paid_at": null,  "expires_at": null,  "available_at": null,  "checkout_url": "https://krokopay.app/pay/chg_9Qs5MbT2kXn8Vd"}

Webhooks in test

Endpoints you add in Developers → Webhooks receive simulated deliveries with the same envelope as the API. The deliveries are generated in your browser: your URL is never called. Use them to check the payloads and the signing flow described in Webhooks.

charge.expiredJSON
{  "id": "evt_3Xx4Yy5Zz6Aa7B",  "object": "event",  "type": "charge.expired",  "api_version": "2026-11-01",  "created_at": "2026-11-03T18:55:00.000Z",  "data": {    "object": {      "id": "chg_9Qs5MbT2kXn8Vd",      "object": "charge",      "amount": 49700,      "currency": "BRL",      "status": "expired",      "method": "pix",      "card": null,      "description": "Curso Identidade Visual do Zero",      "customer_id": "cus_8Hq2LmZr4TxN1a",      "product_id": "prod_3Vb7QpK9sWd2Ee",      "price_id": "price_5Kd1NcR8vYq3Hm",      "link_id": null,      "subscription_id": null,      "fee": null,      "net": null,      "refunded_amount": 0,      "failure_code": null,      "created_at": "2026-11-03T18:40:00.000Z",      "paid_at": null,      "expires_at": "2026-11-03T18:55:00.000Z",      "available_at": null,      "checkout_url": "https://krokopay.app/pay/chg_9Qs5MbT2kXn8Vd"    }  }}

What does not exist yet

ItemStatus
Live keys and live modeNot available. To be announced.
Working API endpointsNot operational. The contract is a provisional proposal.
SDKs and packagesNone published. Use cURL or fetch.
Real Pix codes and real card processingNot available. Test codes and test cards only.
Real webhook delivery to your URLNot available. Deliveries are simulated in the browser.
Fees, payout times and other commercial termsTo be announced. Values in the demo are illustrative.

Reset demo data

Everything you create is kept in this browser only. To start over, open the account menu at the top right of the dashboard and choose Reset demo data: the original fictional data comes back and your changes are removed. More answers in Help.