Getting Started
Introduction
One REST API for everything Vezmo does for a business: card and bank payments, invoices and paylinks, subscriptions, proposals and contracts, and a signed webhook for every event.
https://api.vezmo.com/api/v1Start building
Pick the surface that fits your product. Every path below ends in the same payment object, the same webhooks and the same dashboard.
Exchange your API key and secret for a short-lived bearer token.
Hosted checkoutRedirect the buyer to a Vezmo-hosted payment page and get the result back.
Secure Payments (embed)Drop the checkout into your own page with one script tag: cards, bank and wallets.
ElementsComposable card and bank fields for a payment form that looks like yours.
Bank payments (ACH)US bank debits, with micro-deposit verification you can drive from your own app.
WebhooksHMAC-signed events for every payment, refund, dispute and verification.
Invoices & paylinksBill by email or by link; buyers pay on a hosted page you never have to build.
Refunds & disputesRefund in full or in part, and answer chargebacks with evidence.
Make your first request
Three steps take you from a fresh account to a real response. Start with a test key: it runs the whole integration against the sandbox and works before your account is approved.
Create a pair of keys
In the dashboard open VezmoPay → Developers → API keys and create a test key. You get an
x-api-keyand anx-api-secret; the secret is shown once, so store it somewhere safe.Exchange them for a token
Send both headers to the login endpoint. The bearer token is at
data.accessToken.tokenin the response and is short-lived; renew it with the refresh token instead of logging in again.curl --request POST \ --url https://api.vezmo.com/api/v1/merchant/api-auth/login \ -H "x-api-key: vzm_test_..." \ -H "x-api-secret: sk_test_..." \ -H "Content-Type: application/json"Call the API
Pass the token as a bearer on every request. Responses are wrapped as
{ success, message, data }, so the payload you want is always underdata.curl --request GET \ --url https://api.vezmo.com/api/v1/merchant/payment \ -H "Authorization: Bearer $ACCESS_TOKEN"
Test and live modes
Both modes share the same base URL. The key you send selects the mode, and nothing crosses between them.
Test keySandbox
Runs sessions, checkout, webhooks and refunds against an isolated sandbox. No real money moves, nothing appears in your live dashboard (flip Test mode in the console to see it), and it works before your account is approved. Sandbox webhooks carry livemode: false.
Live keyLive
Moves real money and needs an approved, charges-enabled VezmoPay account. Keys and data are mode-locked: a test key can never act on a live object, and crossing modes returns a 404 as if the object did not exist.
Why Vezmo
Business workflows are usually fragmented: proposals in one tool, invoices in another, payments tracked elsewhere and reporting done by hand. Vezmo puts the whole lifecycle behind one API.
Unified by design
Proposals, contracts, invoices, payments and reporting are one system, so an id from one call is valid in the next.
Built for developers
Predictable REST resources, one response envelope, and copy-ready samples on every page.
Secure by default
Card data never touches your servers with hosted, embedded or Elements checkout, and every webhook is signed.
Grows with you
The same API serves a freelancer sending a first invoice and a platform routing thousands of payments.
Who this is for
Developers
Integrating Vezmo into an application, a marketplace or a SaaS product.
Businesses automating finance
Replacing manual invoicing, collection and reconciliation with API calls.
Agencies at scale
Managing clients, billing and reporting for many accounts at once.
Teams building internal tools
Wiring payments and documents into back-office systems you already run.