Meow Invoices API

Create and manage invoices.

OpenAPI Specification

meow-invoices-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Meow Accounts Invoices API
  description: '## Overview


    The Meow API provides financial services and billing capabilities for your business.


    ### Core Features


    - **Financial data access**: access account information, transactions, balances, and payment networks.

    - **Crypto operations**: create and manage crypto contacts, and initiate USDC transfers across blockchain networks.


    ### Billing API


    The Billing API lets you create and manage invoices and collect payments:


    - **Product management**: create and manage products with custom pricing.

    - **Customer management**: maintain invoicing customers with their addresses.

    - **Invoice creation**: generate invoices with line items, discounts, and custom notes.

    - **Payment options**: accept payments via ACH, wire, international wire, card, and USDC.

    - **Collection accounts**: configure accounts for payment collection.


    ### Getting Started


    Authenticate by sending your API key in the `x-api-key` request header.


    To scope requests to a specific entity, include the `x-entity-id` header. Use the `/api-keys/accessible-entities` endpoint to list all entities accessible by your API key.


    ### Error Responses


    Errors return JSON with `code`, `message`, and `debug_message`. The `code` aligns with FDX where possible; use `debug_message` for troubleshooting only.


    Common error codes:


    - `500`: Internal server error

    - `501`: Subsystem unavailable

    - `503`: Scheduled maintenance

    - `601`: Data not found

    - `602`: Customer not authorized

    - `701`: Account not found

    - `703`: Invalid input (including invalid date ranges)

    - `704`: Account type not supported

    - `705`: Account is closed

    - `801`: Transaction not found

    '
  contact:
    name: Meow
    url: https://meow.com/
    email: support@meow.com
  version: 1.0.0
  license:
    name: Proprietary
    url: https://www.meow.com/terms-of-service
servers:
- url: https://api.meow.com/v1
  description: Meow API Production
- url: https://api.sandbox.meow.com/v1
  description: Meow API Sandbox
security:
- apiKeyAuth: []
tags:
- name: Invoices
  description: Create and manage invoices.
paths:
  /billing/invoices:
    get:
      tags:
      - Invoices
      summary: List Invoices
      description: Lists all invoices.
      operationId: list_invoices_billing_invoices_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Invoice'
                type: array
                title: Response List Invoices Billing Invoices Get
      security:
      - apiKeyAuth:
        - billing:invoices:read
      parameters:
      - $ref: '#/components/parameters/EntityIdHeader'
    post:
      tags:
      - Invoices
      summary: Create Invoice
      description: Creates a new invoice.
      operationId: create_invoice_billing_invoices_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInvoiceRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - apiKeyAuth:
        - billing:invoices:write
      parameters:
      - $ref: '#/components/parameters/EntityIdHeader'
  /billing/invoices/{invoice_id}:
    get:
      tags:
      - Invoices
      summary: Get Invoice
      description: Gets an invoice by ID.
      operationId: get_invoice_billing_invoices__invoice_id__get
      parameters:
      - name: invoice_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Invoice Id
      - $ref: '#/components/parameters/EntityIdHeader'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - apiKeyAuth:
        - billing:invoices:read
  /billing/invoices/{invoice_id}/download:
    get:
      tags:
      - Invoices
      summary: Download Invoice PDF
      description: Downloads an invoice as a PDF file.
      operationId: download_invoice_pdf_billing_invoices__invoice_id__download_get
      parameters:
      - name: invoice_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          description: The unique identifier of the invoice to download.
          title: Invoice Id
        description: The unique identifier of the invoice to download.
      - $ref: '#/components/parameters/EntityIdHeader'
      responses:
        '200':
          description: The invoice as a PDF file. Returns binary data (raw bytes).
          content:
            application/pdf:
              schema:
                type: string
                format: binary
              example: Binary PDF content
          headers:
            Content-Disposition:
              description: The `Content-Disposition` header that triggers a file download with the invoice filename.
              schema:
                type: string
                example: attachment; filename="Invoice - INV-2024-001.pdf"
        '404':
          description: Invoice not found.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                  code:
                    type: integer
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - apiKeyAuth:
        - billing:invoices:read
