> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payzor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Merchants

> Register your business, check your balance, set your payout address, and list charges.

# Merchants

## Register a merchant

<ParamField body="name" type="string" required>
  Display name of the business, e.g. `"Acme Digital Goods"`.
</ParamField>

```bash theme={null}
POST /merchants
Authorization: Bearer <console_jwt>   # console-only
```

```json theme={null}
// 201 Created
{
  "merchantId": "mch_c8fdac10d39c0c4d",
  "apiKey": "sk_mch_3dc34f4326fa081f02b1e552a91b4696bb541572cbe89b23"
}
```

<Warning>
  `apiKey` is displayed exactly once. Only its SHA-256 hash is stored.
</Warning>

## Get my balance

```bash theme={null}
GET /merchant/me
Authorization: Bearer sk_mch_...
```

```json theme={null}
// 200 OK
{
  "merchant": {
    "id": "mch_c8fdac10d39c0c4d",
    "name": "Acme Digital Goods",
    "balanceMinor": 200,
    "currency": "USD",
    "payoutAddress": null
  }
}
```

`balanceMinor` is USD cents. It increases every time one of your charges is paid.

## Set payout address

Where settled money goes. The address is screened automatically (KYT); blocked addresses are rejected with `403`.

```bash theme={null}
PUT /merchant/payout-address
Authorization: Bearer sk_mch_...
Content-Type: application/json

{ "address": "0xYourWalletAddress..." }
```

```json theme={null}
// 200 OK
{ "ok": true, "kyt": { "verdict": "pass", "reason": "no_blocklist_hit" } }
```

Errors:

| Status | Meaning                                                   |
| ------ | --------------------------------------------------------- |
| `400`  | Not a valid EVM address (`/^0x[a-fA-F0-9]{40}$/`).        |
| `403`  | Address flagged by KYT screening; includes the `verdict`. |

## List my charges

Last 100 charges, newest first.

```bash theme={null}
GET /merchant/charges
Authorization: Bearer sk_mch_...
```

```json theme={null}
{ "charges": [ { "chargeId": "...", "...": "..." } ] }
```

See the [charge object](/concepts/charges#charge-object) for field details.

## Screen an address (console)

Standalone KYT screening; useful before paying out to an arbitrary address.

```bash theme={null}
POST /kyt/screen
Authorization: Bearer <console_jwt>
Content-Type: application/json

{ "address": "0x...", "chain": "base" }
```

```json theme={null}
{ "verdict": "pass", "reason": "no_blocklist_hit" }
```

## Export transactions (console)

Accounting export straight from the audit chain; every row carries its sequence number and event hash.

```bash theme={null}
GET /export/transactions.csv?from=2026-08-01&to=2026-08-31
Authorization: Bearer <console_jwt>
```

Defaults to the last 30 days when no range is given. Response is `text/csv`.
