> ## 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.

# Get billing methods

> Use this endpoint to retrieve the billing methods of an account that are usable through the public API. Use this when you need to discover which billing methods are available - and how much budget remains on each - before placing marketplace orders or triggering gifts.

**Filtering options**

- `filter[type]` - exact match on billing method type. One of `Prepay`, `Invoice`, `PO`, `CC`.
- `filter[status]` - exact match on billing method status. Allowed values depend on the type:
  - `Invoice`: `active`, `archived`
  - `CC`: `active`, `archived`, `expired`
  - `PO`: `draft`, `active`, `archived`, `expired`
  - `Prepay`: `draft`, `active`, `archived`
- `filter[remainingBalance][gte]` - return billing methods with a `spendingLimit.remaining` **greater than or equal to** this value. Value is in **USD dollars** and must be greater than 0 (e.g. `1000` = $1,000).
- `filter[remainingBalance][lte]` - return billing methods with a `spendingLimit.remaining` **less than or equal to** this value. Value is in **USD dollars** and must be greater than 0 (e.g. `5000` = $5,000).

**Required headers**

- `Snappy-Account-Id` - account scope.

**Optional headers**

- `Snappy-Company-Id` - further scope to a specific Company.

**Please note**

- `Express` billing methods are intentionally excluded from this endpoint. They exist on some accounts but cannot be used through the public API.
- Each billing method's response includes a `spendingLimit` object with a `remaining` balance in **USD dollars**, or `null` when the billing method has no cap (e.g. `Invoice`).
- `expirationDate` is `null` when no expiry is configured on the billing method.
- `filter[remainingBalance]` filters apply only to billing methods that have a `spendingLimit`. `Invoice` billing methods (which have `spendingLimit: null`) are excluded when either range bound is supplied.

#### Permissions
- Requires: `billingMethods:read`



## OpenAPI

````yaml get /v3/billing-methods
openapi: 3.0.3
info:
  title: Snappy Public API v3
  version: 3.0.0
  contact:
    name: Snappy Support
    email: info@snappy.com
  description: >-
    Welcome to the Snappy API reference documentation!

    You can use this API to integrate with Snappy and spread smiles to your
    employees/clients/customers and much more.

    So let's get started!
servers:
  - url: https://api.snappy.com/public-api
    description: Base API URL
  - url: https://mtls-api.snappy.com/public-api
    description: >-
      ## mTLS URL

      You can also use mTLS to enhance your API security. To get your specific
      certificates please contact our support.

      Once you configure the certificated correctly, you need to also update
      endpoints to use the following secure api base URL:
security: []
tags:
  - name: Products
    description: >-
      Use these endpoints to retrieve products and tags for building catalog and
      browse experiences in your UI.
  - name: Collections
    description: >-
      Use these endpoints to retrieve products within curated collections for
      marketplace and browse experiences.
  - name: Variants
    description: >-
      Use these endpoints to retrieve variants, variant pricing, and country
      availability for orderable product SKUs.
  - name: Billing Methods
    description: >-
      A **Billing Method** is the funding source attached to an **Account** -
      for example, a Purchase Order (PO), Invoice, Prepay deposit, or Credit
      Card. Use these endpoints to retrieve billing method details such as
      remaining balance, status, and expiration.
  - name: Accounts
    description: >-
      An **Account** is a sub-entity within a **Company**, used to organize
      campaigns and gift sends. Use these endpoints to list, retrieve, and
      create accounts.
  - name: API Keys
    description: >-
      Use these endpoints to manage API keys for programmatic access. Key
      management requires company owner privileges.
  - name: Orders
    description: >-
      Use these endpoints to place, retrieve, cancel, and validate orders and
      shipping addresses.
