Core concepts
Understanding how Skiro routes money will save you a lot of time when something looks unexpected. Here's the model.
Transaction flow
Every payment goes through five stages:
- Session created. You call the API to create a checkout session. We return a URL that's valid for 1 hour.
- Customer pays. The customer enters their card on the hosted checkout. The card is tokenized and authorized through our processing partner.
- Authorization captured. If the card clears 3DS and fraud checks, we capture the funds. The transaction enters
processingstate. - Conversion. We convert the captured fiat to your chosen crypto at the live rate, minus the platform fee.
- Payout. The crypto is sent to your wallet. The transaction moves to
completedand a webhook fires.
The whole flow typically takes 1 to 5 minutes from card swipe to wallet credit, depending on network congestion for the chain you chose.
Core objects
The API exposes four main objects:
| Object | What it represents |
|---|---|
checkout_session | A one-time URL where a customer can pay. Created by you. |
transaction | The actual payment record. Created when a customer completes a session. |
payout | The crypto transfer to your wallet. Linked 1:1 with a successful transaction. |
webhook | An endpoint you registered to receive event notifications. |
Payouts
Skiro does not custody merchant funds. The wallet address you configure in your dashboard is where every payout goes, automatically, on every successful transaction.
This is different from traditional processors that hold a balance you have to manually withdraw. There's no balance to manage on Skiro because there's no balance to begin with.
You can change the wallet address at any time. The new address takes effect for the next transaction; in-flight transactions keep going to the previous address.
Fees
Fees are deducted from the gross transaction amount before the payout is sent. So if you charge $100 on the Free plan (15% fee), you receive ~$85 worth of crypto in your wallet.
The fee includes everything: card processing, currency conversion, network gas (for the blockchain transfer), and Skiro's margin. There are no separate line items for chargebacks, withdrawals, or settlement.
See pricing for the breakdown by plan.
Test mode
Test mode lets you build and verify your integration without processing real money. Use a test API key (sk_test_...) and you'll get:
- Test card numbers that always succeed, always fail, or trigger 3DS challenges
- Mock payouts that complete instantly to a fake wallet address
- Webhook deliveries with the same shape as production
- A separate test data set in your dashboard, isolated from live data
You can switch between test and live mode at any time using the toggle in your dashboard sidebar.
Live vs test
Test and live are two separate environments. They have:
- Different API keys. Test keys can't make live charges and vice versa.
- Different webhook secrets. The secret you create in test mode won't verify live webhooks.
- Different data. Test transactions never appear in live reports, and vice versa.
When you ship to production, swap the API key and webhook secret in your environment variables. Nothing else needs to change.