For digital products
Sell your course with a link
You do not need a store to sell what you teach. Create a payment link, share it in your bio, your launch email or your community, and release access as soon as the payment is confirmed.
Build a link on the right. Nothing is published.
What your customer sees
Logo design with 2 revisions
R$350.00
krokopay.app/pay/plink_J1OIv2XZboI3Ag
From link to access
Three steps, no website required
The link, the checkout and the confirmation are KrokoPay's. Delivering the content stays with you.
Create the link
Name, price and accepted methods, in the dashboard.
Share it
Bio, email, group or the button on your page.
Release access
On charge.paid, by webhook or by checking the dashboard.
Your brand at checkout
A checkout that looks like yours
Students pay on a page with your name and color, not on a generic screen that makes them wonder who is charging. Switch the examples to see how it adapts.
- Your business name and color on the payment page.
- Pix and card on the same page.
- The product description the student is buying.
Example brands
Accent color
Ember
Name, initials and color come from your checkout settings.
Estúdio Brasa
Checkout by KrokoPay
Order summary
Brand photography session
R$450.00
Scan the QR code to pay
Open your bank app, choose Pix and scan the code, or copy the code below.
KROKOPAY-DEMO|PIX|chg_9Qs5MbT2kXn8Vd|BRL|45000|NOT-A-REAL-PIX-CODE|019224DCDemo control: marks this fictional charge as paid.
Access on payment
Paid, released. Refunded, revoked.
Your platform listens to two events: charge.paid releases the course, charge.refunded removes it. Simulate both for a fictional student.
Your system
Interactive demoIllustration course · student
- Student
- aluna@example.com
- Product
- Character drawing, from sketch to color
- Charge
- chg_5Tc9DgW1kL4mRz
- Status
- Access locked
Event received by your endpoint
export async function POST(request) { const payload = await request.text(); const signature = request.headers.get("KrokoPay-Signature"); if (!verifySignature(payload, signature, process.env.KROKOPAY_WEBHOOK_SECRET)) { return new Response(null, { status: 400 }); } const event = JSON.parse(payload); const charge = event.data.object; if (event.type === "charge.paid") { await courses.grantAccess({ chargeId: charge.id }); } else if (event.type === "charge.refunded") { await courses.revokeAccess({ chargeId: charge.id }); } return new Response(null, { status: 200 });}Provisional API contract proposal — not an operational endpoint. verifySignature stands for the signature check described in the webhooks docs. Contract proposal, subject to change.
No code? Every paid charge also shows in the dashboard, so you can release access by hand.
Open the payments dashboardTransparency
What is ready and what is not yet
Launches are planned weeks ahead, so here is the honest picture.
Already in the product
- Payment links with your name and price.
- Checkout with your brand, Pix and card.
- charge.paid and charge.refunded events.
- Refunds from the dashboard.
Still being defined
- Card installments.To be announced
- Fees and payout times.To be announced
Questions from creators
Including what KrokoPay does not do.
Keep exploring
The products behind this page, the docs to integrate them and the other segments.
Create the link for your next launch
Open your account, build a test link and see the checkout your students will see.
No real payment is made.
