Skip to main content
New Feature
Transfers: pay a contact in their own currency
  • POST /accounts/{account_id}/international sends a payment in the recipient’s local currency, converting from US dollars at the rate quoted when you call. Fix either leg: pass recipient_amount to send an exact amount in their currency, or source_amount to spend an exact number of dollars. Reference, Guide.
  • POST /accounts/{account_id}/international/quote prices a payment without sending it, returning the rate, the fee and the total_debit so you can show them before committing. It reserves nothing, and the payment is priced again when you send, so figures can move with the rate. Reference.
  • GET /contacts/international-requirements reports the fields a destination needs, given a currency and bank country. Destinations differ: some route on an IBAN, others on a domestic routing code, and some want the recipient’s address. Check supported first, since not every currency reaches every country. Reference.
  • POST /contacts accepts international alongside counterparty and crypto_address, carrying the bank details those requirements ask for. Provide exactly one of the three. Reference.
  • To send US dollars instead, including to a bank outside the US, keep using POST /accounts/{account_id}/wire.
Accounts: convert incoming crypto to USD automatically
  • POST /accounts/{account_id}/liquidation-addresses creates a blockchain address that converts cryptocurrency sent to it into USD and deposits it into the account you name. Repeating the same account, network and currency returns the address that already exists rather than creating another. Reference.
New FeatureImprovement
Onboarding: see which agreements an application still owes
  • GET /entities/{entity_id} now returns consent, carrying status, consented_items, remaining_items, viewed_at and completed_at. Poll it to see whether the primary representative has finished the agreements behind consent_url. Reference.
  • next_step.step reports accept_terms after you submit while agreements are outstanding, and lists the outstanding ones in next_step.missing. It moves on to monitor_review once they are all accepted.
  • Previously a submitted application reported monitor_review with nothing missing even when every agreement was still unaccepted, so there was no way to tell from the API that it was waiting on the representative.
Transfers: send USDC over XDC
  • BlockchainNetwork accepts XDC, and PaymentMethodType accepts USDC_XDC.
Contacts: a contact returns its address
  • address on a contact now returns the full address object rather than being omitted.
New FeatureImprovement
Transfers: read incoming crypto deposits, and tell the two directions apart
  • GET /accounts/{account_id}/crypto/{transaction_id} now returns incoming deposits as well as outgoing transfers. An inbound deposit carries source_address, the on-chain address the funds came from, and source_tx_hash, the deposit’s on-chain hash. Use them to match a deposit to whoever sent it. Reference.
  • source_address is null when the sender is not known to us, so treat a null as “unattributed” rather than assuming an address is always present.
  • Pass the transaction ID that List Transactions reports. The same ID comes back on the response, so you can fetch the transfer again with it. Reference.
  • Every transfer response now carries direction, either inbound or outbound. ACH and wire have returned both directions for a while, and the field says which one you are looking at instead of leaving you to infer it. ACH, Wire.
  • On an inbound wire, counterparty_account_number, counterparty_routing_number and counterparty_bank_name are now null when the bank did not report them, where they previously came back as empty strings. purpose is null inbound, since a purpose is something you state when sending.
Idempotency: crypto and USDC transfers accept the key
  • POST /accounts/{account_id}/crypto and POST /accounts/{account_id}/usdc accept the Idempotency-Key header, so a retried send cannot create a second transfer. It is optional for now and will become required. Reference.
New Feature
Accounts: correlate a new account with your own reference
  • POST /accounts accepts an optional reference_id, your own identifier of up to 255 characters. It comes back on the create response, on GET /accounts and GET /accounts/{account_id} as referenceId, and in the account.created / account.updated webhooks. Reference.
  • This is how you match an account to the request that opened it. It matters most for products that open in the background: that response carries no account_id, so the reference is the only thing tying the later account.created event to your call. Catalog.
  • It is a label, not an idempotency key, so reuse it freely. Use the Idempotency-Key header to make a retry safe.
New FeatureImprovementDeprecated
Idempotency: send the key in the Idempotency-Key header
  • Every write that accepts an idempotency key now takes it in the Idempotency-Key header: 1-50 printable ASCII characters, no spaces. Reusing a key is rejected with a 400.
  • POST /accounts now requires the header. Opening an additional account was previously unguarded, so a retried request could open a second account. Reference.
  • Transfers and Bill Pay accept the header today; their idempotency_key body field is deprecated but still works. When you send both, they must match. Transfers, Bill Pay.
  • Webhook writes already required the header, and the guide’s examples now show it. Guide.
Webhooks: account lifecycle events
  • account.created fires when a Meow deposit account is live and addressable on GET /accounts. For Treasury Prime that is when the bank confirms the application, later than the POST /accounts response, so you can subscribe instead of polling. account.updated fires on status changes, including closes. Catalog.
