Accepting payments with lava.top
A step-by-step guide: connect lava.top to CreateYourVPN so your clients top up their balance on your storefront. API key, webhook, top-up amounts and auto top-up.
lava.top accepts cards, SBP and PayPal in roubles, dollars and euros. Your clients use it to top up their balance in the cabinet on your storefront, and they buy plans from that balance: you don't have to grant anything by hand.
lava.top works with fixed amounts: the client picks one of the top-up amounts you set up, and every amount has its own offer with the same price. The client can't enter an amount of their own. If you want any amount, connect PayHot as well.
The money goes to your own lava.top account. CreateYourVPN is not a middleman in the payments and takes no commission on your sales.
Accepting payments is available on the paid Max tier: on it your storefront starts selling, and the customer balance turns on by itself. See the billing lesson for platform pricing.
What you'll need
- an account on lava.top (an "author" account, that is, the one that sells);
- 10–15 minutes for the initial setup;
- a small amount for a test top-up: lava.top has no test mode, so the only way to check the setup end to end is a real payment (the minimum is 50 ₽ / 5 $ / 5 €).
Step 1. Register and verify
Sign up at lava.top and fill in your profile: an empty profile makes your payment page look unfinished to the buyer.
Then go to Balance → verification and pass it: a document and a selfie, 18+, without a VPN turned on.
You can sell before verification, but you cannot withdraw money without it. Don't leave it until your first payout.
Step 2. Create your products
The price of a lava.top offer is the top-up amount. Create as many offers as the amounts you want to offer your clients.
- One-time top-up: a digital product, course or consultation with a fixed price. One offer gives one amount, for example 300, 500 or 1000 ₽.
- Auto top-up: a product of the "Subscription" type. lava.top charges the offer's price on its own schedule (every month, every 3 months, every 6 months or every year), and every charge tops up the client's balance.
- The offer needs a price in the customer account currency. You'll find the currency in the Monetization section, on the Customer balance card. lava.top accepts roubles, dollars and euros.
- Hide the products from your public lava.top page using hidden visibility. Do not enable "Price on request via API": CreateYourVPN works with fixed-price offers. A purchase made straight from your lava.top page arrives without our marker, and we won't know whose payment it is. Hidden fixed-price products still show up in your cabinet.
An offer in lava.top is a way to sell a product at a particular price and billing period. A product can have several offers, and in the cabinet you pick the right one for each amount.
Step 3. Connect the account in CreateYourVPN
Everything on the lava.top side lives in one place: Integrations in the left-hand menu, the API card.

Create an API key
Open the API card and press "Create API key". The key is shown once, so copy it right away: lava.top never shows it again, and a lost key can only be replaced by a new one.

Paste the key into your cabinet
In CreateYourVPN open Monetization, press "Connect" on the lava.top card, paste the key into the "lava.top API key" field and save.
We check the key immediately and answer either "Key accepted", with the number of products found in your account, or "lava.top didn't accept this key".
Right after saving, two more values appear in the same form: the Webhook URL and the webhook key. They're what you paste into lava.top in the next step. The webhook key is generated by us, you don't have to invent one.
Add the webhook
lava.top offers this right after the key is created: press "+ Add Webhook". The same button is available later on the API page.

You only need one webhook: the event type field takes all the events at once.

