Multi-rail by default
Cards, ACH, stablecoin (USDC), and crypto on the same checkout, with intelligent routing.
Cards, ACH, and stablecoin on one cryptographically auditable rail. Integrate in minutes — no demo required, no sales call to ship.
curl https://api.trustfabric.ai/v1/checkout/sessions \
-H "Authorization: Bearer $PAID_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1234" \
-d '{
"mode": "payment",
"currency": "USD",
"payment_method_types": ["card"],
"line_items": [{
"ad_hoc": {"amount": 4999, "currency": "USD", "description": "Pro plan"},
"quantity": 1
}],
"success_url": "https://example.com/thanks",
"cancel_url": "https://example.com/cancel"
}'Why builders trust PAID
No demoware. Every feature is wired to the same production ledger that runs the Trust Fabric.
Cards, ACH, stablecoin (USDC), and crypto on the same checkout, with intelligent routing.
Every state change is signed and chained. Reconciliation drops from days to seconds.
API keys in minutes. No sales call required to integrate or test in live mode.
Tenant admission gate, attestation receipts, and provider health surfaced to every customer.
Hosted checkout and Stripe Elements integration keep card data out of your servers.
Provider health, fraud signals, settlement timing, and disputes in one dashboard.
The full integration path. No live demo, no waiting.
Sign up, verify your business, and grab your live API keys — no demo required.
One API call returns a hosted checkout URL or an embed-ready session token.
Receive a signed webhook on success. Reconciliation is automatic. Funds settle on your schedule.
One line of HTML on any page or app. The button posts the SKU and price to PAID, opens a hosted checkout, and notifies you over webhook on completion.
Embed reference<button data-paid-checkout
data-account="acct_yourmerchantid"
data-amount="4999"
data-currency="usd"
data-sku="pro-plan">
Pay $49.99
</button>
<script async src="https://paid.trustfabric.ai/v1/embed.js"></script>Every event is signed with your webhook secret using HMAC-SHA256. Verify in one call and react. Retries are automatic with exponential backoff and a dead-letter queue.
Webhook reference// POST https://your-app.com/api/webhooks/paid
// PAID signs every event with your endpoint's whsec_ secret:
// Webhook-Signature: t=<unix_ts>,v1=<hmac_sha256_hex over "<ts>.<raw body>">
// Companion headers (Standard Webhooks-style names): Webhook-ID for
// idempotency, Webhook-Timestamp for replay rejection.
import crypto from "node:crypto";
function verifyPaidSignature(payload: string, header: string, secret: string): boolean {
const [tPart, sPart] = header.split(",");
const t = (tPart ?? "").replace(/^t=/, "");
const s = (sPart ?? "").replace(/^v1=/, "");
const expected = crypto
.createHmac("sha256", secret)
.update(t + "." + payload)
.digest("hex");
return (
s.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(s))
);
}
export async function POST(req: Request) {
const payload = await req.text();
const sig = req.headers.get("Webhook-Signature") ?? "";
if (!verifyPaidSignature(payload, sig, process.env.PAID_WEBHOOK_SECRET!)) {
return new Response("bad signature", { status: 400 });
}
const event = JSON.parse(payload);
switch (event.type) {
case "payment_intent.captured":
await grantEntitlement(event.data.customer_id);
break;
case "payment_intent.failed":
await notifyCustomer(event.data.customer_id, event.data.last_error);
break;
}
return new Response("ok");
}One flat rate — 1% per transaction, plus 10¢ only on payments over $20 — on every plan and every rail. No setup fees. No monthly minimums. You only pay for successful charges. Your payment provider's own fees (e.g. Stripe's 2.9% + 30¢ per card) are separate and additional; we never hide them inside our rate. See full pricing →
Create an account and have your first checkout session live before your coffee is cold.