Product

Payment links

A URL you can paste into an email, a chat, or a QR on a printed invoice. The payer opens it and sees exactly what to send, where to send it, and how long they have. No account, no app, no card form.

Payment request Awaiting payment

Website build — milestone 2

0.0125 BTC

tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx

Expires in 14:52

Send only BTC on Bitcoin. Anything else is permanently lost.

Two kinds

An invoice, or an open link

The difference is whether you know the amount in advance. Everything else about them is the same.

Invoice

A fixed amount with a deadline. The page shows the exact figure to send and counts down; the request settles when that amount arrives.

Amount
Required, and must fit the asset's decimal places
Expiry
Defaults to 60 minutes, settable from 1 minute to 7 days
On short payment
Stays partial, and keeps accepting top-ups
On overpayment
Marked overpaid; the full amount is credited

Donation link

No amount and no deadline — a standing request you can publish once. The page invites any amount, and every payment that lands is credited and reported.

Amount
Refused. The payer decides
Expiry
None. It stays open until you cancel it
Each payment
Credited on arrival and reported as paid
Best for
Tip jars, recurring supporters, a public address you control

Both get their own address. A donation link used to reuse the standing deposit address, which broke attribution badly: two links collided, and an ordinary personal deposit to that address was captured by whichever link existed, flipping it to paid and firing a webhook for money that was never a donation. Every request now derives its own address, once, and keeps it.

The hosted checkout

What the payer actually sees

One page, no account, and nothing on it that belongs to you rather than to them.

A QR rendered here

The code is generated on our own server, never handed to a third-party QR service — sending a payment address to someone else's API to be drawn is an unnecessary place for it to be tampered with.

Copyable address and amount

Both are one tap, with the network named next to the address and a plain warning that sending the wrong asset loses it for good.

A countdown that ticks

Every second, in the browser. When it reaches zero the page flips to expired without waiting for a round trip.

Live status

The page polls every six seconds while the request is still payable, and stops the moment it settles or dies — an invoice polling forever is pure noise on someone's data plan.

Nothing of yours leaks

No merchant identity, no internal ids, and not your reference, which may carry order information. The page is marked noindex and sends no referrer.

A return path, if you set one

When a redirect URL is set, a settled page offers a Continue button. It is a button, not an automatic bounce: a payer who wants to screenshot the confirmation gets to.

Every state the page can be in

Pending Awaiting payment QR and address shown, countdown running
Partial Partially paid Shows what arrived and the remainder still due
Paid Paid QR withdrawn, amount and settlement time shown
Overpaid Paid in full Settled; the surplus is credited and visible to you
Expired Expired QR withdrawn, with any partial amount stated
Cancelled Cancelled QR withdrawn; the public endpoint answers 404

On any closed request the QR, the address and the explorer link are all withheld. There is nothing left to pay, so offering somewhere to send money would be an invitation to lose it.

Partial payments, in full

A customer who sends 0.004 against a 0.0125 invoice has not paid it. The request goes to partial, the page changes its heading from "Amount due" to "Remaining", and the QR now encodes what is still outstanding.

  • Top-ups are welcome

    A partial invoice keeps accepting payment even past its deadline. The customer's money is already on chain; expiring it would leave them paid and unserved.

  • Each payment is counted once

    Credits are keyed on the chain transaction, so a redelivered confirmation cannot mark an invoice paid twice.

  • You are told about the shortfall

    The running total and the outstanding remainder are on the object and in every callback, so your system can decide what a part-payment means to it.

Expiry and cancellation

A stale quote is not a promise

Crypto prices move. An invoice priced an hour ago in an asset that has moved 4% is a liability, which is why invoices carry a deadline by default.

Expiry

  • 60 minutes by default

    Settable from 1 minute up to 7 days when you create the request. Donation links ignore it entirely — they do not expire.

  • Swept on a schedule

    A job runs every few minutes and closes invoices past their deadline, firing payment.expired as it does.

  • Untouched invoices only

    A partially paid invoice is left alone by the sweep. Closing it would strand money someone has already sent.

  • Late money is still yours

    A payment that lands on an expired invoice is credited, and reported as payment.late rather than payment.paid — so you are not told to ship an order you had written off.

Cancelling

One call closes a request early. The hosted page stops offering anywhere to pay and the public endpoint answers 404 — the link is dead, not merely discouraged.

curl -X POST \
  https://cryptogate.foundrcode.com/api/merchant/v1/payment-requests/1042/cancel \
  -H "Authorization: Bearer $CRYPTOGATE_KEY"

A request that has already settled cannot be cancelled, and the attempt is refused rather than accepted quietly. The money is on a chain — marking the record cancelled would make our story disagree with the ledger, and the ledger would be the one telling the truth.

Send your first link

Create one in the dashboard, or POST a payment request and paste the URL you get back.