An OBS browser-source donation overlay powered by U.CASH Pay (crypto + cards). Non-custodial.
Drop a single URL into an OBS Browser Source and your viewers get a scannable QR code plus a tap-to-donate button that points at your U.CASH Pay checkout. Crypto and cards are both supported through pay.u.cash. Funds go straight to your own receive addresses; this overlay never touches them.
- A static, dependency-free overlay:
overlay.html,overlay.css,overlay.js, and a self-contained QR generator (qrcode.js). - No backend required for the overlay itself. Everything renders client-side in the OBS browser source.
- Optionally, a tiny server hook (see
server/) can pre-create a tracked checkout if you want a unique transaction id per donation attempt.
-
Sign up at pay.u.cash and create a store (steps below). Copy the store Cloud Token.
-
Host these files anywhere a browser can reach: GitHub Pages, your own site, Netlify, etc.
-
In OBS: Sources > + > Browser.
-
Set URL to the overlay with your config as query params. Example:
https://YOUR_HOST/streamlabs-ucashpay/overlay.html?cloud=st_your_store_cloud_token&amount=5¤cy=USD&title=Support%20the%20stream&name=YourName&theme=dark&qr=1 -
Set Width
380, Height260(or to taste). -
The card and QR appear on stream. Viewers scan the QR or click the link to pay you in crypto or by card.
Pass these in the OBS URL query string (URL-encode the values):
| Parameter | Required | Default | Description |
|---|---|---|---|
cloud |
yes | Your pay.u.cash store Cloud Token (publishable, browser-safe). | |
amount |
no | 5 |
Suggested donation amount. |
currency |
no | USD |
ISO currency code. |
title |
no | Support the stream |
Headline shown on the card. |
name |
no | Streamer name; if set the button reads "Donate to NAME". | |
external_reference |
no | Your reference for the checkout (useful with the server hook). | |
redirect |
no | URL to send the viewer to after payment. | |
theme |
no | dark |
dark, light, or clear (fully transparent). |
qr |
no | 1 |
1 to show the QR code, 0 to hide it. |
The cloud value used here is the store-level publishable Cloud Token. It can only create checkouts that pay into receive addresses you configured in your pay.u.cash store. It cannot read your balances, move funds, or authorize payouts. It is safe to put in a browser source that your viewers see.
Never put account passwords, payout secrets, or API keys with withdrawal rights into the overlay URL. Only the publishable store Cloud Token belongs there.
The overlay works standalone. If you want a unique transaction id logged per donation attempt (for example to tie a donation to an alert), pre-create a tracked checkout from a server route and pass its external_reference into the overlay.
server/example.php shows a minimal, idempotent call:
POST https://pay.u.cash/payment/ajax.php
body (application/x-www-form-urlencoded):
function=create-transaction
amount, currency_code, cryptocurrency_code= (empty string)
external_reference, title, redirect, cloud
idempotent=1
response: { success: true, response: [paymentUrl, transactionId, ...] }
The payment URL is the element of the response array that starts with http://. Replays with the same external_reference return the same checkout (idempotent), so this call is safe to retry.
Note: recurring subscriptions are not supported by crypto rails. Card-based recurring billing, where available, is handled on the merchant's own Stripe connected in pay.u.cash. This overlay performs one-time donations only.
- Sign up at pay.u.cash, then click the verification link in the email.
- Set receive addresses under Settings -> Addresses (raw address, ENS, Unstoppable Domains, or FIO).
- Create a store under Account -> Stores and copy its Store Cloud Token (use the store-level token, not the account-wide one).
- For fiat cards, connect your own Stripe under Settings -> Payment processors.
overlay.html- the card markup loaded by the OBS browser source.overlay.css- dark/light/clear themes.overlay.js- reads URL config, builds the pay.u.cash embed link, renders the QR.qrcode.js- dependency-free QR Model 2 encoder (byte mode, ECC level M).server/example.php- optional server-side tracked-checkout reference.
MIT. See LICENSE.