paths:
  /v3/billing-methods:
    get:
      tags:
        - Billing methods
      summary: Get billing methods
      description: >-
        Use this endpoint to retrieve the billing methods of an account that are
        usable through the public API. Use this when you need to discover which
        billing methods are available - and how much budget remains on each -
        before placing marketplace orders or triggering gifts.


        **Filtering options**


        - `filter[type]` - exact match on billing method type. One of `Prepay`,
        `Invoice`, `PO`, `CC`.

        - `filter[status]` - exact match on billing method status. Allowed
        values depend on the type:
          - `Invoice`: `active`, `archived`
          - `CC`: `active`, `archived`, `expired`
          - `PO`: `draft`, `active`, `archived`, `expired`
          - `Prepay`: `draft`, `active`, `archived`
        - `filter[remainingBalance][gte]` - return billing methods with a
        `spendingLimit.remaining` **greater than or equal to** this value. Value
        is in **USD dollars** and must be greater than 0 (e.g. `1000` = $1,000).

        - `filter[remainingBalance][lte]` - return billing methods with a
        `spendingLimit.remaining` **less than or equal to** this value. Value is
        in **USD dollars** and must be greater than 0 (e.g. `5000` = $5,000).


        **Required headers**


        - `Snappy-Account-Id` - account scope.


        **Optional headers**


        - `Snappy-Company-Id` - further scope to a specific Company.


        **Please note**


        - `Express` billing methods are intentionally excluded from this
        endpoint. They exist on some accounts but cannot be used through the
        public API.

        - Each billing method's response includes a `spendingLimit` object with
        a `remaining` balance in **USD dollars**, or `null` when the billing
        method has no cap (e.g. `Invoice`).

        - `expirationDate` is `null` when no expiry is configured on the billing
        method.

        - `filter[remainingBalance]` filters apply only to billing methods that
        have a `spendingLimit`. `Invoice` billing methods (which have
        `spendingLimit: null`) are excluded when either range bound is supplied.


        #### Permissions

        - Requires: `billingMethods:read`
      operationId: getBillingMethods
      parameters:
        - schema:
            allOf:
              - $ref: '#/components/schemas/BillingMethodTypeV3'
              - description: Filter by billing method type.
          required: false
          description: Filter by billing method type.
          name: filter[type]
          in: query
        - schema:
            allOf:
              - $ref: '#/components/schemas/BillingMethodListStatusV3'
              - description: >-
                  Filter by billing method status. Allowed values depend on the
                  selected type.
          required: false
          description: >-
            Filter by billing method status. Allowed values depend on the
            selected type.
          name: filter[status]
          in: query
        - schema:
            type: number
            minimum: 0
            exclusiveMinimum: true
            description: >-
              Return only billing methods with remaining balance at or above
              this value.
            example: 1000
          required: false
          description: >-
            Return only billing methods with remaining balance at or above this
            value.
          name: filter[remainingBalance][gte]
          in: query
        - schema:
            type: number
            minimum: 0
            exclusiveMinimum: true
            description: >-
              Return only billing methods with remaining balance at or below
              this value.
            example: 5000
          required: false
          description: >-
            Return only billing methods with remaining balance at or below this
            value.
          name: filter[remainingBalance][lte]
          in: query
        - schema:
            type: string
            description: Account identifier.
            example: acc123456
          required: true
          description: Account identifier.
          name: snappy-account-id
          in: header
        - schema:
            type: string
            description: Optional company identifier.
            example: cmp123456
          required: false
          description: Optional company identifier.
          name: snappy-company-id
          in: header
      responses:
        '200':
          description: List of billing methods for the account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingMethodsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiStringError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiStringError'
                  - example:
                      status: 401
                      errorCode: 401_PBLC_001
                      message: Unauthorized
        '403':
          description: Forbidden - Missing permission.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiStringError'
                  - example:
                      status: 403
                      errorCode: 403_PBLC_001
                      message: Forbidden
        '404':
          description: Not Found - Account not visible.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiStringError'
                  - example:
                      status: 404
                      errorCode: 404_PBLC_001
                      message: Not Found
      security:
        - ApiKeyAuthentication: []
