# Banxa Native API

Fully headless ramp infrastructure. No Banxa screens, no redirects — your platform owns the entire transaction experience. Banxa handles payment rails, compliance, and settlement.

**Best for:** Exchanges, custodial wallets, and fintech apps with user accounts, KYC infrastructure, and a backend.

## Why Native?

Full UX ownership
No Banxa-branded screens anywhere in the flow. Your users never leave your product — pricing, KYC, and payment all happen natively.

Incremental KYC
Users start transacting with minimal verification. Additional checks are requested only when the transaction context requires it, reducing upfront friction.

Bank transfers are fully API-driven
Bank payment rails run entirely through the Native API. No SDK or webview required for bank transfer flows.

PCI handled by Banxa
Card, Apple Pay, and Google Pay are captured via the React Native SDK using Primer. Your platform does not need PCI compliance certification.

## Core capabilities

Identities
Establish and manage customer identity. Set up via KYC token sharing (Sumsub), identity reliance, or document verification. Must be established before eligibility or payment can proceed.

Eligibility
Evaluate whether a transaction can proceed for a given identity, payment method, and fiat/crypto pair. Returns `paymentReady: true/false` plus any outstanding requirements.

Quotes & Pricing
Retrieve real-time pricing and fee breakdowns before creating a transaction. Used for displaying quotes and confirming transaction parameters.

Limits
Retrieve applicable transaction limits for a given identity and context. Reflects provider constraints, customer tier, and time-based windows.

Ramps
Create and manage on-ramp and off-ramp transactions. Bank transfers run fully through the API; card and wallet payments use the React Native SDK.

Webhooks
Real-time notifications for ramp lifecycle events and KYC status changes. Banxa retries delivery on non-2xx responses.

## Before you start

What you need
HMAC API credentials from Banxa (API key + secret), a backend capable of server-to-server calls, a persistent unique identifier per user (`identityReference`), and a KYC provider or reliance arrangement. The React Native SDK is required for card, Apple Pay, and Google Pay — not needed for bank transfer-only integrations.

| Environment | Base URL |
|  --- | --- |
| Sandbox | `https://api.banxa-sandbox.com` |
| Production | `https://api.banxa.com` |


Not sure if Native is the right fit? The [Integration Overview](/products/native-api/docs/how-it-works/integration-overview) covers requirements and where Native is and isn't the right choice. Ready to build? Go straight to the [Integration Guide](/products/native-api/docs/integration-guide).

## Quick start

All Native API requests use HMAC-SHA256 authentication. See [Authentication](/products/native-api/docs/getting-started/authentication) for how to generate the signature.


```bash Get a price quote
GET https://api.banxa.com/eapi/v0/price \
  ?identityReference=user-abc123 \
  &fiat=USD \
  &crypto=ETH \
  &blockchain=ETHEREUM \
  &method=credit-debit-card \
  &transactionType=ONRAMP \
  &fiatAmount=100
Authorization: {apiKey}:{nonce}:{hmacSignature}
```


```json
{
  "identityReference": "user-abc123",
  "source": {
    "fiat": { "id": "USD", "method": "credit-debit-card" },
    "amount": "100.00"
  },
  "target": {
    "crypto": { "id": "ETH", "blockchain": "ETHEREUM" },
    "amount": "0.03421"
  },
  "processingFee": "3.99",
  "networkFee": "0.50",
  "marketRate": {
    "crypto": { "USD": "2922.50" },
    "forex": { "reference": "USD" }
  }
}
```

The `identityReference` is your stable per-user identifier — the same value is used across identity, eligibility, and ramp creation. → [Full Integration Guide](/products/native-api/docs/integration-guide)