> This page is for Consumer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://citi-demo.ferndocs.com/consumer/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://citi-demo.ferndocs.com/consumer/_mcp/server.

# Bill Pay

### Overview

The Bill Pay API lets customers pay their bills directly from a Citi deposit account. Customers can add payees, schedule one-time or recurring payments, and see when each payment will be delivered — all from within your app.

---

### What you can do

**Manage payees** — Add, update, and remove the billers a customer pays.

**Schedule payments** — Set up one-time or recurring payments with a delivery date.

**Track and cancel** — Show upcoming and past payments, and cancel anything not yet processed.

---

### Add a payee

#### Authenticate

Obtain an access token with the `payments:write` scope.

#### Create the payee

Provide the biller's name and the customer's account number with that biller.

#### Schedule a payment

Reference the `payeeRef` and a funding `accountRef` to schedule a payment.

```json
{
  "payeeRef": "pye_5521",
  "fromAccountRef": "acct_884201",
  "amount": { "value": 120.00, "currency": "USD" },
  "sendOn": "2026-05-01",
  "frequency": "MONTHLY"
}
```

```json
{
  "paymentId": "bill_9f0c",
  "status": "SCHEDULED",
  "deliverBy": "2026-05-03"
}
```

> **Info**
>
> Electronic payees are usually paid within 1–2 business days. Payees paid by mailed check can take 5–7 business days — surface the `deliverBy` date so customers schedule early.

---

### Payment frequencies

| Frequency  | Description                         |
| ---------- | ----------------------------------- |
| `ONCE`     | A single payment on the chosen date |
| `WEEKLY`   | Repeats every week                  |
| `MONTHLY`  | Repeats every month                 |
| `ANNUALLY` | Repeats every year                  |

> **Warning**
>
> A scheduled payment can be canceled only before it begins processing. Once a payment is `PROCESSING`, it can no longer be stopped through the API.

---

### Security requirements

Requests require an OAuth 2.0 access token with the `payments:write` scope. See the [Authentication guide](/consumer/api-docs/get-started/authentication).