components:
  schemas:
    BillingMethodTypeV3:
      type: string
      enum:
        - Prepay
        - Invoice
        - PO
        - CC
      description: The type of the billing method.
      example: PO
    BillingMethodListStatusV3:
      type: string
      enum:
        - draft
        - active
        - archived
        - expired
      description: The status of the billing method.
      example: active
    GetBillingMethodsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BillingMethodListItemV3'
      required:
        - data
      description: A list of billing methods for the account.
      example:
        data:
          - id: 6a2515d0982480c2a4fd6b81
            name: Q1 Marketing PO
            type: PO
            status: active
            createdAt: '2025-01-15T10:00:00.000Z'
            expirationDate: '2025-12-31T23:59:59.000Z'
            spendingLimit:
              remaining: 7250.5
          - id: 6a2515d1982480c2a4fd6b82
            name: Net-30 Invoice
            type: Invoice
            status: active
            createdAt: '2025-03-01T10:00:00.000Z'
            expirationDate: null
            spendingLimit: null
    ApiStringError:
      type: object
      properties:
        status:
          type: integer
          description: The HTTP status code.
          example: 400
        errorCode:
          type: string
          description: >-
            Internal error code, helps Snappy's technical team to troubleshoot
            if needed.
          example: 400_PBLC_001
        message:
          type: string
          description: The error message.
          example: Unauthorized
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
                description: The path of the field that caused the error.
                example: body.recipients.0.email
              message:
                type: string
                description: The error message.
                example: Invalid email.
              errorCode:
                type: string
                description: >-
                  Internal error code, helps Snappy's technical team to
                  troubleshoot if needed.
                example: 400_PBLC_002
            required:
              - path
              - message
              - errorCode
          description: >-
            An array of client errors. This field is being returned only for
            errors the client should fix, usually with status code 400.
      required:
        - status
        - errorCode
        - message
      description: >-
        API error response with string error codes and optional client error
        details
      example:
        status: 400
        errorCode: 400_PBLC_001
        message: Bad Request
    BillingMethodListItemV3:
      allOf:
        - $ref: '#/components/schemas/BillingMethodItemV3'
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/BillingMethodListStatusV3'
      description: A billing method returned by the list endpoint.
      example:
        id: 6a2515d0982480c2a4fd6b81
        name: Q1 Marketing PO
        type: PO
        status: active
        createdAt: '2025-01-15T10:00:00.000Z'
        expirationDate: '2025-12-31T23:59:59.000Z'
        spendingLimit:
          remaining: 7250.5
    BillingMethodItemV3:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the billing method.
          example: 6a2515d0982480c2a4fd6b81
        name:
          type: string
          description: The display name of the billing method.
          example: Q1 Marketing PO
        type:
          $ref: '#/components/schemas/BillingMethodTypeV3'
        status:
          $ref: '#/components/schemas/BillingMethodStatusV3'
        createdAt:
          type: string
          format: date-time
          description: The date the billing method was created, in ISO-8601 format.
          example: '2025-01-15T10:00:00.000Z'
        expirationDate:
          type: string
          nullable: true
          format: date-time
          description: >-
            The expiration date of the billing method, in ISO-8601 format. Null
            when no expiry is configured.
          example: '2025-12-31T23:59:59.000Z'
        spendingLimit:
          $ref: '#/components/schemas/SpendingLimit'
      required:
        - id
        - name
        - type
        - status
        - createdAt
        - expirationDate
        - spendingLimit
      description: A billing method returned by the v3 API.
      example:
        id: 6a2515d0982480c2a4fd6b81
        name: Q1 Marketing PO
        type: PO
        status: active
        createdAt: '2025-01-15T10:00:00.000Z'
        expirationDate: '2025-12-31T23:59:59.000Z'
        spendingLimit:
          remaining: 7250.5
    BillingMethodStatusV3:
      type: string
      enum:
        - draft
        - active
        - archived
        - expired
      description: The current status of the billing method.
      example: active
    SpendingLimit:
      type: object
      nullable: true
      properties:
        remaining:
          type: number
          description: The remaining balance available on this billing method.
          example: 7250.5
      required:
        - remaining
      description: >-
        Spending limit details. Null when the billing method has no cap (e.g.
        Invoice).
      example:
        remaining: 7250.5
  securitySchemes:
    ApiKeyAuthentication:
      type: apiKey
      in: header
      name: X-Api-Key
      description: |-
        ## Company Level Authentication

        Include your API key in the `X-Api-Key` header for every request:
        ```
        X-Api-Key: YOUR_API_KEY
        ```

````