Meow Transfers API
Initiate ACH, wire, book, and crypto transfers, and retrieve transfer details.
Initiate ACH, wire, book, and crypto transfers, and retrieve transfer details.
openapi: 3.1.0
info:
title: Meow Accounts Transfers 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: Transfers
description: Initiate ACH, wire, book, and crypto transfers, and retrieve transfer details.
paths:
/accounts/{account_id}/usdc:
post:
tags:
- Transfers
summary: Create USDC Transaction (Legacy)
description: Legacy endpoint for USDC transactions. Requires the `transfers:usdc:write` scope. For new integrations, use `POST /accounts/{account_id}/crypto` with `currency` in the request body.
operationId: create_usdc_transaction_accounts__account_id__usdc_post
deprecated: true
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUSDCTransactionRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUSDCTransactionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:usdc:write
/accounts/{account_id}/crypto:
post:
tags:
- Transfers
summary: Create Crypto Transaction
description: 'Creates a new crypto transaction from a specified account. The currency and network are determined automatically from the destination''s payment method. Provide exactly one of `static_memo_id` or `crypto_id` to identify the destination:
- **`static_memo_id`**: Use the ID from the contact''s `payment_methods.static_memos` array. Required for traditional banking accounts; also supported for wallet accounts.
- **`crypto_id`**: Use the ID from the contact''s `payment_methods.crypto` array. Only supported for wallet accounts.
Supported currencies: `usdc`, `usdt`, `pyusd`, `cash`, `usdg`.
Requires the `transfers:crypto:write` scope. Use this endpoint for all crypto transfers. The legacy `/usdc` endpoint is deprecated.'
operationId: create_crypto_transaction_accounts__account_id__crypto_post
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCryptoTransactionRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCryptoTransactionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:crypto:write
/accounts/{account_id}/book:
post:
tags:
- Transfers
summary: Create Book Transfer
description: Creates a new internal book transfer between bank accounts.
operationId: create_book_transfer_accounts__account_id__book_post
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBookTransferRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBookTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:book:write
/accounts/{account_id}/ach:
post:
tags:
- Transfers
summary: Create ACH Transfer
description: Creates a new ACH transfer to an external counterparty.
operationId: create_ach_transfer_accounts__account_id__ach_post
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAchTransferRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAchTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:ach:write
/accounts/{account_id}/ach/scheduled:
post:
tags:
- Transfers
summary: Create Scheduled ACH Transfer
description: Creates a new scheduled ACH transfer to an external counterparty.
operationId: create_scheduled_ach_transfer_accounts__account_id__ach_scheduled_post
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScheduledAchTransferRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScheduledAchTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:ach:write
get:
tags:
- Transfers
summary: List Scheduled ACH Transfers
description: Returns a list of scheduled ACH transfers for a specified account.
operationId: list_scheduled_ach_transfers_accounts__account_id__ach_scheduled_get
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- name: limit
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
default: 10
title: Limit
- name: offset
in: query
required: false
schema:
anyOf:
- type: string
maxLength: 100
- type: 'null'
description: Opaque offset identifier for pagination. Use the nextOffset from a previous response.
title: Offset
description: Opaque offset identifier for pagination. Use the nextOffset from a previous response.
- $ref: '#/components/parameters/EntityIdHeader'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledAchTransfers'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- accounts:transactions
/accounts/{account_id}/wire:
post:
tags:
- Transfers
summary: Create Wire Transfer
description: Creates a new wire transfer to an external counterparty.
operationId: create_wire_transfer_accounts__account_id__wire_post
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- $ref: '#/components/parameters/EntityIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWireTransferRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWireTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- transfers:wire:write
/accounts/{account_id}/transactions/{transaction_id}:
get:
tags:
- Transfers
summary: Get USDC Transaction (Legacy)
description: Legacy endpoint for retrieving USDC transaction details. For new integrations, use `GET /accounts/{account_id}/crypto/{transaction_id}`.
operationId: get_usdc_transaction_accounts__account_id__transactions__transaction_id__get
deprecated: true
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- name: transaction_id
in: path
required: true
schema:
type: string
description: The ID of the USDC transaction.
title: Transaction Id
description: The ID of the USDC transaction.
- $ref: '#/components/parameters/EntityIdHeader'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GetUSDCTransactionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- accounts:transactions
/accounts/{account_id}/crypto/{transaction_id}:
get:
tags:
- Transfers
summary: Get Crypto Transaction
description: Returns details about a crypto transaction by transaction ID, including the status of an outgoing crypto transfer after it has been initiated.
operationId: get_crypto_transaction_accounts__account_id__crypto__transaction_id__get
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- name: transaction_id
in: path
required: true
schema:
type: string
description: The ID of the crypto transaction.
title: Transaction Id
description: The ID of the crypto transaction.
- $ref: '#/components/parameters/EntityIdHeader'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GetCryptoTransactionResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- accounts:transactions
/accounts/{account_id}/wires/{wire_transfer_id}:
get:
tags:
- Transfers
summary: Get Wire Transfer
description: Returns details about a wire transfer (incoming or outgoing) for the specified account by wire transfer ID, including the status of an outgoing wire after it has been initiated.
operationId: get_wire_transfer_accounts__account_id__wires__wire_transfer_id__get
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- name: wire_transfer_id
in: path
required: true
schema:
type: string
description: The transaction group ID for the wire transfer.
title: Wire Transfer Id
description: The transaction group ID for the wire transfer.
- $ref: '#/components/parameters/EntityIdHeader'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/WireTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- accounts:transactions
/accounts/{account_id}/achs/{ach_transfer_id}:
get:
tags:
- Transfers
summary: Get ACH Transfer
description: Returns details about an ACH transfer (incoming or outgoing) for the specified account by ACH transfer ID, including the status of an outgoing ACH transfer after it has been initiated.
operationId: get_ach_transfer_accounts__account_id__achs__ach_transfer_id__get
parameters:
- name: account_id
in: path
required: true
schema:
type: string
description: The ID of the account.
title: Account Id
description: The ID of the account.
- name: ach_transfer_id
in: path
required: true
schema:
type: string
description: The transaction group ID for the ACH transfer (e.g. `withdrawal_ach_...`), or the ACH ID returned when you created the transfer (e.g. `ach_...`).
title: Ach Transfer Id
description: The transaction group ID for the ACH transfer (e.g. `withdrawal_ach_...`), or the ACH ID returned when you created the transfer (e.g. `ach_...`).
- $ref: '#/components/parameters/EntityIdHeader'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AchTransferResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- apiKeyAuth:
- accounts:transactions
components:
schemas:
CreateWireTransferRequest:
properties:
email:
anyOf:
- type: string
format: email
- type: 'null'
title: Email
description: Email address to notify when the operation completes
amount:
anyOf:
- type: number
maximum: 1000000000.0
minimum: 1.0
- type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
title: Amount
counterparty_id:
type: string
format: uuid
title: Counterparty Id
instructions:
anyOf:
- type: string
maxLength: 140
minLength: 1
- type: 'null'
title: Instructions
purpose:
anyOf:
- type: string
minLength: 1
- type: 'null'
title: Purpose
internal_note:
anyOf:
- type: string
maxLength: 255
minLength: 5
- type: 'null'
title: Internal Note
idempotency_key:
type: string
maxLength: 50
minLength: 1
title: Idempotency Key
type: object
required:
- amount
- counterparty_id
- idempotency_key
title: CreateWireTransferRequest
CreateUSDCTransactionResponse:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
status:
$ref: '#/components/schemas/TransferStatus'
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
internal_note:
anyOf:
- type: string
- type: 'null'
title: Internal Note
created_time:
type: integer
title: Created Time
destination_address:
type: string
title: Destination Address
destination_payment_rail:
$ref: '#/components/schemas/ExtBridgePaymentRail'
destination_address_nickname:
anyOf:
- type: string
- type: 'null'
title: Destination Address Nickname
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- status
- amount
- created_time
- destination_address
- destination_payment_rail
- approval_id
title: CreateUSDCTransactionResponse
CreateAchTransferRequest:
properties:
amount:
anyOf:
- type: number
maximum: 1000000.0
minimum: 0.01
- type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d{0,2}0*$
title: Amount
counterparty_id:
type: string
format: uuid
title: Counterparty Id
description:
anyOf:
- type: string
maxLength: 10
minLength: 1
- type: 'null'
title: Description
internal_note:
anyOf:
- type: string
maxLength: 255
minLength: 5
- type: 'null'
title: Internal Note
email:
anyOf:
- type: string
format: email
- type: 'null'
title: Email
idempotency_key:
type: string
maxLength: 50
minLength: 1
title: Idempotency Key
type: object
required:
- amount
- counterparty_id
- idempotency_key
title: CreateAchTransferRequest
GetUSDCTransactionResponse:
properties:
id:
type: string
title: Id
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
destination_address:
type: string
title: Destination Address
destination_payment_rail:
$ref: '#/components/schemas/ExtBridgePaymentRail'
destination_tx_hash:
anyOf:
- type: string
- type: 'null'
title: Destination Tx Hash
destination_address_nickname:
anyOf:
- type: string
- type: 'null'
title: Destination Address Nickname
type: object
required:
- id
- amount
- destination_address
- destination_payment_rail
title: GetUSDCTransactionResponse
CreateCryptoTransactionResponse:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
status:
$ref: '#/components/schemas/TransferStatus'
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
internal_note:
anyOf:
- type: string
- type: 'null'
title: Internal Note
created_time:
type: integer
title: Created Time
destination_address:
type: string
title: Destination Address
destination_payment_rail:
$ref: '#/components/schemas/ExtBridgePaymentRail'
destination_address_nickname:
anyOf:
- type: string
- type: 'null'
title: Destination Address Nickname
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- status
- amount
- created_time
- destination_address
- destination_payment_rail
- approval_id
title: CreateCryptoTransactionResponse
CreateBookTransferResponse:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
description:
anyOf:
- type: string
- type: 'null'
title: Description
created_time:
type: integer
title: Created Time
transfer_type:
$ref: '#/components/schemas/TransferMethod'
to_account_id:
type: string
format: uuid
title: To Account Id
to_account_name:
type: string
title: To Account Name
to_account_account_number_masked:
type: string
title: To Account Account Number Masked
to_entity_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: To Entity Id
to_entity_name:
anyOf:
- type: string
- type: 'null'
title: To Entity Name
status:
anyOf:
- $ref: '#/components/schemas/TransferStatus'
- type: 'null'
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- amount
- description
- created_time
- transfer_type
- to_account_id
- to_account_name
- to_account_account_number_masked
- approval_id
title: CreateBookTransferResponse
GetCryptoTransactionResponse:
properties:
id:
type: string
title: Id
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
destination_address:
type: string
title: Destination Address
destination_payment_rail:
$ref: '#/components/schemas/ExtBridgePaymentRail'
destination_tx_hash:
anyOf:
- type: string
- type: 'null'
title: Destination Tx Hash
destination_address_nickname:
anyOf:
- type: string
- type: 'null'
title: Destination Address Nickname
type: object
required:
- id
- amount
- destination_address
- destination_payment_rail
title: GetCryptoTransactionResponse
CreateWireTransferResponse:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
status:
$ref: '#/components/schemas/TransferStatus'
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
instructions:
anyOf:
- type: string
- type: 'null'
title: Instructions
counterparty_id:
type: string
format: uuid
title: Counterparty Id
created_time:
type: integer
title: Created Time
transfer_type:
$ref: '#/components/schemas/TransferMethod'
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- status
- amount
- instructions
- counterparty_id
- created_time
- transfer_type
- approval_id
title: CreateWireTransferResponse
CreateScheduledAchTransferResponse:
properties:
id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Id
status:
$ref: '#/components/schemas/TransferStatus'
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
description:
anyOf:
- type: string
- type: 'null'
title: Description
counterparty_id:
type: string
format: uuid
title: Counterparty Id
rrule:
type: string
maxLength: 120
minLength: 1
title: Rrule
description: 'RFC 5545 RRULE string. Required: DTSTART, RRULE. Allowed frequencies: WEEKLY, MONTHLY.'
first_occurrence:
anyOf:
- $ref: '#/components/schemas/Timestamp'
- type: 'null'
transfer_type:
$ref: '#/components/schemas/TransferMethod'
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- status
- amount
- description
- counterparty_id
- rrule
- transfer_type
- approval_id
title: CreateScheduledAchTransferResponse
CreateAchTransferResponse:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
status:
$ref: '#/components/schemas/TransferStatus'
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
description:
anyOf:
- type: string
- type: 'null'
title: Description
counterparty_id:
type: string
format: uuid
title: Counterparty Id
created_time:
type: integer
title: Created Time
transfer_type:
$ref: '#/components/schemas/TransferMethod'
approval_id:
type: string
format: uuid
title: Approval Id
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- status
- amount
- description
- counterparty_id
- created_time
- transfer_type
- approval_id
title: CreateAchTransferResponse
WireTransferResponse:
properties:
id:
type: string
title: Id
description: The unique identifier for the wire transfer.
amount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
description: The amount of the transfer.
status:
$ref: '#/components/schemas/TransferStatus'
description: The current status of the transfer.
instructions:
anyOf:
- type: string
- type: 'null'
title: Instructions
description: Instructions, or OBI (Originator to Beneficiary Information).
counterparty_id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Counterparty Id
description: The unique identifier for the counterparty.
counterparty_name:
type: string
title: Counterparty Name
description: The name of the counterparty.
counterparty_account_number:
type: string
title: Counterparty Account Number
description: The account number of the counterparty.
counterparty_routing_number:
type: string
title: Counterparty Routing Number
description: The routing number of the counterparty.
counterparty_bank_name:
type: string
title: Counterparty Bank Name
description: The name of the counterparty's bank.
created_at:
$ref: '#/components/schemas/Timestamp'
description: The time the transfer was created.
updated_at:
$ref: '#/components/schemas/Timestamp'
description: The time the transfer was last updated.
error:
anyOf:
- type: string
- type: 'null'
title: Error
description: Error message if the transfer failed.
imad:
anyOf:
- type: string
- type: 'null'
title: Imad
description: IMAD (Input Message Accountability Data) for the wire.
purpose:
anyOf:
- type: string
- type: 'null'
title: Purpose
description: The purpose of the wire transfer.
internal_note:
anyOf:
- type: string
- type: 'null'
title: Internal Note
description: An internal note associated with the transfer.
type: object
required:
- id
- amount
- status
- counterparty_name
- counterparty_account_number
- counterparty_routing_nu
# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/meow/refs/heads/main/openapi/meow-transfers-api-openapi.yml