components:
  schemas:
    DateString:
      type: string
      format: date
      title: DateString
      description: ISO 8601 full-date in the format `YYYY-MM-DD` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    Invoice:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The unique identifier for the invoice.
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: The name of the invoice.
        customer_id:
          type: string
          format: uuid
          title: Customer Id
          description: The unique identifier for the customer.
        status:
          $ref: '#/components/schemas/InvoiceStatus'
          description: The current status of the invoice.
        amount:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The total amount of the invoice.
        amount_paid:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Paid
          description: The amount that has been paid on the invoice.
        amount_due:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Due
          description: The remaining amount due on the invoice.
        invoice_number:
          anyOf:
          - type: string
          - type: 'null'
          title: Invoice Number
          description: The public-facing invoice number.
        line_item_ids:
          items:
            type: string
            format: uuid
          type: array
          title: Line Item Ids
          description: List of line item IDs associated with the invoice.
        invoice_date:
          anyOf:
          - $ref: '#/components/schemas/DateString'
          - type: 'null'
          description: The date the invoice is scheduled to be sent.
        due_date:
          anyOf:
          - $ref: '#/components/schemas/DateString'
          - type: 'null'
          description: The date the invoice payment is due.
        payment_method_types:
          items:
            $ref: '#/components/schemas/PaymentMethodType'
          type: array
          title: Payment Method Types
          description: List of allowed payment method types for the invoice.
        send_email_on_creation:
          type: boolean
          title: Send Email On Creation
          description: Whether to send an email upon invoice creation.
        additional_recipient_emails:
          items:
            type: string
          type: array
          title: Additional Recipient Emails
          description: List of additional email addresses to receive the invoice.
        note:
          anyOf:
          - type: string
          - type: 'null'
          title: Note
          description: A note associated with the invoice.
        collection_account_id:
          type: string
          format: uuid
          title: Collection Account Id
          description: The collection account ID where funds will be collected.
        created_at:
          $ref: '#/components/schemas/Timestamp'
          description: The timestamp when the invoice was created.
        updated_at:
          anyOf:
          - $ref: '#/components/schemas/Timestamp'
          - type: 'null'
          description: The timestamp when the invoice was last updated.
        paid_at:
          anyOf:
          - $ref: '#/components/schemas/Timestamp'
          - type: 'null'
          description: The timestamp when the invoice was fully paid.
        canceled_at:
          anyOf:
          - $ref: '#/components/schemas/Timestamp'
          - type: 'null'
          description: The timestamp when the invoice was canceled.
        sent_at:
          anyOf:
          - $ref: '#/components/schemas/Timestamp'
          - type: 'null'
          description: The timestamp when the invoice was sent.
        expired_at:
          anyOf:
          - $ref: '#/components/schemas/Timestamp'
          - type: 'null'
          description: The timestamp when the invoice expired.
      type: object
      required:
      - id
      - customer_id
      - status
      - amount
      - amount_paid
      - amount_due
      - line_item_ids
      - payment_method_types
      - send_email_on_creation
      - additional_recipient_emails
      - collection_account_id
      - created_at
      title: Invoice
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    InvoiceStatus:
      type: string
      enum:
      - Draft
      - Open
      - Pending
      - Scheduled
      - Partially Paid
      - Paid
      - Canceled
      - Expired
      - Overdue
      title: InvoiceStatus
      x-enum-varnames:
      - DRAFT
      - OPEN
      - PENDING
      - SCHEDULED
      - PARTIALLY_PAID
      - PAID
      - CANCELED
      - EXPIRED
      - OVERDUE
    Timestamp:
      type: string
      format: date-time
      title: Timestamp
      description: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
    InvoiceLineRequest:
      properties:
        product_id:
          type: string
          format: uuid
          title: Product Id
        quantity:
          anyOf:
          - type: number
            maximum: 100000000.0
            exclusiveMinimum: 0.001
          - type: string
            pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,3}0*$
          title: Quantity
          description: Quantity of the product.
        price:
          anyOf:
          - anyOf:
            - type: number
              maximum: 100000000.0
              minimum: 0.01
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
            description: Price of the product. Defaults to the product's default price.
          - type: 'null'
          title: Price
        description:
          anyOf:
          - type: string
            maxLength: 400
          - type: 'null'
          title: Description
          description: Description of the product. Defaults to the product's description if not provided.
        discount_percentage:
          anyOf:
          - anyOf:
            - type: number
              maximum: 100.0
              minimum: 0.0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,0}0*$
            description: Discount percentage of the product.
          - type: 'null'
          title: Discount Percentage
        discount_description:
          anyOf:
          - type: string
            maxLength: 100
          - type: 'null'
          title: Discount Description
          description: Description of the discount applied to the product.
      type: object
      required:
      - product_id
      - quantity
      title: InvoiceLineRequest
    PaymentMethodType:
      type: string
      enum:
      - BANK_TRANSFER
      - CARD
      - ACH_DIRECT_DEBIT
      - INTERNATIONAL_WIRE
      - USDC_ETHEREUM
      - USDC_SOLANA
      - USDC_BASE
      - USDT_ETHEREUM
      - USDT_SOLANA
      - CASH_SOLANA
      title: PaymentMethodType
      x-enum-varnames:
      - BANK_TRANSFER
      - CARD
      - ACH_DIRECT_DEBIT
      - INTERNATIONAL_WIRE
      - USDC_ETHEREUM
      - USDC_SOLANA
      - USDC_BASE
      - USDT_ETHEREUM
      - USDT_SOLANA
      - CASH_SOLANA
    CreateInvoiceRequest:
      properties:
        customer_id:
          type: string
          format: uuid
          title: Customer Id
        line_items:
          items:
            $ref: '#/components/schemas/InvoiceLineRequest'
          type: array
          title: Line Items
        invoice_date:
          $ref: '#/components/schemas/DateString'
          description: Date the invoice is scheduled to be sent.
        due_date:
          $ref: '#/components/schemas/DateString'
          description: Date the invoice is due.
        payment_method_types:
          items:
            $ref: '#/components/schemas/PaymentMethodType'
          type: array
          title: Payment Method Types
          description: Payment method types to enable on the invoice. `BANK_TRANSFER` is always enabled.
        recurring_schedule:
          anyOf:
          - type: string
            maxLength: 120
            minLength: 1
            description: 'RFC 5545 RRULE string. Required: DTSTART, RRULE. Allowed frequencies: WEEKLY, MONTHLY.'
          - type: 'null'
          title: Recurring Schedule
          description: Recurring schedule for the invoice as an RFC 2445 RRULE string. A generator is available at https://icalendar.org/rrule-tool.html.
        send_email_on_creation:
          type: boolean
          title: Send Email On Creation
          description: If true, sends an email to the customer (and any additional recipients) on the `invoice_date`.
        additional_recipient_emails:
          anyOf:
          - items:
              type: string
              format: email
            type: array
            maxItems: 20
          - type: 'null'
          title: Additional Recipient Emails
          description: Additional recipient emails to send the invoice and any reminders to.
        note:
          anyOf:
          - type: string
            maxLength: 300
          - type: 'null'
          title: Note
          description: Note to include on the invoice.
        name:
          anyOf:
          - type: string
            maxLength: 32
          - type: 'null'
          title: Name
          description: Name of the invoice.
        collection_account_id:
          type: string
          format: uuid
          title: Collection Account Id
          description: The collection account ID where payments on this invoice will be deposited.
        show_contact_address:
          type: boolean
          title: Show Contact Address
          description: Whether to show the customer's address on the invoice, if it exists.
          default: false
      type: object
      required:
      - customer_id
      - line_items
      - invoice_date
      - due_date
      - payment_method_types
      - send_email_on_creation
      - collection_account_id
      title: CreateInvoiceRequest
  parameters:
    EntityIdHeader:
      name: x-entity-id
      in: header
      required: false
      schema:
        type: string
        format: uuid
      description: Optional `entity_id` to scope requests to a specific entity.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your Meow API key, sent in the `x-api-key` header for authentication.
      x-scopes:
      - accounts:read
      - accounts:write
      - accounts:payment-networks
      - accounts:transactions
      - accounts:balances
      - accounts:statements
      - accounts:tax-documents
      - entity:create
      - transfers:crypto:write
      - transfers:usdc:write
      - transfers:ach:write
      - transfers:wire:write
      - transfers:book:write
      - contacts:read
      - contacts:write
      - billing:products:read
      - billing:products:write
      - billing:customers:read
      - billing:customers:write
      - billing:invoices:read
      - billing:invoices:write
      - billing:accounts:read
      - billpay:read
      - billpay:write
      - onboarding:read
      - onboarding:write
      - cards:read
      - cards:write
      - webhooks:read
      - webhooks:write
      - partner:onboarding:read
      - partner:onboarding:write
      - partner:webhooks:read
      - partner:webhooks:write
      - simulations:write
      - banking:limits:read
      - banking:limits:write
x-tagGroups:
- name: Core API
  tags:
  - API Keys
  - Contacts
  - Accounts
  - Transactions
  - Balances
  - Payment Networks
  - Transfers
  - Routing Numbers
  - Cards
  - Tax Forms
  - Webhooks
- name: Bill Pay
  tags:
  - Bills
- name: Billing
  tags:
  - Products
  - Customers
  - Invoices
  - Line Items
  - Payment Methods
  - Collection Accounts
- name: Partner Onboarding
  tags:
  - Partner Onboarding
- name: Sandbox
  tags:
  - Simulations