Smokeball Subscription Payments API

The Subscription Payments API from Smokeball — 4 operation(s) for subscription payments.

Operations 8

GET /subscriptions/paymentmethods Get all customer payment methods #
POST /subscriptions/paymentmethods Add payment method #
GET /subscriptions/{subscriptionId}/paymentmethods Get payment methods #
PUT /subscriptions/{subscriptionId}/paymentmethods Update subscription payment method async #
POST /subscriptions/{subscriptionId}/paymentmethods Add payment method #
GET /subscriptions/{subscriptionId}/paymentmethods/{id} Get payment method #
DELETE /subscriptions/{subscriptionId}/paymentmethods/{id} Remove payment method #
GET /subscriptions/paymentsystems Get supported payment systems #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/smokeball-subscription-payments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

smokeball-subscription-payments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Smokeball Subscription Payments API
  version: '1.0'
  description: REST API for integrating with Smokeball legal practice management software. Supports matters, contacts, documents, time entries, billing, trust accounting, staff, webhooks, and law firm workflows across US, AU, and UK regions. Uses OAuth 2.0 (client credentials) authentication.
  contact:
    name: Smokeball Developer Support
    url: https://docs.smokeball.com/docs/api-docs/1e13a13124aee-introduction
  x-api-id: smokeball
  x-audience: external-public
servers:
- url: https://api.smokeball.com
- url: https://api.smokeball.com.au
- url: https://api.smokeball.co.uk
- url: https://stagingapi.smokeball.com
- url: https://stagingapi.smokeball.com.au
- url: https://stagingapi.smokeball.co.uk
security:
- api-key: []
  token: []
tags:
- name: Subscription Payments
paths:
  /subscriptions/paymentmethods:
    get:
      tags:
      - Subscription Payments
      summary: Get all customer payment methods
      description: Returns all payment methods attached to the current account's payment customer.
      operationId: GetCustomerPaymentMethodsAsync
      parameters:
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodPagedCollection'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Internal Server Error
      x-excluded: true
    post:
      tags:
      - Subscription Payments
      summary: Add payment method
      description: 'Adds a new payment method to the account.


        Important notes:

        * Can optionally set as default payment method for the entire account

        * Can force immediate charge for overdue invoices for all active subscriptions

        * Payment information format depends on payment system'
      operationId: AddPaymentMethodAsync
      requestBody:
        description: Payment method details including system and payment information
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When subscription with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: When an error occurs while adding payment method.
      x-excluded: true
  /subscriptions/{subscriptionId}/paymentmethods:
    get:
      tags:
      - Subscription Payments
      summary: Get payment methods
      description: Returns the payment methods actively set on the specified subscription.
      operationId: GetPaymentMethodsAsync
      parameters:
      - name: subscriptionId
        in: path
        description: The unique identifier of the subscription
        required: true
        schema:
          type: string
      - name: Offset
        in: query
        schema:
          maximum: 2147483647
          minimum: 0
          type: integer
          format: int32
      - name: Limit
        in: query
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
      responses:
        '200':
          description: When request is successful. Returns a paged collection of 'PaymentMethod' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodPagedCollection'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When subscription with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: When an error occurs while retrieving payment methods.
      x-excluded: true
    put:
      tags:
      - Subscription Payments
      operationId: UpdateSubscriptionPaymentMethodAsync
      parameters:
      - name: subscriptionId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SetDefaultPaymentMethodRequest'
              description: Request to set or clear a subscription default payment method.
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SetDefaultPaymentMethodRequest'
              description: Request to set or clear a subscription default payment method.
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SetDefaultPaymentMethodRequest'
              description: Request to set or clear a subscription default payment method.
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Internal Server Error
      x-excluded: true
      summary: Update subscription payment method async
      x-summary-source: derived
    post:
      tags:
      - Subscription Payments
      summary: Add payment method
      description: 'Adds a new payment method to the account and sets it for the specified subscription


        Important notes:

        * Can optionally set as default payment method for the entire account, or the specified subscription

        * Can force immediate charge for overdue invoices for the specified subscription

        * Payment information format depends on payment system'
      operationId: AddSubscriptionPaymentMethodAsync
      parameters:
      - name: subscriptionId
        in: path
        description: The unique identifier of the subscription
        required: true
        schema:
          type: string
      requestBody:
        description: Payment method details including system and payment information
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AddPaymentMethodRequest'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When subscription with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: When an error occurs while adding payment method.
      x-excluded: true
  /subscriptions/{subscriptionId}/paymentmethods/{id}:
    get:
      tags:
      - Subscription Payments
      summary: Get payment method
      description: Returns a specific payment method associated with a subscription.
      operationId: GetPaymentMethodAsync
      parameters:
      - name: subscriptionId
        in: path
        description: The unique identifier of the subscription
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The unique identifier of the payment method
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: When request is successful. Returns a 'PaymentMethod' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethod'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When subscription or payment method with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: When an error occurs while retrieving payment method.
      x-excluded: true
    delete:
      tags:
      - Subscription Payments
      summary: Remove payment method
      description: 'Removes a payment method from a subscription.


        Important notes:

        * Can optionally specify a new default payment method

        * Removing default without replacement may cause subscription to go OVERDUE'
      operationId: RemovePaymentMethodAsync
      parameters:
      - name: subscriptionId
        in: path
        description: The unique identifier of the subscription
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: The ID of the payment method to remove
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Optional request containing new default payment method ID
        content:
          application/json-patch+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RemovePaymentMethodRequest'
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RemovePaymentMethodRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RemovePaymentMethodRequest'
      responses:
        '202':
          description: When request is accepted. Returns a 'Link' object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
        '404':
          description: When subscription or payment method with specified id does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: When an error occurs while removing payment method.
      x-excluded: true
  /subscriptions/paymentsystems:
    get:
      tags:
      - Subscription Payments
      summary: Get supported payment systems
      description: 'Returns all supported payment systems and their supported payment method types.

        Currently supports:

        * STRIPE with CREDIT_CARD payment type'
      operationId: GetSupportedPaymentSystemsAsync
      responses:
        '200':
          description: When request is successful. Returns a collection of 'PaymentSystem' objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSystemCollection'
        '500':
          description: When an error occurs while retrieving supported payment systems.
      x-excluded: true
