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

# Billing Methods API: Account Funding Sources and Remaining Balances

> Discover which billing methods are available on an account and how much budget remains on each - before creating campaigns or sending gifts.

A **Billing Method** is the financial funding source used to pay for gifts and associated fees. Each Account can have one or more Billing Methods, with one set as the default that's applied automatically when creating Campaigns via the API.

The Billing Methods API exposes the billing methods on an Account that are usable through the public API, so you can discover available funding sources, check remaining budget, and confirm a billing method is valid before sending gifts.

<Tip>
  Want to understand how **Billing Methods** fit into the bigger picture? Check out the [Core Concepts & Data Models](/pages/snappy-core-concepts-and-data-models) page.
</Tip>

<Note>
  Billing Methods are referenced in V3 API requests by the `fundingSourceId` field (for example, on `POST /orders`).
</Note>

***

## The Billing Method Object

| Field            | Type              | Description                                                                                                                   |
| :--------------- | :---------------- | :---------------------------------------------------------------------------------------------------------------------------- |
| `id`             | string            | Unique identifier of the billing method (e.g. `fs_abc123`)                                                                    |
| `name`           | string            | Display name of the billing method                                                                                            |
| `type`           | enum              | Billing method type. One of: `Prepay`, `Invoice`, `PO`, `CC`                                                                  |
| `status`         | enum              | Current status. One of: `draft`, `active`, `archived`, `expired` (allowed values depend on the type - see Key Concepts below) |
| `createdAt`      | string (ISO 8601) | When the billing method was created                                                                                           |
| `expirationDate` | string (ISO 8601) | When the billing method expires. `null` when no expiry is configured.                                                         |
| `spendingLimit`  | object            | Spending limit details, with a `remaining` balance field. `null` when the billing method has no cap (e.g. `Invoice`).         |

***

## Key Concepts & Business Rules

#### Billing Method types

Snappy supports four billing method types through the public API:

| Type      | Description                                                                                            |
| :-------- | :----------------------------------------------------------------------------------------------------- |
| `Prepay`  | Pre-funded balance - the Account loads funds upfront and they're drawn down as gifts are sent.         |
| `Invoice` | Net-terms billing - gifts are sent and Snappy invoices the Account periodically. No spending cap.      |
| `PO`      | Purchase order - a fixed-budget allocation typically tied to a department, initiative, or time period. |
| `CC`      | Credit card on file - direct charges per gift.                                                         |

<Note>
  **`Express`** billing methods exist for some accounts but are **intentionally excluded** from the public API. They will not appear in `GET /v3/billing-methods` responses, and `GET /v3/billing-methods/{billingMethodId}` returns `422` when called against an Express method.
</Note>

#### Status values vary by type

Allowed `status` values depend on the billing method type:

| Type      | Allowed statuses                         |
| :-------- | :--------------------------------------- |
| `Invoice` | `active`, `archived`                     |
| `CC`      | `active`, `archived`, `expired`          |
| `PO`      | `draft`, `active`, `archived`, `expired` |
| `Prepay`  | `draft`, `active`, `archived`            |

Only **`active`** billing methods can be used to send gifts. `draft` methods are configured but not yet ready; `archived` methods have been retired; `expired` methods have passed their expiration date.

#### Remaining balance

The `spendingLimit.remaining` field reports the current balance available on the billing method. For `Invoice` billing methods, `spendingLimit` is `null` because there's no spending cap.

Always check remaining balance before sending high-value gifts - Snappy rejects gift creation when the selected billing method has insufficient funds.

#### Default Billing Method

Each Account has one Billing Method set as the default. This default is applied automatically to any Campaign created via the API. For Embedded Marketplace (`POST /orders`), the billing method is referenced via the `fundingSourceId` field, and a matching Campaign is auto-selected or created based on that funding source.

#### Account scoping

Billing Methods are scoped to an Account. Pass the `Snappy-Account-Id` header to scope your query to a specific Account when your API key has access to multiple Accounts.

***

## How to Work with Billing Methods

**List billing methods**

```text theme={null}
GET /v3/billing-methods
```

Returns the billing methods on the Account that are usable through the public API. Filter by `type`, `status`, or `remainingBalance` range.

**Get a single billing method**

```text theme={null}
GET /v3/billing-methods/{billingMethodId}
```

Returns a single billing method by its ID. Returns `422` for billing methods that exist but aren't supported through the public API (e.g. `Express`).

***

<Note>
  Billing Methods are currently **read-only** through the public API. To create, update, or archive Billing Methods, use the Snappy Dashboard.
</Note>
