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

# WTF Facilitator (BSC / USD1)

> Use WTF Academy’s public Facilitator on BSC for verification and settlement

## Overview

* **Network**: BSC
* **Token**: USD1 (BSC)
* **Base URL**: [`https://facilitator.x402x.ai`](https://facilitator.x402x.ai/supported)

<Note>
  This Facilitator is provided by WTF Academy, currently focusing on stable support for BSC and USD1.
</Note>

## Quick integration (server)

```ts theme={null}
import { X402Server } from "x402x-server";
import { Facilitator } from "x402x-facilitator";
import { createPublicClient, http } from "viem";
import { bsc } from "viem/chains";

const client = createPublicClient({ chain: bsc, transport: http() });
const facilitator = new Facilitator({
  recipientAddress: process.env.RECIPIENT_ADDRESS!,          // obtained from app.x402x.ai
  baseUrl: "https://facilitator.x402x.ai",                   // default: WTF Facilitator
});

const server = new X402Server({ client, facilitator });
```

## Example: create and process a payment

```ts theme={null}
// USD1 (BSC) example address (18 decimals)
const USD1 = "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d";

// 1) Create payment requirements (auto-detect or specify paymentType)
const requirements = await server.createRequirements({
  asset: USD1,
  maxAmountRequired: "1000000000000000000", // 1 USD1
  description: "Premium API",
});

// 2) Process (parse → verify → settle)
const result = await server.process(req.headers["x-payment"] as string, requirements);
if (!result.success) return res.status(result.status).json(result.response);

// 3) Return the resource
return res.json({ data: "ok", payer: result.data.payer, txHash: result.data.txHash });
```

## Query supported capabilities

```ts theme={null}
const supported = await facilitator.supported();
// { kinds: ["eip3009","permit","permit2"], networks: ["bsc", ...] } (example)
```

## Notes

* Works only on BSC; the current token is USD1
* Use an EIP-7702 recipient address (see: Payment Platform)
* In production, prefer `waitUntil: "confirmed"` and record `txHash`

## Related

<CardGroup cols={2}>
  <Card title="Payment Platform" icon="id-card" href="/en/user-guide/payment-platform">
    Obtain EIP-7702 recipient address
  </Card>

  <Card title="Server SDK" icon="server" href="/en/packages/server">
    Integrated server-side solution
  </Card>
</CardGroup>
