BramaPay Developer Documentation
Accept stablecoin payments directly to your wallet with hosted checkout, project-scoped API keys, and signed webhooks.
BramaPay is a non-custodial payment gateway for merchants that want automated stablecoin checkout without handing custody of payment funds to a processor. Customers send the displayed amount directly to a receiving wallet controlled by the merchant; BramaPay watches the blockchain, settles the invoice, and sends a signed webhook.
Quick Start
Create an invoice and verify your first payment end to end.
Invoice lifecycle
Understand exact-amount matching, expiry, and terminal states.
Webhook v2
Verify signatures and make fulfillment idempotent.
API reference
Use the verified current BramaPay endpoints and contracts.
Payment flow
Create an invoice
Your backend calls POST /v1/invoices with a project-bound sk_live_... key and a durable Idempotency-Key.
Send the customer to checkout
The response contains a hosted checkoutUrl. Checkout shows the network, token, merchant wallet, exact amount, and expiry.
Receive the transfer
The customer sends one exact transfer to the merchant wallet. BramaPay detects and confirms it on-chain.
Fulfill once
BramaPay marks the invoice PAID and sends an HMAC-signed invoice.paid webhook. Verify the signature, deduplicate X-Event-Id, and then fulfill.
A redirect is not payment proof
The success URL is browser navigation only. Fulfill only from a verified invoice.paid webhook and/or an authenticated GET /v1/invoices/:invoiceId response from your server.
Current product scope
The deployed single-container product runs the TRON payment watcher. The enabled public merchant flow is TRON USDT with six decimal places; Shasta is available only in a separate isolated test deployment. The backend registry contains broader EVM architecture, but Ethereum, BSC, Polygon, and TRON USDC are not documented as production-ready BramaPay payment options.
All monetary values are decimal strings. Never parse invoice amounts through JavaScript number.