Skip to content
KrokoPay

Payments platform with its own checkout

Accept Pix and card with one integration.

One API for charges, a hosted checkout that carries your name and colors, payment links, subscriptions and a webhook for every status change. Built for developers and founders selling in Brazil.

Test mode never moves real money.

Test mode

Interactive checkout demo

This is the hosted checkout your payers see. Switch to card and simulate a payment.

What you can do right away

  • An interactive checkout to try on this page
  • cURL and fetch, nothing to install
  • Test keys and test cards

No real payment is made.

Estúdio Jacarandá

Checkout by KrokoPay

Test mode

Order summary

Visual identity course

R$497.00

TotalR$497.00

Scan the QR code to pay

Waiting for paymentExpires in 14:52
KROKOPAY-DEMO|PIX|chg_9Qs5MbT2kXn8Vd|BRL|49700|NOT-A-REAL-PIX-CODE|F597D6CD

Demo control: marks this fictional charge as paid.

Kroko, the KrokoPay crocodile, holding a phone that shows a confirmed payment

Chapter 01 · Accept

One charge. Pix or card.

Create the charge once and let the payer choose how to pay. Both methods share the same statuses and the same webhook events, so your order logic is written one time.

Life of a charge

Statuses your system reads, and the event sent for each one.

CreatedPendingcharge.created

Can end as

  • Paidcharge.paid
  • Failedcharge.failed
  • Expiredcharge.expired
  • Refundedcharge.refunded

Pix: the payer scans, your system knows

  • QR code and copy-and-paste code on the same screen, with the expiry counting down.
  • When the payment is confirmed, charge.paid goes to your endpoint and the dashboard updates.
  • Unpaid charges expire on their own and end in charge.expired, so nothing stays open.

What the payer sees

Estúdio Jacarandá

Checkout by KrokoPay

Test mode

Order summary

Visual identity course

Lifetime access · 32 lessons

R$497.00

TotalR$497.00
Generating your Pix code…

What your system receives

Step 1 of 4

Created

Your system creates a charge through the API, a payment link or the dashboard. The payer is sent to the checkout.

Charge status
Pending
Reference
chg_9Qs5MbT2kXn8Vd

Webhook event

{
  "type": "charge.created",
  "data": { "object": {
    "id": "chg_9Qs5MbT2kXn8Vd",
    "status": "pending"
  } }
}

Times shown are demo values, not commercial terms.

Interactive demo with fictional data. No real payment is made.

Chapter 02 · Sell

A checkout with your name on it.

Payers see your business, your color and your product, not a generic payment page. And when you don't want to write code, a payment link opens the same checkout.

Hosted checkout

Pick a sample brand or type your own name and color. The preview is the same component the payment page uses.

  • Pix and card on one page
  • In English or Portuguese for the payer
  • Amounts always in reais (BRL)

Example brands

Accent color

Plum

Name, initials and color come from your checkout settings.

Ateliê Jacarandá

Checkout by KrokoPay

Test mode

Order summary

Ceramics workshop

R$189.00

TotalR$189.00

Scan the QR code to pay

Open your bank app, choose Pix and scan the code, or copy the code below.

Waiting for paymentExpires in 14:52
KROKOPAY-DEMO|PIX|chg_9Qs5MbT2kXn8Vd|BRL|18900|NOT-A-REAL-PIX-CODE|E0B78FDD

Demo control: marks this fictional charge as paid.

Payment links: charge with a URL

Name, amount and accepted methods. Share the link by chat, email or social media, and every payment lands in the same dashboard as your API charges.

  • No code to start
  • Pix, card or both
  • Deactivate a link whenever you want

New payment link

R$
Type digits only; the last two are the cents.
Accepted methods
Link URL
https://krokopay.app/pay/plink_J1OIv2XZboI3Ag

Fictional URL for this demo. Real links are created in your dashboard.

What your customer sees

Estúdio Jacarandá

Logo design with 2 revisions

R$350.00

Accepted herePixCard

krokopay.app/pay/plink_J1OIv2XZboI3Ag

Chapter 03 · Bill monthly

Subscriptions with states you can see.

Trial, active, renewed, past due, paused or canceled: each change is a status in the dashboard and an event your system receives. You decide what happens to access at every step.

Members club

Monthly plan · R$49.00/month

sub_5Hn2RtK8wPz4Bq
Current status
Active
Next charge
Dec 3, 2026

Subscription history

  1. Trial started

    Aug 20, 2026
    The customer subscribed with a card. No charge during the trial.subscription.created
  2. First charge paid

    Sep 3, 2026
    Trial over: R$49.00 charged and the subscription is active.charge.paid
  3. Renewed

    Oct 3, 2026
    R$49.00 charged for the new period.subscription.renewed
  4. Renewal declined

    Nov 3, 2026
    The card had insufficient funds. The subscription is past due.subscription.past_due
  5. Payment recovered

    Nov 5, 2026
    The customer updated the card and the renewal was paid.subscription.renewed
  • subscription.renewed and subscription.past_due tell your product when to keep or limit access.
  • Pause, resume or cancel at the end of the period, from the dashboard or the API.
  • Monthly or yearly prices on the same product.

