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
- You create a payment link in the dashboard, with an amount and a currency like USD.
- Your customer opens the link (or your embedded checkout), picks ETH, USDC or USDT, and approves one transaction in their own wallet.
- The funds move directly from their wallet to yours. Axle is never in that path.
- Axle reads the chain and confirms the right recipient, the right amount and enough confirmations, then marks the payment
success. - Axle sends a signed
payment.succeededwebhook to your server, and you can also read the payment over the API.
Core concepts
| Concept | What it is |
|---|---|
Merchant | A payout destination: one wallet address and a settlement currency. Payments, links and API keys belong to a merchant. |
Payment link | A reusable checkout URL with a fixed amount or a customer-chosen one, and an optional expiry. |
Payment | One customer attempt to pay a link. Tracks status, the on-chain transaction hash and confirmations. |
API key | A secret (sk_test_… / sk_live_…) your server uses to read payments, create refunds and poll events. |
Webhook endpoint | An HTTPS URL of yours that Axle calls with a signed event when something happens. |
Event | A 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.
| Convention | Detail |
|---|---|
| Money | Integer minor units (cents for USD): 4900 is $49.00. Crypto amounts are decimal strings/numbers in the coin's own units. |
| Object shape | Responses carry an object field ("payment", "refund", …) and a livemode flag. |
| Errors | A consistent error envelope. See Errors & limits. |
| Pagination | List 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.