# Introduction

The Weav API lets your server accept payments through QR Ph, GCash, Maya, cards and over-the-counter partners, check your balance, and follow your withdrawals. You integrate once, and Weav handles each provider behind the scenes.

## Base URL

```http title="Base URL"
https://api.weavpayments.com/v1
```

> **Note:** Every request goes to `api.weavpayments.com` over HTTPS. Live and test keys use the same base URL. Questions go to `support@weavpayments.com`.

## OpenAPI, Postman and AI tools

The whole API is described in an OpenAPI 3.1 file. Import it into Postman (**Import → Link**), Insomnia, Swagger UI or a code generator to get every endpoint, field and example.

- [openapi.yaml](https://docs.weavpayments.com/openapi.yaml) or [openapi.json](https://docs.weavpayments.com/openapi.json)
- For AI assistants and coding agents: [llms.txt](https://docs.weavpayments.com/llms.txt) (a short index) and [llms-full.txt](https://docs.weavpayments.com/llms-full.txt) (the full reference as Markdown). Point your assistant at either link.

## Conventions

- Requests and responses are JSON. Send `Content-Type: application/json`.
- Field names are `snake_case`. Fixed values such as statuses are `UPPER_SNAKE_CASE`.
- Money is a JSON number in pesos, with up to two decimal places. Weav writes whole amounts with one decimal, such as `1250.0`, and others as they are, such as `31.25`. You may send `1250`, `1250.0` or `1250.00`. Never a string, and never formatted.
- Dates and times are ISO 8601 with the Manila offset, such as `2026-10-26T10:12:00+08:00`.
- Every field is always present. An empty value is `null` (or `[]` or `{}` for a list or an object), never left out.
- Every successful response has `code`, `success`, `message` and `data`. `data` is always an object.
- Decide on `code` or the HTTP status. Never parse `message`, because its wording can change.

## Response envelope

```json
{
    "code": "2000000",
    "success": true,
    "message": "OK",
    "data": {
        "payment": {
            "reference_id": "PY7K3Q9M2X4TBA",
            "status": "COMPLETED"
        }
    }
}
```

## Quick start

If you're new to Weav, [Core concepts](https://docs.weavpayments.com/concepts) shows what each part of the API is for and how they connect. [How payments work](https://docs.weavpayments.com/how-payments-work) shows who does what, with a diagram for each kind of channel.

1. Sign in to the Weav dashboard and, under Developers, create a test API key (it starts with `wv_test_`) and a signing key.
2. Set your webhook URL with [PUT /v1/webhook-endpoint](https://docs.weavpayments.com/reference/webhooks/set-webhook-endpoint).
3. The quickest way: create a checkout with [POST /v1/checkouts](https://docs.weavpayments.com/reference/checkouts/create-checkout) and send your customer to its `checkout_url`. They choose how to pay on Weav's page. For full control, create a payment on one channel with [POST /v1/payments](https://docs.weavpayments.com/reference/payments/create-payment) instead.
4. Pay it as your customer would. With a payment of your own, show the QR code, send them to the checkout URL, or give them the payment code.
5. Finish the payment on the [test checkout page](https://docs.weavpayments.com/test-mode), then confirm your server received the signed webhook.
6. When everything works, switch to a `wv_live_` key.
