Peer-to-peer · no signup · no KYC

Spend bitcoin, walk away with euro cash.

You landed in Slovakia with sats and you need banknotes. At more than half of the ATMs in the country you can pull euros out of an ordinary cash machine using a six-digit code — no card, no bank account, no exchange, no ID. Slovakia is in the eurozone, so what comes out is plain EUR.

Tatra banka·Slovenská sporiteľňa·VÚB·Prima banka· Cardless withdrawal·Lightning escrow·No KYC· P2P·Open source

01 — How it works

Two people, one ATM, nobody in the middle

Bitblik is not an exchange. It is a matchmaker and a referee at the same time — your sats sit locked at a coordinator for the whole trade and are released only once the cash has actually changed hands.

First, the thing that has no equivalent in most countries

Slovak banks let their own customers withdraw cash without a card: you tap a button in your banking app and it prints a six-digit code, valid for a few minutes, that any ATM of that bank will accept. Whoever holds the code takes the money out. Bitblik simply pairs the person who wants to spend bitcoin with the person willing to generate such a code — and holds the sats in escrow until the banknotes are in hand.

You spend bitcoin, you take the cash

in the app: “Pay a code” · maker

  1. You create an offer: bank + amount in euros.
  2. You pay an invoice — your sats get locked at the coordinator.
  3. The other side sends you a six-digit code.
  4. You walk to an ATM of that bank, choose cardless withdrawal, type the code and take the cash.
  5. You confirm in the app — the sats go to the other side.

You need no Slovak account and no card. This is the side a visitor uses.

You have a Slovak account, you get bitcoin

in the app: “Buy bitcoin” · taker

  1. You pick an open offer from the list and accept it.
  2. In your banking app you generate a cardless withdrawal code.
  3. You type the code into Bitblik.
  4. The spender goes to the ATM and takes the cash — out of your account.
  5. When they confirm, sats land in your Lightning wallet.

You never leave your chair. This side needs an account at Tatra banka, SLSP, VÚB or Prima banka.

You never meet anyone

There is no handover, no café rendezvous, no stranger counting notes next to you. The person on the other side is at home; you are alone at a normal bank ATM in a normal street, doing what looks exactly like an ordinary withdrawal.

Why this isn't a scam

From step two the spender's sats are in escrow — the coordinator holds a Lightning hold invoice. The spender can no longer move them, and the other side cannot get them either until the spender confirms the withdrawal. If the trade fails, the invoice is cancelled and the sats come back. An offer nobody accepts expires after ten minutes and the spender gets everything back.

02 — Privacy

What the bank learns about you

If you spend bitcoin (you take the cash)

The bank knows nothing about you.

  • You have no account and no card with them.
  • You show no ID, sign nothing, register nowhere.
  • At the ATM you type six digits and take the banknotes.
  • Bitblik itself never asks for an e-mail or a phone number — your identity is a Nostr key the app generates on its own.

The only trace is the ATM camera — exactly as with any other withdrawal. Your ceiling isn't a rule, it's liquidity: you get as many euros as somebody is offering right now.

If you get bitcoin (you give the code)

The bank sees an ordinary withdrawal from your account.

  • That you generated a cardless withdrawal code.
  • The amount, the time and which ATM it was taken from.
  • It does not see bitcoin, Bitblik, or who stood at that ATM.

From the bank's point of view it is a withdrawal from your own account — the kind you make anyway. It is not bottomless though: banks put their own limits on cardless withdrawals, and repeated withdrawals of identical amounts are a visible pattern in their systems.

Limits set by the bank on the cash side

These are not Bitblik's limits — they belong to the bank of the person giving the cash. They decide how big a trade can be.

BankCode validityPer withdrawalPer dayOther limits
Tatra banka20 minutes€200€200 Tied to the card's cash limit, adjustable in the bank's app.
Slovenská sporiteľňa15 minutes€500€500 / 5 withdrawals Max €3,000 and 30 withdrawals per month. Works at ~750 SLSP ATMs.
VÚB banka10 minutes€500the card's daily limit applies At most 5 generated codes per day.
Prima bankacheck the appcheck the appcheck the app Verify the cardless withdrawal limits in the Prima banka app.

The validity windows are the ones the app actually counts down. The amounts follow the banks' public information as of August 2026 — before a bigger trade, check the limit in your own banking app. Watch out with VÚB: the code lasts 10 minutes, but the person giving the code cannot see where the spender is standing — so the spender publishes the offer only once at the ATM, and the code is generated only after the offer is accepted.

03 — Map

Where you can withdraw

A cardless code only ever works at ATMs of the bank that issued it. Below are all the ATMs of the four banks Bitblik supports in Slovakia — that is why you accept an offer for the bank whose ATM you can actually reach.

Source: OpenStreetMap, August 2026. Treat it as a lower bound — OSM does not have every ATM mapped and the banks keep changing their networks. Click a dot for the address and directions. Slovak street names you will see on the map: ulica = street, námestie = square, trieda = avenue.

