Loading...
Loading...
Developer Docs
Request shapes, webhook payloads, SDK paths, and migration routes. Everything you need to ship a Payvra integration without guesswork.
Quick start
Follow one path, inspect one payload, keep the leap to production small.
Create a sandbox key
Open the dashboard, generate a test key, and keep live mode out of the first pass.
Create one payment end to end
Use the API or SDK to create a payment and inspect the checkout plus webhook payload.
Promote to production
Switch to a live key only after your sandbox request, webhook, and settlement currency are verified.
import { Payvra } from "payvra";const payvra = new Payvra(process.env.PAYVRA_TEST_KEY!);const payment = await payvra.payments.create({ amount: "49.99", currency: "USDC", chain: "solana", metadata: { orderId: "order_123" },});console.log(payment.id);console.log(payment.checkoutUrl);Authentication
Payvra separates proof work from production risk with explicit key modes. The request shape stays stable, promotion is procedural, not a rewrite.
sk_test_Simulated chain lifecycle, webhook rehearsal, and safe checkout proofs. No real funds move.
sk_live_Production transactions. Promote only after the sandbox request path, webhook handling, and settlement currency are verified.
Rules
Server-side only
Checkout creation, webhook verification, and refund work should never depend on browser-exposed secrets.
Same shape, different key
Only the key prefix, environment mode, and settlement consequences change between test and live.
Bearer token in every request
Use the Authorization: Bearer sk_test_... header from your backend, then keep webhook verification in the same server boundary.
// Every API request uses the same headerconst response = await fetch("https://payvra.com/api/v1/payments", { method: "POST", headers: { "Authorization": "Bearer sk_test_your_key_here", "Content-Type": "application/json", }, body: JSON.stringify({ amount: "25.00", currency: "USDC", chain: "solana", }),});Try it
Requests hit the sandbox, no real funds move. Same contract you will see in production.
Press Send to see the response.
1import { Payvra } from "payvra";23const payvra = new Payvra(process.env.PAYVRA_KEY!);45const payment = await payvra.payments.create({6 amount: "49.99",7 currency: "USDC",8 chain: "solana",9 metadata: { orderId: "order_123" },10});1112console.log(payment.id, payment.checkoutUrl);SDKs
Pick your language, copy the example, and confirm the payment contract in your stack before you read another page.
Shortest path for backend integrations and webhook work.
Install
npm install payvrapayvraimport { Payvra } from "payvra";const payvra = new Payvra(process.env.PAYVRA_KEY!);// Create a paymentconst payment = await payvra.payments.create({ amount: "49.99", currency: "USDC", chain: "solana", metadata: { orderId: "order_123" },});console.log(payment.checkoutUrl);// List recent paymentsconst payments = await payvra.payments.list({ limit: 10, status: "completed",});// Retrieve a specific paymentconst detail = await payvra.payments.retrieve(payment.id);Resources
Reach the surface that answers the immediate question: endpoint behavior, webhook handling, migration risk, or the fastest plugin launch.
API Reference
Interactive endpoint explorer with request/response schemas, field types, and sandbox execution.
Webhooks
Event catalog, signature verification, retry policy, and testing strategy.
Integration guides
API Keys & Auth
Create and manage test/live keys, rotation, and server-side security.
Hosted Checkout
Redirect to a pre-built payment page with QR, countdown, and tracking.
Payment Links
Shareable links for invoices, donations, or one-time commerce flows.
Refunds
Full or partial refunds with the same ledger and webhook contract.
Sandbox Testing
Test with simulated blockchain payments before real tokens.
Webhook Verification
Verify HMAC-SHA256 signatures in TypeScript, Python, Go, and cURL.
Migration guides
Create a sandbox payment, verify the webhook, then promote the same flow to production.