For developers

Read the request. Send it. Watch the webhook.

The API is a provisional contract proposal, documented in the open: cURL and fetch examples, idempotency keys and signed webhooks. Nothing here calls a real server.

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"    ]  }'
ResponseJSON
{  "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.

Webhook deliveries

A delivery that fails stays in the log with its HTTP status and can be sent again. Make your handler accept the same event twice.

Webhook deliveries

Endpointhttps://example.com/webhooks/krokopay

  • HTTP 200payout.paidpo_6Jm3XcV9qLs1NdAttempt 1Delivered02:00 PM
  • HTTP 200charge.failedchg_7Lc3PvN8yHd2WsAttempt 1Delivered01:02 PM
  • HTTP 200subscription.renewedsub_5Hn2RtK8wPz4BqAttempt 1Delivered12:00 PM
  • HTTP 200charge.paidRetrychg_9Qs5MbT2kXn8VdAttempt 2Delivered11:24 AM
  • HTTP 500charge.paidchg_9Qs5MbT2kXn8VdAttempt 1Failed11:23 AM
  • HTTP 200charge.createdchg_9Qs5MbT2kXn8VdAttempt 1Delivered11:21 AM

Times shown are demo values, not commercial terms.

Test keys

Test mode

These are the example keys from the docs. Your own test keys appear in the dashboard after you create an account.

Publishable key (test)
kp_test_pk_8b1d3f5a7c9e2b4d6f8a0c2e
Secret key (test)
Hidden value
Webhook signing secret (test)
Hidden value

Dashboard

Every charge in one place.

Payments from the API, from links and from subscriptions sit side by side, with customers, balance, payouts and the webhook log for your team.

  • Filter payments by status, method and period
  • Refunds and payouts with a clear history
  • Keys, webhooks and API logs in one tab
Explore the demo dashboard

Address: krokopay.app/dashboard

Overview

Last 14 days

Demo data
Gross
R$11,547.00
Payments
70
Average ticket
R$164.96

Gross volume

Gross volume per day over the last 14 days
DateGross volume per day over the last 14 days
Oct 21R$618
Oct 22R$497
Oct 23R$874
Oct 24R$723
Oct 25R$308
Oct 26R$248
Oct 27R$966
Oct 28R$1.1K
Oct 29R$841
Oct 30R$1.3K
Oct 31R$697
Nov 1R$456
Nov 2R$1.4K
Nov 3R$1.5K

Recent payments

  • Curso Identidade Visual do ZeroNot chosen yetR$497.00Pending
  • Curso Identidade Visual do ZeroVisa ending in 0002R$497.00Failed
  • Curso Identidade Visual do ZeroPixR$497.00Paid
  • Clube Jacarandá — MensalMastercard ending in 5100R$49.00Paid
Demo data

Fictional data. The preview shows gross amounts only; fees and payout terms are still to be announced.

How it works

From account to first paid charge.

Three steps, all of them in test mode first. You only move to live mode when you are ready.

  1. Create your account

    Your test keys are ready in the dashboard as soon as you sign up.

  2. Create a charge

    With one API call, a payment link or straight from the dashboard. The payer gets the hosted checkout.

  3. Get paid and get notified

    The payer pays by Pix or card, the charge turns paid and charge.paid reaches your endpoint.

Live mode activation: requirements and commercial terms are to be announced.

Create account

Pricing

Terms are still being defined.

We won't print numbers we can't stand behind. Fees, payout terms and limits will be published here and on the pricing page before live mode opens.

Commercial terms

Provisional
Pix fee
To be announced
Card fee
To be announced
Payout terms
To be announced
Monthly fee
To be announced

Test mode in this demo: nothing is charged

What KrokoPay is

  • A payments platform with its own checkout
  • An API described as a provisional contract proposal
  • A demonstration today: every payment on this site is fictional

What KrokoPay isn't

  • A bank or a licensed financial institution
  • An acquirer
  • A merchant of record

Questions before you start

Straight answers, including what is still undefined.

No. KrokoPay is a payments platform with its own checkout. It is not a bank, a licensed financial institution, an acquirer or a merchant of record. How payments are processed and settled will be described in the commercial terms, which are still to be announced.

To be announced. We don't publish fees or payout terms before they are defined. The pricing page lists what is still open, and any fee you see in the demo dashboard is a demo value, not an offer.

Yes. Test mode uses test keys that start with kp_test_ and test cards that approve or decline on purpose. Nothing in test mode moves real money.

Not at the moment. The API is a provisional contract proposal, and the docs show every call with cURL and fetch, so it works from any language that can make an HTTP request.

Each delivery is signed with your webhook secret in the KrokoPay-Signature header. A failed delivery stays in the log with its HTTP status and can be sent again, so write your handler to accept the same event more than once.

Yes. The hosted checkout shows your business name and accent color, and the payer can use it in English or Portuguese. Amounts stay in reais (BRL) in both languages.

No. Payment links and the dashboard work without code. The API and webhooks are there when you want the checkout inside your own product.

Start with a test charge, not a sales call.

Create an account, copy your test keys and send your first charge. Live mode and commercial terms will be announced.

No real payment is made.