Getting started

Introduction

What Key2Pay is and how the API is shaped.

The Key2Pay API exposes a small, opinionated surface for accepting local payments across LATAM, EU, and APAC and settling them as crypto. It is RESTful, returns JSON, and uses standard HTTP verbs and status codes. Everything you can do from the dashboard, you can do from the API.

Operation currency is USD by default — and you settle in USD. The `amount` you send is in USD major units unless you pass a `currency`. Optionally you can initiate in a PRESENTMENT currency (`currency: "EUR"`, `"MXN"`, …): we convert `amount` (in that currency) to a USD headline at our rate minus the FX markup, and you settle that USD. In the RESPONSE your presentment values come back as `inputCurrency` + `inputAmount`, and `currency` is ALWAYS `"USD"` (the converted USD is `amount`). Either way Key2Pay then converts USD → the buyer's local currency automatically and returns `amountLocal` + `currencyLocal`.

Highlights

Hosted checkout
Drop-in payment page with live cascade and risk routing.
Server APIs
Direct charge, refund, retrieve, and list with offset-based pagination.
Signed webhooks
HMAC-SHA256 with replay protection and timestamp window.

Design principles

  • Predictable: standard HTTP semantics, no envelope on success bodies, never an HTML error.
  • Idempotent: every money-moving POST (/payments, /withdrawals, /payments/{id}/refund) accepts Idempotency-Key.
  • Versioned: pin a date and stay on it. New optional fields are not breaking changes.
  • Compliant by default: hosted checkout keeps PAN out of your servers; webhooks are signed.