URL: the webhook URL from your cabinet. lava.top only accepts HTTPS, and ours already is.
Event type: tick all the events in the list. It is multi-select, so a second webhook is not needed.
Type of authentication for Webhook: choose "API key of your service" and paste the webhook key from your cabinet into the "API key" field. Basic works too, we accept it, but that's two fields instead of one.
Comment: optional, for yourself. Something like "CreateYourVPN, payments" helps when you have several integrations.
lava.top does not provide a cryptographic signature for the request body, so the webhook key authenticates the delivery. Treat it like a password.
Don't leave any event unticked: without the recurring payment events, your clients' auto top-ups never reach their balance. Ticking everything is always safe.
What the API key gives us
lava.top has no read-only keys: an API key grants full access to the author account. We use it for exactly three things: creating a payment when a client clicks "Pay"; reading your product catalogue so you can pick offers in the cabinet; and cancelling a subscription when a client turns off auto top-up or auto-renewal in their cabinet. We never change prices, never export your sales and never touch anything else. The key is stored encrypted, is never shown again and never appears in our logs. If you ever want to cut access off, remove the connection in the cabinet: the key is deleted with it.
Step 4. Add top-up amounts
Open Plans and find the Balance top-ups block.
Click "Add top-up", pick a one-time offer in the "lava.top offer" list and click "Add top-up" in the dialog. The amount becomes the offer's price. Add every amount this way, up to 20 of them.
For an auto top-up, click "Add auto top-up", pick a lava.top subscription and click "Add auto top-up" in the dialog. The offer sets the amount and the frequency, for example 500 ₽ every month. The cabinet tells you which plan such a top-up covers.
Check the warnings on the rows, if any. The cabinet tells you when the offer has no price in the balance currency, when the offer costs something other than the amount, and when the offer is gone from lava.top.
Just created a product in lava.top and don't see it in the list? Press "Refresh list": the catalogue is cached for a minute.
Until you add an amount or connect PayHot, your clients have nothing to top up with: the "Top up your balance" window tells them "Top-ups aren't available yet". Add at least one amount no lower than the price of your most expensive plan: then a client with an empty balance can top up and buy the plan in one payment, with the "Top up and buy" button.
You don't pick an offer in the plan itself: a plan in the account currency is bought from the balance. The exception is a plan priced in another currency and tied to an offer earlier: the client pays for it through lava.top directly.
What the client sees
In the cabinet on your storefront, the client clicks "Top up". On the "One-time" tab they pick one of your amounts and a payment method: a card, SBP (roubles only), or PayPal if the offer has a price in dollars or euros. On the "Automatic" tab they turn on an auto top-up: by card or PayPal, as lava.top subscriptions don't take SBP. The balance always receives the top-up amount in the account currency, even when the client paid in another currency.
An auto top-up needs a subscription plan with a term and a price in the account currency: without one, the client has no "Automatic" tab. An auto top-up works together with auto-renewal of the plan from the balance: auto-renewal turns on by itself when the client connects the auto top-up, and if the client has no plan yet, the first charge buys it. A client has one auto top-up.
Step 5. Check it with a real payment
From a client account on your storefront, top up the balance by the smallest amount. Within a minute the money should appear on the balance, and in the Monetization section, in the Payment journal, a balance top-up should show up with the "Processed" status. Then buy a plan from the balance.
If it doesn't:
- the event is not in the journal at all: the webhook in lava.top points at the wrong address, doesn't have all the events ticked, or its key doesn't match the one in the cabinet. lava.top keeps a webhook history with a resend button, a good place to start;
- the event is there, but the money isn't on the balance: the event carries a "Not credited to the balance" note with a hint. Check the payment in lava.top and add the amount with an adjustment in the client's card;
- "Unmatched": we couldn't tell whose payment it is. That happens when a client bought a product straight on your lava.top page, bypassing the storefront. Find the client and add the amount with an adjustment in their card;
- "Needs attention": the event needs your decision, and the event itself says what to do.
If a subscription charge fails, lava.top makes two more attempts, after 8 and 24 hours, and sends the failed-payment notification only after the final one. The client sees in their cabinet that the last charge didn't go through. The money already on the balance stays with the client.
Money matters
- lava.top's commission: 8 % of every successful payment. It is taken immediately and is not returned if you later refund the client.
- Refunds are made from the lava.top dashboard, in the Sales section; a refund on a subscription cancels the subscription. A refund or chargeback notification arrives in the journal with the "Needs attention" status. The client's balance doesn't go down by itself after a refund: deduct the same amount with an adjustment in the client's card.
- Turning off an auto top-up. The client turns it off in their cabinet on your storefront, and we ask lava.top to cancel the subscription. If the client turns off auto-renewal of their plan, the auto top-up turns off with it. You can also cancel the subscription in the lava.top dashboard. The money on the balance doesn't burn either way.
- A chargeback can be raised up to 540 days after the payment, and you have 3 days to submit evidence. Keep your terms of sale, correspondence with the client, and proof that access was provided.
- Payment limits depend on the product type. The minimum is always 50 ₽ / 5 $ / 5 €. For subscriptions, the maximum is 300 000 ₽ / 3 000 $ / 3 000 €; for one-off products, it is 1 000 000 ₽ / 10 000 $ / 10 000 €.
If a key leaks
Two separate buttons on the lava.top card, and they do different things:
- "Rotate webhook key" issues a new key for incoming notifications. Paste the new value into the webhook in lava.top; until you do, payments won't be confirmed.
- "Rotate webhook URL" issues a new address. The old one stops working immediately; update it in the webhook too.
If the API key itself leaked, revoke it in lava.top, create a new one and paste it into the cabinet.