Docs/Getting started/Overview

Apa API

Apa is a non-custodial crypto checkout that settles over public on-chain rails. You save one or more payout wallets — each the asset, network and wallet you want to be paid in — and Apa lets your customers pay with any asset on its Safe List, settling the result straight to the payout wallet you chose as the payment completes.

How it fits together

Apa is mixed-mode: build with the dashboard, the API, or both. The dashboard handles setup, branding, payment links and monitoring; the API handles checkout sessions, payment links and integrations. Everything a request can do is also visible in the dashboard.

  • Payout wallets — saved { asset, network, wallet } bundles. Sessions and links settle to a payout wallet, never a raw wallet.
  • Checkout sessions — server-created, single-order payments you redirect a customer to.
  • Payment links — reusable hosted checkout URLs.
  • Webhooks — signed events so your backend can mark orders paid.

How an order is matched

Every payment happens inside a checkout session (cs_…) with a unique reference. Direct payment targets are listed in deposit_addresses as merchant-owned asset/network/address entries for assets you can receive directly. Routed payment targets are opened only when the customer chooses a routed method. Apa watches the relevant address, reference, amount or route and attributes the matching on-chain transfer to the session and its order_id.

On chains that support an on-chain reference or memo (for example Solana), Apa attaches the session reference as an extra attribution check. On other chains, attribution uses the direct deposit address strategy available for that merchant wallet (for example an xpub-derived address or the saved wallet address plus expected amount), or a routed provider deposit channel.

Non-custodial by construction
Direct payments use merchant-owned payout destinations. Routed payments use provider deposit channels that deliver to your saved payout wallet. In both cases Apa avoids an Apa-held balance; reconcile from the order_id / metadata echoed on the payment and every webhook.

Base URL & authentication

All requests go to the versioned base URL and authenticate with your secret key as a bearer token.

Base URL
https://apa.app/v1

# Authenticate every request with your secret key
Authorization: Bearer sk_live_…
Keep secret keys server-side
sk_live_ keys grant account API access. Create sessions from your server, send the hosted checkout_url to the client, and never expose a secret key in a browser or mobile app.

Explore the docs