Developers The reference
An API you can hold the whole shape of.
Idempotent, versioned and typed end to end. Seven native SDKs, signed webhooks that retry, and a sandbox that returns the same status codes as production. Read three lines and you've made a payment.
01 Quickstart
Charge a card in three lines.
checkout.ts
import { Velta } from "@veltapay/node"; const velta = new Velta(process.env.VELTA_KEY); const session = await velta.checkout.create({ amount: 4200, currency: "eur", mode: "payment", success_url: "https://app.acme.io/done" }); res.redirect(session.url);
checkout.py
import veltapay velta = veltapay.Client(os.environ["VELTA_KEY"]) session = velta.checkout.create( amount=4200, currency="eur", mode="payment", success_url="https://app.acme.io/done", ) return redirect(session.url)
checkout.go
velta := veltapay.New(os.Getenv("VELTA_KEY")) session, _ := velta.Checkout.Create(&veltapay.CheckoutParams{ Amount: 4200, Currency: "eur", Mode: "payment", SuccessURL: "https://app.acme.io/done", }) http.Redirect(w, r, session.URL, 303)
shell
curl https://api.veltapay.com/v3/checkout \ -u "$VELTA_KEY:" \ -d amount=4200 \ -d currency=eur \ -d mode=payment \ -d success_url="https://app.acme.io/done"
02 API surface
The endpoints, grouped by job.
Payments
POST/v3/checkout
POST/v3/payments
POST/v3/refunds
GET/v3/payments/:id
Accounts & KYC
POST/v3/accounts
POST/v3/accounts/:id/documents
GET/v3/accounts/:id
DEL/v3/accounts/:id
Balance & payouts
GET/v3/balance
POST/v3/payouts
GET/v3/payouts/:id
POST/v3/transfers
Risk & disputes
GET/v3/risk/:payment_id
POST/v3/rules
GET/v3/disputes
POST/v3/disputes/:id/evidence
03 Webhooks & events
Events that actually arrive.
Every state change emits a signed event. Verify the signature in one line, get an idempotency key for free, and rely on retries with exponential backoff for up to three days if your endpoint is down.
The dashboard shows delivery rate, latency and a full replay log — so when your CTO asks whether the webhook fired, the answer is on a chart, not in a guess.
- Signed payloads — HMAC-SHA256, verify with the SDK helper.
- Retries with backoff — up to 72 hours, with a replay button.
- Delivery analytics — rate and p95 latency per endpoint.
// verify + handle in one route app.post("/webhooks", (req, res) => { const evt = velta.webhooks.verify( req.body, req.headers["velta-signature"] ); switch (evt.type) { case "payment.succeeded": fulfill(evt.data.id); break; case "account.verified": activate(evt.data.account); break; case "dispute.opened": notify(evt.data.dispute); break; } res.sendStatus(200); });
EVTpayment.succeededmoney captured
EVTaccount.verifiedKYC passed
EVTpayout.paidbank credited
EVTdispute.openedchargeback in
04 SDKs
Typed clients in seven languages.
TSNode
PYPython
GOGo
RBRuby
PHPPHP
JVJava
NET.NET
Build
Sandbox keys in under five minutes.
No sales call between you and your first request. Grab a test key, mirror production in the sandbox, and flip to live when the code is green.