Docs/Getting started

Getting started

Introduction

PaySovra is a non-custodial crypto payment gateway. Your customers pay in crypto; the funds settle directly to your own wallet. PaySovra never holds, routes, or controls the money — it creates the payment request, watches the chain, confirms the payment, and notifies you.

There are three ways to accept payments, from least to most technical: drop-in payment links and invoices (no code), the embeddable widget (one script tag), and the API (full programmatic control, plus AI agents via MCP).

Non-custodial means there is no PaySovra account holding your balance. Money goes from buyer → your wallet. If PaySovra ever went away, your funds are untouched — they were never with us.

Quickstart

1
Add your wallet
In Settings, add the receiving wallet(s) you want funds to settle to. This is where the money lands — PaySovra never holds it.
2
Get your keys
Dashboard → Integrations. Your publishable key (pk_live_…) is safe for the browser/widget. A secret key (sk_live_…, Pro plan) unlocks the management API.
3
Take a payment
Embed the widget with one script tag, share a payment link, or call POST /api/payments from your server.
4
Get notified
Set a webhook URL to receive payment.confirmed events, or read order history from the API.

Authentication

Every API request carries your key in the X-Api-Key header. There are two key types:

• Publishable key — pk_live_… Safe to expose in the browser and the widget. Can ONLY create payment sessions and read public asset data. It can never read your orders or manage resources.

• Secret key — sk_live_… Server-side only, available on the Pro plan. Full access to the /v1 management API (orders, invoices, products, customers). Treat it like a password; never ship it to the browser.

Authenticated request
curl https://app.paysovra.com/api/v1/payments \
  -H "X-Api-Key: sk_live_your_secret_key"
You can also pass the key as Authorization: Bearer <key>. Rotate or revoke keys any time in Integrations — rotating immediately invalidates the old one.