# Getting started

Use the Nexpay API to build integrations that handle complex cross-border payment flows — from creating payees and getting FX quotes to collecting funds and tracking payments through to completion.

- [Quick start](/docs/guides/quick-start.md): End-to-end guide to making your first payment.
- [Get your API keys](/docs/api-keys.md): Create and manage your API keys.
- [Authentication](/docs/authentication.md): Learn how to authenticate your API requests.
- [API Reference](https://v2-spec.nexpay.com.au/#post-/v2/payment-intents): Explore the full API specification.

The Nexpay API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and verbs (`GET`, `POST`, `PUT`, `DELETE`).

> **Note — No SDK — talk to the REST endpoints directly**
>
> Nexpay does **not** ship official client SDKs. Every integration calls the REST endpoints directly using your language's standard HTTP client (`fetch`, `axios`, `httpx`, `requests`, `okhttp`, `URLSession`, `Curl`, etc.). Examples in this site are JavaScript `fetch`, but they translate one-to-one to any HTTP library — the contract is the URL, headers, JSON body, and response envelope. The full OpenAPI 3.x specification is published at [v2-spec.nexpay.com.au](https://v2-spec.nexpay.com.au/) for code-gen if you need typed clients.

---

## Payments run on payment intents

Every payment in Nexpay is a **payment intent** (`/v2/payment-intents`) — a typed wrapper that models the **who** (payer, subject, recipients), the **how** (delivery mode), and the **how much** (amount mode), so one endpoint handles every scenario: operator-driven payments, reusable payment links, batch payroll, and refunds.

- **[Manual payment with splits](/docs/guides/payment-intents-manual.md)** — drive a payment end-to-end on the payer's behalf, optionally splitting a commission to your tenant.
- **[Payment links](/docs/guides/payment-links.md)** — send the payer a URL where they enter their own details and pay.

## Making your first payment

The typical flow:

1. [Create a payee](/docs/guides/creating-payees.md) — set up the recipient of funds.
2. [Get a quote](/docs/guides/getting-quotes.md) — check the exchange rate and fees.
3. [Upload documents](/docs/guides/uploading-documents.md) — provide the payer's identity document.
4. [Create and submit a payment intent](/docs/guides/payment-intents-manual.md) — build the intent, dry-run it, then submit.

For a complete walkthrough, see the [Quick start guide](/docs/guides/quick-start.md).

---

## Key concepts

Before building your integration, familiarize yourself with these concepts:

- [Terminology](/docs/terminology.md) — understand Nexpay's key terms (payments, payers, payees, payouts, quotes).
- [Currencies & countries](/docs/currencies-countries.md) — how amounts, currency codes, and country codes work.
- [Idempotency](/docs/idempotency.md) — safely retry payment requests without duplicates.
- [Errors](/docs/errors.md) — how to handle error codes and HTTP status codes.
- [Rate limiting](/docs/rate-limiting.md) — understand API request limits.

---

## Errors

Nexpay uses conventional HTTP response codes to indicate the success or failure of an API request. Codes in the `2xx` range indicate success. Codes in the `4xx` range indicate an error given the information provided. Codes in the `5xx` range indicate an error with Nexpay's servers.

To learn more about how Nexpay handles errors, [check this article](/docs/errors.md).

## Versioning

Nexpay's API is versioned to support future backwards-incompatible changes. Currently, our API version is `v2`.