04 — Install

Get Bitblik

The Slovak market is supported from version 0.10.0 onwards. The app is open source and every build is signed with the developer's key. Android only for now.

Zapstore is an open app store built on Nostr — every release is cryptographically signed, so you know you are installing the real author's app and not a fake. If you don't have Zapstore yet, get it from zapstore.dev. With the raw APK, pick the arm64-v8a file — that is practically every phone made in the last decade.

Don't want to install anything? The same app also runs in the browser at app.veks.li — but there the browser holds the wallet, so clearing site data loses it.

Before your first trade

  • On first launch pick the Slovakia market; the app finds a coordinator by itself.
  • The language switch is the 文A icon at the top — English is in there.
  • Add a wallet under Settings → Wallet. The built-in Cashu wallet is the easiest start; if you run your own node, connect it over NWC.
  • Back up the Cashu wallet seed phrase. The app nags you with a yellow bar — don't ignore it.
  • Fund the wallet before you stand at the ATM. Airport and hotel wifi is enough; both sides just have to be online at the same time.

05 — Guide

Step by step

Screenshots below show the Slovak interface — the app itself speaks English too.

  1. Create an offer

    Tap “Pay a code — with bitcoin”, choose ATM, then the bank and the amount. Presets are €10 / 20 / 50 / 100 / 200.

    Pick the bank whose ATM you can actually walk to — the code works nowhere else. Check the map above before you publish.

    New offer form
  2. Premium: want it filled? Leave it at 0%

    The premium is an optional markup over the market rate. With it you lock fewer sats for the same cash — you are spending your bitcoin at a better price and the difference stays with you. It is off until you switch it on in the settings, and the coordinator caps how high it can go.

    The other side sees the premium on your offer and picks accordingly. The higher it is, the longer the offer sits there unaccepted — 0% fills fastest.

  3. Custom amount? Only what an ATM can dispense

    The app refuses amounts that cannot be built from banknotes. Try €5 and it tells you: “The ATM cannot dispense this amount.” So the real minimum is €10.

    Banknote denomination check
  4. Lock the sats

    You pay a hold invoice from your wallet. From this moment the sats are in escrow — no longer freely yours, but nobody can hand them to the other side without your confirmation.

    Hold invoice
  5. Wait for someone to take it

    The offer stays public for 10 minutes. If nobody accepts it, the invoice is cancelled and you get everything back.

    Publish it when you are already standing at the ATM, not on the way there.

    Waiting for a counterparty
  6. Go to the ATM

    You get the six-digit code plus exact instructions and a link to that bank's ATM map. On the ATM screen choose cardless withdrawal — in Slovak Výber bez karty or Výber cez mobil — and type the code. No card needed. Slovak ATMs have an English menu; switch the language first if you like.

    Code received with ATM instructions
  7. Confirm — and it's irreversible

    Only once the banknotes are in your hand, tap “Confirm successful payment”. The app asks you to confirm twice on purpose: after that the sats are paid out to the other side immediately and it cannot be undone.

    Confirming the payment is irreversible
  1. Open the offer list

    On the home screen tap “Buy bitcoin — with a code”. You will see the open offers: the amount in euros, your fee and the bank tag of the ATM the spender picked. Only accept an offer for the bank you actually have an account with.

    If an offer also carries a pink +X% premium tag, you are buying above the market rate — the same euros get you fewer sats. Offers without a premium are at market.

    An offer lives 10 minutes. If you see none, nobody is offering right now — turn on notifications through the SimpleX link on that same screen.

    Offer list with a bank tag
  2. Generate the code in your banking app

    After accepting you have 120 seconds. Switch to your banking app and have it issue a cardless withdrawal code for exactly the same amount as the offer.

    Which is why it pays to have the banking app open before you accept.

    Entering the six-digit code
  3. Type the code and send it

    Six digits into Bitblik, then “Send code”. Careful — right below it sits “Cancel reservation”, easy to hit by mistake.

    Waiting for the spender
  4. Wait for the withdrawal

    The app counts down the time the spender has to withdraw — 20 minutes with Tatra banka. That is when the amount leaves your account.

    Your bank may add its own ATM fee on top. The app warns you about it.

    Sats paid out
  5. You get the sats

    Once the spender confirms, the coordinator releases the escrow and pays your Lightning invoice. The whole trade takes minutes, not hours.

06 — Disputes

When something goes wrong

Read this before you need it.

One rule above all others

The spender confirms only with banknotes in hand. The cash side opens a dispute only when the money has really left the account. Most problems come from somebody clicking before anything actually happened.

What the app does on its own

