Sign in

Guide

What this is, who it is for, and how a payment actually works.

Who is involved

Oathgate
The gateway. Quotes the price in Bitcoin, hands out an address, watches the chain, keeps the ledger, tells the shop when money lands.
The merchant
A shop that wants to accept Bitcoin. They take an API key and call the API from their checkout. This dashboard is theirs.
The customer
The person buying something. They never sign up and have no account here. They scan a QR code and send coins, and that is the whole of their involvement.

Only the merchant holds an account. Customers are never asked to register, install anything or trust Oathgate with a login, which is most of the reason crypto checkout converts at all.

What Oathgate does not do

  • Give a customer an account. They pay once and register nothing.
  • Exchange Bitcoin into lari and wire it to a bank.
  • Identity checks, sanctions screening, licensing.
  • Card terminals or a consumer wallet app.

Oathgate is the settlement engine. Between a payment settling and a merchant being paid out the coins sit in the gateway wallet and the balance is money owed, which is custody, and is most of why mainnet needs arrangements this project does not have. Treasury and compliance stay outside this codebase.

How one payment works, start to finish

  1. 01

    The shop asks for money

    Their checkout calls POST /v1/payments with an amount, a currency and their API key. "Charge this customer 10.50 GEL."

  2. 02

    Oathgate quotes and locks

    We convert 10.50 GEL to Bitcoin at the current rate, freeze that rate for fifteen minutes, and derive an address that belongs to this one payment and nothing else.

  3. 03

    The customer pays

    They scan the QR and send coins. Nothing has settled yet, because a transaction that has just been broadcast can still be undone.

  4. 04

    We wait for confirmations

    Each block mined on top makes the payment harder to undo, because undoing it means rebuilding every block since. One block is already worth far more than a coffee, so that is where this settles. Card payments have no equivalent of this step.

  5. 05

    We write the ledger and tell the shop

    Two rows are written that cancel out, the merchant balance goes up, and a signed webhook fires so the shop can mark the order paid.

Environments

This workspace settles on Bitcoin signet. That is a real Bitcoin network with real blocks, real confirmations and real addresses. The only difference from mainnet is that the coins are free, from a faucet, and worth nothing.

So sending actual coins to a payment here works, and is the most honest way to try this. You do not switch anything to do it, and you do not need to own Bitcoin.

Mainnet settles in Bitcoin that is worth money, which means Oathgate holds real money on your behalf between settlement and payout. Activation requires custody arrangements and regulatory approval, and is not enabled for this workspace.

Your integration does not change between the two. Keys carry the environment, every record carries the environment, and no query crosses between them. Activating swaps one key for another and nothing else in your code moves.

Getting started

  1. 1. Take a test key from the API keys page.
  2. 2. Call POST /v1/payments from your checkout and get back an address and an amount.
  3. 3. Show the customer the address, or send them to the hosted checkout page.
  4. 4. Send signet coins from a signet faucet and watch the payment confirm.
  5. 5. Point a webhook at your server so your shop marks the order paid on its own.
  6. 6. On a live account, swapping the test key for a live one is the whole change. Nothing else in your integration moves.

About the demo workspace

Opening the demo gives you a workspace of your own, created the moment you click in and named after a shop picked at random. No email, no password, and nobody else’s payments in it. It is seeded with two weeks of activity so every screen has something to show.

One thing here stands in for something outside the system: the Simulate customer payment button on a pending payment. In normal use a person sends coins from their own wallet. That button skips the chain and settles directly, so you can watch a payment complete in about ten seconds instead of waiting for a block.

Everything after that point is the real path: the same ledger entries, the same balance, the same signed webhook. The one visible difference is that a simulated payment has no transaction on the chain, so the on-chain card on its detail page stays empty.

Sending real signet coins to the address instead takes a few minutes and fills that card in. It is the more honest way to try this, and it costs nothing.

The search box reads plain English as well as ids. paid payments over 50 GEL last week works, and the line under the results shows you how it was read, so a wrong answer is a visible one. A language model does that reading on a free tier, and the small mark at the right of the box is how you know it is working. When the mark is gone the box has gone back to matching your text literally rather than failing, and if you catch it like that and want the full thing, tell me and I will bring it back.

What each screen is for

  • HomeHow the last two weeks went, and anything that needs looking at.
  • PaymentsOne row per attempt to charge a customer. Click any of them for the full story.
  • BalanceYour recorded Bitcoin balance and every ledger entry behind it.
  • API keysThe password your server uses to prove it is you.
  • WebhooksOathgate calling your server when something happens, so you do not have to keep asking.
  • EventsA log of everything the services did behind your payments. Where you look when something behaved oddly.
  • InsightsWhat the last two weeks are telling you. Settlement rate, where quotes are expiring, and how long customers actually wait. Counted from your rows, never guessed.
  • SearchThe box at the top of every screen. It takes an id or a reference, and it also reads a plain English question.