> ## 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 method by ID

> Use this endpoint to retrieve a single billing method by its identifier, scoped to the account specified in the `Snappy-Account-Id` header. Use this when you want to confirm a billing method is usable through the public API, fetch its remaining balance, or read its status and metadata before placing marketplace orders or triggering gifts.

**Required parameters**

- `billingMethodId` - the billing method identifier, passed as a path parameter.

**Required headers**

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

**Optional headers**

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

**Please note**

- Returns `404` if no billing method exists for the supplied `billingMethodId`, or if it belongs to a different account or company than the one in scope.
- Returns `422` for billing methods that exist but are not supported through the public API (e.g. `Express`). The error envelope identifies the unsupported type.
- The response includes a `spendingLimit` object with a `remaining` balance in **USD dollars** (e.g. `7250.5` = $7,250.50), or `null` when the billing method has no cap.
- `expirationDate` is `null` when no expiry is configured.

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



## OpenAPI

````yaml get /v3/billing-methods/{billingMethodId}
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/{billingMethodId}:
    get:
      tags:
        - Billing methods
      summary: Get billing method by ID
      description: >-
        Use this endpoint to retrieve a single billing method by its identifier,
        scoped to the account specified in the `Snappy-Account-Id` header. Use
        this when you want to confirm a billing method is usable through the
        public API, fetch its remaining balance, or read its status and metadata
        before placing marketplace orders or triggering gifts.


        **Required parameters**


        - `billingMethodId` - the billing method identifier, passed as a path
        parameter.


        **Required headers**


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


        **Optional headers**


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


        **Please note**


        - Returns `404` if no billing method exists for the supplied
        `billingMethodId`, or if it belongs to a different account or company
        than the one in scope.

        - Returns `422` for billing methods that exist but are not supported
        through the public API (e.g. `Express`). The error envelope identifies
        the unsupported type.

        - The response includes a `spendingLimit` object with a `remaining`
        balance in **USD dollars** (e.g. `7250.5` = $7,250.50), or `null` when
        the billing method has no cap.

        - `expirationDate` is `null` when no expiry is configured.


        #### Permissions

        - Requires: `billingMethods:read`
      operationId: getBillingMethod
      parameters:
        - schema:
            type: string
            description: The ID of the billing method to retrieve.
            example: 6a2515d0982480c2a4fd6b81
          required: true
          description: The ID of the billing method to retrieve.
          name: billingMethodId
          in: path
        - 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: Billing method details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingMethodByIdResponse'
        '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 or billing method not found.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiStringError'
                  - example:
                      status: 404
                      errorCode: 404_PBLC_001
                      message: Not Found
        '422':
          description: >-
            Unprocessable Entity - Account is inactive or billing method type is
            unsupported.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiStringError'
                  - example:
                      status: 422
                      errorCode: 422_PBLC_001
                      message: Unprocessable Entity
      security:
        - ApiKeyAuthentication: []
components:
  schemas:
    GetBillingMethodByIdResponse:
      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 single billing method.
      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
    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
    BillingMethodTypeV3:
      type: string
      enum:
        - Prepay
        - Invoice
        - PO
        - CC
      description: The type of the billing method.
      example: PO
    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
        ```

````