components:
  schemas:
    PaymentMethod:
      type: object
      properties:
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        id:
          type:
          - string
          - 'null'
          description: Unique identifier of the payment method.
          example: 784b3497-bf1f-47d2-93e6-1d38b96b8d3f
        paymentSystem:
          type:
          - string
          - 'null'
          description: Payment system.
          example: STRIPE
        type:
          type: string
          description: 'The payment type.


            * None - The payment type is missing or unknown.


            * CreditCard - Credit Card payment type.


            * DirectDeposit - Direct Deposit payment type. (not currently supported)'
          example: CreditCard
        isDefault:
          type: boolean
          description: Whether this is the default payment method for the customer.
          example: true
        details:
          allOf:
          - $ref: '#/components/schemas/PaymentMethodDetails'
          description: Payment method specific details for display.
        lastPaymentState:
          type: string
          description: 'The status of a payment.


            * None: The payment status is unknown.


            * Succeeded: The payment was successful.


            * Processing: The payment is being processed.


            * Canceled: The payment was canceled.


            * Failed: The payment requires a payment method to be provided, the provided payment method failed or other action is required (e.g. confirmation or other action by the customer)'
          example: Succeeded
        createdDate:
          type: string
          description: When this payment method was added.
          format: date-time
          example: '2022-04-23T14:00:00Z'
      additionalProperties: false
    Link:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
      additionalProperties: false
    PaymentSystemCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PaymentSystem'
      additionalProperties: false
    PaymentInformation:
      type: object
      additionalProperties: false
      description: Base class for payment information.
    SubscriptionType:
      enum:
      - 0
      - 1
      type: integer
      format: int32
    PaymentMethodDetails:
      type: object
      properties:
        brand:
          type:
          - string
          - 'null'
          description: The brand of the credit card.
        lastFourDigits:
          type:
          - string
          - 'null'
          description: Last four digits of the credit card.
          example: '1234'
        expiry:
          type:
          - string
          - 'null'
          description: Expiry date of the credit card in MM/YY format.
          example: 10/28
        expiryMonth:
          type:
          - integer
          - 'null'
          description: Expiry month.
          format: int64
          example: 10
        expiryYear:
          type:
          - integer
          - 'null'
          description: Expiry year.
          format: int64
          example: 2028
        accountNumber:
          type:
          - integer
          - 'null'
          description: 'The account number of the direct deposit account.


            Not yet supported.'
          format: int64
          example: 123456789
        bsb:
          type:
          - integer
          - 'null'
          description: 'The BSB of the direct deposit account.


            Not yet supported.'
          format: int64
      additionalProperties: false
    RemovePaymentMethodRequest:
      type: object
      properties:
        newDefaultPaymentMethodId:
          type:
          - string
          - 'null'
          description: Optional ID of payment method to set as new default.
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - string
          - 'null'
        title:
          type:
          - string
          - 'null'
        status:
          type:
          - integer
          - 'null'
          format: int32
        detail:
          type:
          - string
          - 'null'
        instance:
          type:
          - string
          - 'null'
      additionalProperties: {}
    PaymentMethodPagedCollection:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        href:
          type:
          - string
          - 'null'
        relation:
          type:
          - string
          - 'null'
        method:
          type:
          - string
          - 'null'
          default: GET
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
        value:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/PaymentMethod'
        offset:
          type:
          - integer
          - 'null'
          format: int32
        limit:
          type:
          - integer
          - 'null'
          format: int32
        size:
          type: integer
          format: int64
        first:
          allOf:
          - $ref: '#/components/schemas/Link'
        previous:
          allOf:
          - $ref: '#/components/schemas/Link'
        next:
          allOf:
          - $ref: '#/components/schemas/Link'
        last:
          allOf:
          - $ref: '#/components/schemas/Link'
      additionalProperties: false
    AddPaymentMethodRequest:
      type: object
      properties:
        paymentSystemId:
          type:
          - string
          - 'null'
          description: Payment system to use.
          example: STRIPE
        paymentInformation:
          allOf:
          - $ref: '#/components/schemas/PaymentInformation'
          description: 'Payment information specific to the payment system.


            For Stripe, this should be StripePaymentInformation.'
        isDefault:
          type:
          - boolean
          - 'null'
          description: "Whether to set this as the default payment method for the entire account \n\nThis does not set the default payment method for the subscription."
          example: true
        chargeImmediately:
          type:
          - boolean
          - 'null'
          description: 'Whether to charge immediately if subscription(s) are overdue.


            If true, the payment system will attempt to charge the customer immediately if there are any overdue subscriptions.


            If a subscription id is passed as a parameter to the request, only that subscription will be charged immediately if overdue.'
          example: true
      additionalProperties: false
    SetDefaultPaymentMethodRequest:
      type: object
      properties:
        paymentMethodId:
          type:
          - string
          - 'null'
          description: Public payment method id. Null clears the subscription override which reverts behavior to the Customer's default.
          format: uuid
        subscriptionType:
          allOf:
          - $ref: '#/components/schemas/SubscriptionType'
          description: Deprecated. The subscription type is inferred from the route subscription id.
      additionalProperties: false
      description: Request to set or clear a subscription default payment method.
    PaymentSystem:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
          description: Id of payment system.
          example: STRIPE
        supportedPaymentTypes:
          type:
          - array
          - 'null'
          items:
            type: string
            description: 'The payment type.


              * None - The payment type is missing or unknown.


              * CreditCard - Credit Card payment type.


              * DirectDeposit - Direct Deposit payment type. (not currently supported)'
          description: List of supported payment method types.
      additionalProperties: false
  securitySchemes:
    api-key:
      type: apiKey
      name: x-api-key
      in: header
    token:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools