Developers
One request. Pix and card.
Create a charge with the methods you accept, send the customer to the hosted checkout and confirm payment with a signed webhook. Plain HTTP and JSON, with test keys from day one.
Test keys never move real money.
- Provisional API proposal
- No SDK published
API at a glance
- Base URL
https://api.krokopay.app/v1- Version
2026-11-01- Authentication
Authorization: Bearer kp_test_sk_…- Test secret key
kp_test_sk_4f9a2c7e1b8d4a6f9c3e5d7b- Test publishable key
kp_test_pk_8b1d3f5a7c9e2b4d6f8a0c2e- Idempotency header
Idempotency-Key- Signature header
KrokoPay-Signature
Fictional test values. Your keys appear in the dashboard after sign-up.
One integration
Pix and card share one flow
There is no separate Pix integration. The methods field decides what the checkout offers, and the same events report the result.
Create the charge
POST /charges with the amount and methods: ["pix", "card"].
Send to checkout
Redirect to checkout_url. The customer picks Pix or card.
Receive the event
charge.paid or charge.failed arrives signed at your endpoint.
Fulfill once
Mark the order paid using the charge id, ignoring repeats.
curl -X POST https://api.krokopay.app/v1/charges \ -H "Authorization: Bearer kp_test_sk_4f9a2c7e1b8d4a6f9c3e5d7b" \ -H "Idempotency-Key: order_1042" \ -H "Content-Type: application/json" \ -d '{ "amount": 49700, "currency": "BRL", "description": "Curso Identidade Visual do Zero", "customer_id": "cus_8Hq2LmZr4TxN1a", "methods": [ "pix", "card" ] }'Try it
See the request and the response
Switch calls and languages. Every example runs against fictional data in the page: nothing is sent.
curl -X POST https://api.krokopay.app/v1/charges \ -H "Authorization: Bearer kp_test_sk_4f9a2c7e1b8d4a6f9c3e5d7b" \ -H "Idempotency-Key: order_1042" \ -H "Content-Type: application/json" \ -d '{ "amount": 49700, "currency": "BRL", "description": "Curso Identidade Visual do Zero", "customer_id": "cus_8Hq2LmZr4TxN1a", "methods": [ "pix", "card" ] }'{ "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, "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"}Press “Send test request” to simulate the customer paying and the charge.paid event arriving at your endpoint.
- Provisional API contract proposal — not an operational endpoint.
- Payloads abridged for this example.
- Simulated in your browser. Nothing is sent over the network.
The building blocks
Built so a retry is never a second charge
Four things you can rely on when the network, the customer or your own server misbehaves.
Webhook deliveries
Watch every delivery arrive
The dashboard lists each event sent to your endpoint with its status and payload, so you can see what your server received and when.
- Each delivery shows the event type, the HTTP status your server answered and the payload.
- Failed deliveries are visible next to the successful ones.
- How many times a failed delivery is retried is to be announced.
Webhook deliveries
Endpointhttps://example.com/webhooks/krokopay
- HTTP 200
payout.paidpo_6Jm3XcV9qLs1NdAttempt 187 msDelivered02:00 PM - HTTP 200
charge.failedchg_7Lc3PvN8yHd2WsAttempt 1111 msDelivered01:02 PM - HTTP 200
subscription.renewedsub_5Hn2RtK8wPz4BqAttempt 198 msDelivered12:00 PM - HTTP 200
charge.paidRetrychg_9Qs5MbT2kXn8VdAttempt 2126 msDelivered11:24 AM - HTTP 500
charge.paidchg_9Qs5MbT2kXn8VdAttempt 1318 msFailed11:23 AM - HTTP 200
charge.createdchg_9Qs5MbT2kXn8VdAttempt 1142 msDelivered11:21 AM
Times shown are demo values, not commercial terms.
Docs path
From first request to production-ready
Seven short guides, in the order you will need them.
- Step 1QuickstartA test charge end to end in a few minutes.
- Step 2AuthenticationSecret and publishable keys, and where each one goes.
- Step 3Creating chargesAmounts, methods and the checkout URL.
- Step 4WebhooksEndpoints, the event catalog and signature checks.
- Step 5IdempotencySafe retries for every write request.
- Step 6ErrorsThe error envelope and the failure codes.
- Step 7Test environmentTest keys, test cards and simulated Pix.
Where things stand
What exists today, and what does not
We would rather you plan with accurate expectations.
Available to explore
- A documented API contract proposal: resources, events and error format.
- cURL and fetch examples for every call on this page.
- Fictional test keys and test cards to read the flows.
Not available
- SDKs or packages: none are published. Use plain HTTP.
- A stable contract: fields and codes may still change.
- Final fees, payout timing and retry schedules: to be announced.
Developer questions
Straight answers, including where the answer is not decided yet.
Make your first test charge today
Sign up, copy your test keys and follow the quickstart. Nothing you do in test mode charges anyone.