New FeatureImprovement
Onboarding: hosted consent, additional products, and non-US businesses
  • Submitting an application now returns a consent_url, a hosted page where the primary representative reviews and accepts the required agreements, disclosures, and attestations in their browser, no login needed. The same link is returned on GET /entities/{entity_id} after submission. The attestation request field is retired; it is ignored if you still send it. Guide.
  • product_features on POST /entities/{entity_id}/submit requests additional products alongside the checking account. stablecoins requests USDC access, enabled once the representative accepts the terms and the application is approved.
  • GET /entities/{entity_id}/representatives lists every representative with their KYC status. Reference.
  • Non-US businesses can now complete onboarding through the API. Guide.
Webhooks: global subscriptions. Subscribe once with a global API key and receive events for every entity your user administers, including entities added later. Each delivery carries entity_id for routing. Reference.Accounts: PATCH /accounts/{account_id} sets a custom account nickname (2-25 characters) shown in the dashboard. Reference.
New Feature
Webhooks: delivery sequence numbers and partner webhooks
  • Out-of-order protection: every resource event now carries a per-resource sequence. Keep the highest you’ve applied per resource and drop anything at or below it. Monotonic, not gapless. How it works.
  • Richer delivery history: GET /webhooks/deliveries rows now include event_type, resource_object, resource_id, and sequence, so you can find and redrive a failure without opening the event.
  • Partner Webhooks: subscribe to onboarding application.* events with a partner API key. Same delivery machinery, scopes partner:webhooks:read / partner:webhooks:write. Reference.
  • Stricter allowlists: event_types now rejects events a subscription can’t receive: webhook.test, message.attempt.exhausted, and (on entity subscriptions) application.* return a 400.
  • Deleting a subscription retains its delivery history and frees the URL for reuse.
New Feature
Webhooks: subscribe to events and inspect deliveries
  • POST /webhooks/subscriptions to subscribe. Choose payload_mode: snapshot (full resource) or thin ({id, object}).
  • 13 events across ACH, wire, inbound transactions, check deposits, and global accounts. Dispatch on data.status.
  • Signed with Standard Webhooks headers.
  • GET /webhooks/deliveries and /attempts for history; POST /webhooks/deliveries/{id}/redrive to replay one.
  • New scopes: webhooks:read, webhooks:write.
  • Guide · event catalog.
New Feature
Cards: PATCH /cards/{card_id} to freeze, unfreeze, or update spend limits on a cardTax Forms: GET /tax-forms and GET /tax-forms/{taxFormId} to retrieve IRS 1099 tax formsInstant payments: FedNow supported as a payment rail
New Feature
Partner Onboarding API: Submit and track partner onboarding applications
  • POST /partner-onboarding/applications - Create an application
  • GET /partner-onboarding/applications - List applications
  • GET /partner-onboarding/applications/{application_id} - Get application details
  • POST /partner-onboarding/applications/{application_id}/upload-url - Get a presigned upload URL
  • POST /partner-onboarding/applications/{application_id}/confirm-document - Confirm a document upload
New Feature
Approval Workflow: Programmatic transfers now flow through configurable approval policies
  • Pending-approval state surfaced to API callers
  • Mutating endpoints honor entity-level approval requirements
New FeatureImprovement
Payment Networks: GET /accounts/{account_id}/payment-networks now returns deposit instruction fields for each supported methodAudit Logging: Structured audit logs added to all mutating Meow API endpoints
New Feature
Wallet Transfers: The Meow API now supports transfers from Global Account wallets
  • crypto_id accepted on wallet crypto transfers; currency is derived from the destination
Improvement
Invoices: Added lifecycle tracking fields (e.g., paid_at, voided_at, sent_at) to Invoice responses
New Feature
MCP Server: New MCP server for the Meow API with OAuth
New FeatureDeprecated
Crypto Transaction API: New endpoint for crypto transfers
  • GET /accounts/{account_id}/crypto/{transaction_id} - Get crypto transaction details
  • POST /accounts/{account_id}/crypto - Create crypto transaction (replaces legacy USDC endpoint)
  • New API scope: transfers:crypto:write
Check Deposit API: New endpoint for check deposit details
  • GET /accounts/{account_id}/check-deposits/{transaction_id} - Get check deposit details
Deprecated
  • POST /accounts/{account_id}/usdc - Use POST /accounts/{account_id}/crypto instead
  • GET /accounts/{account_id}/transactions/{transaction_id} - Use GET /accounts/{account_id}/crypto/{transaction_id} instead
