Two things make a payment capability real: the account that can take money, and the call that moves it. Kuvex does both — we open the merchant account, and your app makes one call.
Merchant onboarding runs through Kuvex. You send us the merchant; we handle the application, the underwriting and the account. The machine arrives with payment capability already in it.
Well-qualified merchants are approved quickly — so a merchant your software signs today isn't waiting weeks to take a card.
Contactless cards and mobile wallets — Apple Pay included — chip insert, and magstripe. All on Kuvex hardware, all through the same API.
Card-number entry and Apple Pay for the browser side of your product — the same platform, no terminal required. Rolling out.
| Capability | Call | What happens |
|---|---|---|
| Sale | kuvex.pay() · POST /v1/payments | Terminal wakes, customer taps or inserts, you get the result. |
| Refund | kuvex.refund() | Full or partial, against the original payment. |
| Void | kuvex.void() | Same-day cancellation before settlement. |
| Status | kuvex.getPayment() | The transaction record, any time. |
kuvex.print(receipt) | A structured receipt object — you never format printer bytes. | |
| Scan | kuvex.scan() | Barcode or QR, from the device's scanner or camera. |
| Devices | GET /v1/terminals | Claim, address and monitor every device by terminal_id. |
| Events | Webhooks + WebSocket | Webhooks are your books; WebSocket is your UI. Both built in. |
// This is the whole integration.
const kuvex = Kuvex('pk_test_…');
await kuvex.pay({
amount_cents: 3000,
order_id: 'A-1042',
});
// → terminal lights up
// → customer taps
// → receipt prints
Works from the page (kuvex.js) or from your backend (REST) — same semantics either way. Amounts are integer cents, USD.
A browser-based virtual terminal will let you make your first test payment without hardware on your desk.