SituationTimerOutcome
Nobody accepts the offer10 minutesInvoice cancelled, the spender gets everything back.
Code not sent in time120 secondsThe reservation drops, the offer goes back on the open list.
Spender never picks up the codecode validityThe code expires, the offer goes back on the open list. Nothing was debited.
The two sides disagree (conflict)exactly 60 minutesThe escrow is settled in the coordinator's favour — the spender's sats are captured and no longer come back automatically. They are not paid to the other side either: the money waits for a human decision.

Worked examples

Fraud The spender withdrew the cash but claims the code failed

The classic. They took the money and then hit “Invalid code” in the app, hoping to get the escrow back and keep the cash too.

What you see on the cash side: a screen asking you the only question that matters — whether the money did or did not leave your account.

Spender marked the code invalid
The spender marks the code invalid
The cash side decides based on their account
You answer from your own account, not from the story

Do this: if the amount left your account, tap “Start dispute”. If it did not, nothing happened — send a new code or cancel the trade.

Don't do this: never send a second code if the first one was already debited. You would be paying twice. The app warns you about it too.

Fraud The cash side sends a made-up or already used code

The spender stands at the ATM for nothing. The fix is simple: “Invalid code”. The offer returns to the open list and finds another counterparty — the escrow goes nowhere.

Do this: never press “Confirm successful payment” before the ATM has handed you the money. That button is the only thing that can take your sats away.

Misunderstanding The code expired before the spender reached the ATM

Most often with VÚB, which has the shortest window of the supported banks. It costs nobody anything: nothing was debited, the offer returns to the open list.

Neither side can see where the other one is, so the responsibility is shared:

Spender: publish an ATM offer only when you are standing at the ATM. With VÚB you have 10 minutes from the moment the code is sent.

Cash side: never generate the code in advance — only after accepting, and send it immediately. If the trade falls through, cancel the pending withdrawal in your banking app.

Dispute Both sides stick to their story

If the spender marks the code invalid and the other side says “it was debited”, you get a conflict. The app shows the coordinator's contact — a Nostr address you can send a direct message to, with your bank statement attached.

Dispute confirmation dialog
Open a dispute only with evidence
Coordinator contact over Nostr
The coordinator settles it over a Nostr DM

Have ready: a statement or screenshot from your banking app showing the amount, the time, and that it was a cardless withdrawal. Without evidence the coordinator is just another person hearing two contradictory claims.

What happens if nobody intervenes — measured live

We played this scenario out on the live market and let it run untouched. To the second:

At that escalation the hold invoice was settled — the spender's sats were captured and will not come back automatically. They were not paid out to the other side either. The money stayed with the coordinator and the trade waits for a human decision; both sides see the coordinator's Nostr contact on that same screen.

The lesson: an hour of silence does not decide the dispute in your favour — it just freezes the state and hands the case to a human. Contact the coordinator immediately, with evidence, instead of waiting for the timer.

07 — FAQ

Questions visitors ask

Q · 01Do I need a Slovak bank account?

Not to spend bitcoin and take the cash — that side needs nothing but your phone and a walk to the ATM. You only need an account at Tatra banka, SLSP, VÚB or Prima banka for the other side of the trade, where the cash leaves your account. As a visitor you will be on the spending side.

Q · 02Do I have to meet anyone?

No. There is no physical handover — the counterparty stays wherever they are and you stand alone at a bank ATM. That is the main practical difference from a classic P2P cash trade.

Q · 03What does it cost?

The fee is set by the coordinator your trade runs through — it is not part of the app or the protocol and it differs between coordinators. The app shows it on every offer before you confirm, in sats and in euros. The bank may add its own ATM fee on the cash side.

Q · 04What is the premium on an offer?

An optional markup over the market rate, set by the side that spends the bitcoin: for the same cash they lock fewer sats, so they spend at a better price and keep the difference. The other side sees it on the offer and pays above market. It is off by default (0%) and the coordinator caps it. Offers with a premium take longer to fill — if what you want is a trade that actually happens, leave it at 0%.

Q · 05What is the smallest and the biggest trade?

Smallest €10 — an ATM cannot dispense less. The ceiling is the limit of the other side's bank (€200 at Tatra banka, €500 at SLSP and VÚB; for Prima banka check its app) and how much anybody is offering at that moment. For a bigger amount, do several trades rather than one.

Q · 06I don't speak Slovak. Will I manage at the ATM?

Yes. Slovak ATMs have an English menu — switch the language first and look for cardless withdrawal / withdrawal without card. In Slovak the same option reads Výber bez karty or Výber cez mobil.

Q · 07Does the app have to stay open?

Yes, both sides must be online at the same time. The whole trade takes minutes, not hours — so do it when you have a stable connection, not while boarding a bus.

Q · 08Where do my sats sit before I spend them?

In a wallet inside the app. The built-in Cashu wallet is the simplest — top it up with a Lightning invoice before you travel. If you run your own node, connect it over NWC.

Q · 09Is Bitblik a Slovak project?

No. It is an open project that started in Poland with BLIK codes. The Slovak support was written by the local community and runs on a Slovak coordinator.