Your app is built. Now make it print.
Add receipt, ticket, and label printing to any app with one API call. Made for apps built with AI tools like Lovable, Bolt, Replit, and Cursor, and for the code you write yourself.
Add receipt, ticket, and label printing to any app with one API call. Made for apps built with AI tools like Lovable, Bolt, Replit, and Cursor, and for the code you write yourself.
You can build an ordering app, a check-in tool, or a shop dashboard in an afternoon. Then a customer asks for a ticket in the kitchen, and it stops working.
Browser printing opens a dialog, guesses the paper size, and needs someone standing at the screen to click Print. Receipt and label printers don’t take orders from the web on their own. Your app needs a cloud connection it can call.
BizPrint is that connection. Your app sends a print job. The printer at the location prints it. No dialog, no one at the screen. It’s the same print infrastructure already running in WooCommerce and Shopify stores every day.
Ordering apps for restaurants, cafes, food trucks, and pop-ups. Every new order prints at the right station.
Storefronts and fulfillment tools built outside the big platforms. Print the slip and label the moment an order is paid.
Badges, wristbands, and tickets that print when a guest arrives.
Repair shops, service businesses, and makers. Print the ticket that travels with the job.
Daily lists for the warehouse or the line, printed on a schedule or with a tap.
Install the BizPrint station app on a computer or device at the location. It finds your network or Bluetooth printers and connects them to the cloud.
Create a free account and copy your public and secret keys. Store them as server-side environment variables in your app.
Give BizPrint a printer ID and the URL of the page you want printed. Your receipt, ticket, or label is just a web page your app already knows how to render.
Copy this prompt into Lovable, Bolt, Replit, Cursor, or any AI coding tool. Fill in the brackets with what you want printed and when.
Add printing to this app using the BizPrint Print API.
Setup:
- Base URL: https://print.bizswoop.app/api/connect-application/v1
- Store BIZPRINT_PUBLIC_KEY and BIZPRINT_SECRET_KEY as server-side
environment variables. Never send the secret key to the browser.
All BizPrint calls must run server-side.
Signing every request:
- POST: add publicKey and time (Unix seconds) to the JSON body, then
hash = sha256(JSON.stringify(body) + ":" + secretKey) as hex.
Send the body with hash added. Header: Content-Type: application/json
- GET: add publicKey and time as query parameters, then
hash = sha256(queryString + ":" + secretKey) as hex, where
queryString has no leading ?, and add hash as a query parameter.
Endpoints:
- GET /printers lists printers (id, name, status online/offline).
Add a settings screen where I pick a printer and save its id.
- POST /jobs creates a print job with { printerId (number),
url (string), description (string) }.
- GET /jobs/{id} returns job status: pending, processing,
connecting-to-printer, done, or failed.
What to build:
- Create a page that renders [an order ticket / a receipt / a label]
at its own URL, sized for [80mm receipt paper / 4x6 labels], with
[the fields you want on it]. Protect it with an unguessable token
in the URL so BizPrint can fetch it but others can't find it.
- When [a new order is placed / I tap Print], send that URL to
POST /jobs and show me the job status.
Docs: https://getbizprint.com/documentation/developer/
A server-side Node.js example. Works anywhere you can run fetch and sha256.
import { createHash } from "crypto";
const API = "https://print.bizswoop.app/api/connect-application/v1";
export async function print({ printerId, url, description }) {
const body = {
printerId,
url,
description,
publicKey: process.env.BIZPRINT_PUBLIC_KEY,
time: Math.floor(Date.now() / 1000),
};
const hash = createHash("sha256")
.update(`${JSON.stringify(body)}:${process.env.BIZPRINT_SECRET_KEY}`)
.digest("hex");
const res = await fetch(`${API}/jobs`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ...body, hash }),
});
const json = await res.json();
if (!res.ok) throw new Error(json.message);
return json.data; // { id, status, printerId, ... }
}
Receipt and label printers on your network (Wi-Fi or Ethernet) or Bluetooth. USB connections are not supported. Choose a printer with verified drivers for the operating system running your station. Hardware
The BizPrint station app on a computer or device at the location. Android stations support ESC/POS and StarPRNT command printers. Download
Any URL your app can render: HTML, a receipt template, or a label.
API access is included on every BizPrint paid plan at no extra fee. You pay only for successful prints, so a quiet week costs less than a busy one. Start with 25 prints free, no card required.
Building or testing? Turn on development mode to keep printing past the 25 free prints.
Yes. Paste the prompt above into any AI tool that can write server-side code. It has everything the tool needs: endpoints, request signing, and what to build. If something fails, the API returns clear error messages your tool can read and fix.
On your server only, as an environment variable. Never in browser code. If your app runs entirely in the browser, add a small server function (an API route or edge function) that makes the BizPrint call.
Your app already knows how to render a page. You design the ticket or label as a web page, BizPrint fetches it and prints it. Use an unguessable link so only BizPrint can find it.
Yes. Turn on development mode to print beyond the 25 free prints while you build and test.
Yes. Each location runs its own station and printers. For larger rollouts across many merchants, talk to us. We often assign a team member to help with onboarding.
Yes. The BizPrint MCP Server lets assistants like Claude print directly. See AI Printing.
Pro plans include Tier 1 template development. Everyone else can use our paid Template Development service. See the Extend Marketplace.
Sign up, connect a printer, paste the prompt. Your first ticket can be in hand before lunch.