Getting started

Axle documentation.

Axle is a non-custodial crypto payment gateway. Your customer's wallet pays your wallet directly on-chain; Axle verifies the transaction and tells your server it happened.

How a payment works

  1. You create a payment link in the dashboard, with an amount and a currency like USD.
  2. Your customer opens the link (or your embedded checkout), picks ETH, USDC or USDT, and approves one transaction in their own wallet.
  3. The funds move directly from their wallet to yours. Axle is never in that path.
  4. Axle reads the chain and confirms the right recipient, the right amount and enough confirmations, then marks the payment success.
  5. Axle sends a signed payment.succeeded webhook to your server, and you can also read the payment over the API.

Core concepts

ConceptWhat it is
MerchantA payout destination: one wallet address and a settlement currency. Payments, links and API keys belong to a merchant.
Payment linkA reusable checkout URL with a fixed amount or a customer-chosen one, and an optional expiry.
PaymentOne customer attempt to pay a link. Tracks status, the on-chain transaction hash and confirmations.
API keyA secret (sk_test_… / sk_live_…) your server uses to read payments, create refunds and poll events.
Webhook endpointAn HTTPS URL of yours that Axle calls with a signed event when something happens.
EventA record of something that happened, like payment.succeeded. Delivered by webhook, and readable via GET /v1/events.

API conventions

The API is JSON over HTTPS. Every path is under /v1.

base url
https://axle-production-fa2b.up.railway.app
ConventionDetail
MoneyInteger minor units (cents for USD): 4900 is $49.00. Crypto amounts are decimal strings/numbers in the coin's own units.
Object shapeResponses carry an object field ("payment", "refund", …) and a livemode flag.
ErrorsA consistent error envelope. See Errors & limits.
PaginationList endpoints use cursors: limit (max 100) and startingAfter (an object ID).

What the API does today

Payments are created only through checkout, either the hosted page or the embedded modal, because the customer has to approve a transaction in their own wallet. There is no server-side endpoint that creates a payment. The API you call from your server is for reading payments, creating refunds, polling events, and receiving webhooks.

Managing merchants, payment links, invoices, subscriptions and webhook endpoints is done in the dashboard. Those management endpoints exist, but they authenticate with a dashboard login session rather than an API key, so they're not documented here as a server-to-server integration surface.

Where to next

New here? Take the Quickstart and make a real payment end to end. Already integrating? Jump to Webhooks.