New Feature
Treasury Products: Commercial paper and liquid treasuries holdings exposed in the Meow API
New Feature
Transfer Lookup: ACH and wire transfer GET endpoints now resolve Global Account-originated transfers
Improvement
  • Clarified that wire and ACH transfer GET endpoints return details for both incoming and outgoing transfers
  • Updated Transfers tag description to include all transfer types
New Feature
Billpay API: Bill management endpoints
  • GET /bills - List all bills with optional status filtering and pagination
  • GET /bills/{bill_id} - Get bill details including line items
  • New API scope: billpay:read
Deprecated
Crypto Fees: Removed total_fee_percentage from crypto transaction API responses (use the per-fee breakdown instead)
New FeatureImprovement
Scheduled ACH Transfers: Create and manage scheduled ACH transfers
  • POST /accounts/{account_id}/ach/scheduled - Create a scheduled ACH transfer
  • GET /accounts/{account_id}/ach/scheduled - List scheduled ACH transfers
  • transferMethod query parameter on transaction list endpoint to filter by transfer method (e.g., INCOMING_ACH, OUTGOING_WIRE, CARD)
Improvement
  • Updated first_occurrence field in recurring payment schemas to use Timestamp reference type
New Feature
ACH Transfer Details: Retrieve specific ACH transfer information
  • GET /accounts/{account_id}/achs/{ach_transfer_id} - Get ACH transfer details
  • RETURNED status added to TransferStatus enum
  • CASH_SOLANA added to PaymentMethodType enum
  • internal_note field added to wire transfer response
New Feature
Contacts API: Full CRUD operations for managing payment contacts
  • POST /contacts - Create a new contact with ACH/wire/check or crypto address details
  • GET /contacts - List all contacts with optional nickname filtering
  • GET /contacts/{contact_id} - Get contact details
  • PATCH /contacts/{contact_id} - Update contact information and add payment details
  • DELETE /contacts/{contact_id} - Delete a contact
  • New API scopes: contacts:read and contacts:write
Billing API: Complete invoice management system
  • Products: GET /billing/products, POST /billing/products, GET /billing/products/{product_id}
  • Customers: GET /billing/customers, POST /billing/customers, GET /billing/customers/{customer_id}
  • Invoices: GET /billing/invoices, POST /billing/invoices, GET /billing/invoices/{invoice_id}, GET /billing/invoices/{invoice_id}/pdf
  • Line Items: GET /billing/invoices/{invoice_id}/line-items, GET /billing/invoices/{invoice_id}/line-items/{line_item_id}
  • Payment Config: GET /billing/payment-method-types, GET /billing/accounts
  • New API scopes: billing:products:read/write, billing:customers:read/write, billing:invoices:read/write, billing:accounts:read
  • Recurring invoice support with RFC 2445 RRULE scheduling
  • Invoice email notifications with custom recipient lists
Transfer APIs: Comprehensive transfer capabilities
  • POST /accounts/{account_id}/book - Create internal book transfers between accounts
  • POST /accounts/{account_id}/ach - Create ACH transfers to external counterparties
  • POST /accounts/{account_id}/wire - Create wire transfers to external counterparties
  • GET /accounts/{account_id}/wires/{wire_transfer_id} - Get wire transfer details
  • New API scopes: transfers:book:write, transfers:ach:write, transfers:wire:write
Payment Networks API:
  • GET /accounts/{account_id}/payment-networks - List payment networks supported by an account
Routing Number Validation:
  • GET /routing-numbers/{routing_number} - Validate routing numbers and get bank information
API Keys Management:
  • GET /api-keys/accessible-entities - List all entities accessible by the current API key
  • GET /api-keys/current - Get metadata about the current API key
Multi-entity Support:
  • Optional x-entity-id header to scope API requests to specific entities
New Feature
Combined Read and Write APIs into a single unified Meow API.Accounts API: Comprehensive financial data access
  • GET /accounts - List bank accounts
  • GET /accounts/{account_id} - Get account details
  • GET /accounts/{account_id}/transactions - List transactions with time filtering and pagination
  • GET /accounts/{account_id}/balances - List account balances with time filtering
  • New API scopes: accounts:read, accounts:transactions, accounts:balances
USDC Transaction Support:
  • POST /accounts/{account_id}/usdc - Create USDC transactions
  • GET /accounts/{account_id}/transactions/{transaction_id} - Get USDC transaction details
  • New API scope: transfers:usdc:write
  • Support for multiple blockchain networks: Ethereum, Solana, Base
Health Check:
  • GET /health - API service health status endpoint
Authentication & Security:
  • API key authentication via x-api-key header
  • Standardized error handling with detailed validation responses
  • Scoped API permissions for granular access control