New Feature
Transfers: pay a contact in their own currency
POST /accounts/{account_id}/internationalsends a payment in the recipient’s local currency, converting from US dollars at the rate quoted when you call. Fix either leg: passrecipient_amountto send an exact amount in their currency, orsource_amountto spend an exact number of dollars. Reference, Guide.POST /accounts/{account_id}/international/quoteprices a payment without sending it, returning therate, thefeeand thetotal_debitso 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-requirementsreports 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. Checksupportedfirst, since not every currency reaches every country. Reference.POST /contactsacceptsinternationalalongsidecounterpartyandcrypto_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.
POST /accounts/{account_id}/liquidation-addressescreates 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 returnsconsent, carryingstatus,consented_items,remaining_items,viewed_atandcompleted_at. Poll it to see whether the primary representative has finished the agreements behindconsent_url. Reference.next_step.stepreportsaccept_termsafter you submit while agreements are outstanding, and lists the outstanding ones innext_step.missing. It moves on tomonitor_reviewonce they are all accepted.- Previously a submitted application reported
monitor_reviewwith 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.
BlockchainNetworkacceptsXDC, andPaymentMethodTypeacceptsUSDC_XDC.
addresson 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 carriessource_address, the on-chain address the funds came from, andsource_tx_hash, the deposit’s on-chain hash. Use them to match a deposit to whoever sent it. Reference.source_addressis 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, eitherinboundoroutbound. 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_numberandcounterparty_bank_nameare now null when the bank did not report them, where they previously came back as empty strings.purposeis null inbound, since a purpose is something you state when sending.
POST /accounts/{account_id}/cryptoandPOST /accounts/{account_id}/usdcaccept theIdempotency-Keyheader, 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 /accountsaccepts an optionalreference_id, your own identifier of up to 255 characters. It comes back on the create response, onGET /accountsandGET /accounts/{account_id}asreferenceId, and in theaccount.created/account.updatedwebhooks. 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 lateraccount.createdevent to your call. Catalog. - It is a label, not an idempotency key, so reuse it freely. Use the
Idempotency-Keyheader 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-Keyheader: 1-50 printable ASCII characters, no spaces. Reusing a key is rejected with a400. POST /accountsnow 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_keybody 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.
account.createdfires when a Meow deposit account is live and addressable onGET /accounts. For Treasury Prime that is when the bank confirms the application, later than thePOST /accountsresponse, so you can subscribe instead of polling.account.updatedfires 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 onGET /entities/{entity_id}after submission. Theattestationrequest field is retired; it is ignored if you still send it. Guide. product_featuresonPOST /entities/{entity_id}/submitrequests additional products alongside the checking account.stablecoinsrequests USDC access, enabled once the representative accepts the terms and the application is approved.GET /entities/{entity_id}/representativeslists every representative with their KYC status. Reference.- Non-US businesses can now complete onboarding through the API. Guide.
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/deliveriesrows now includeevent_type,resource_object,resource_id, andsequence, 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, scopespartner:webhooks:read/partner:webhooks:write. Reference. - Stricter allowlists:
event_typesnow 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/subscriptionsto subscribe. Choosepayload_mode:snapshot(full resource) orthin({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/deliveriesand/attemptsfor history;POST /webhooks/deliveries/{id}/redriveto 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 railNew Feature
Partner Onboarding API: Submit and track partner onboarding applications
POST /partner-onboarding/applications- Create an applicationGET /partner-onboarding/applications- List applicationsGET /partner-onboarding/applications/{application_id}- Get application detailsPOST /partner-onboarding/applications/{application_id}/upload-url- Get a presigned upload URLPOST /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 endpointsNew Feature
Wallet Transfers: The Meow API now supports transfers from Global Account wallets
crypto_idaccepted 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 responsesNew 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 detailsPOST /accounts/{account_id}/crypto- Create crypto transaction (replaces legacy USDC endpoint)- New API scope:
transfers:crypto:write
GET /accounts/{account_id}/check-deposits/{transaction_id}- Get check deposit details
POST /accounts/{account_id}/usdc- UsePOST /accounts/{account_id}/cryptoinsteadGET /accounts/{account_id}/transactions/{transaction_id}- UseGET /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 paginationGET /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 transferGET /accounts/{account_id}/ach/scheduled- List scheduled ACH transferstransferMethodquery parameter on transaction list endpoint to filter by transfer method (e.g., INCOMING_ACH, OUTGOING_WIRE, CARD)
- Updated
first_occurrencefield in recurring payment schemas to useTimestampreference type
New Feature
ACH Transfer Details: Retrieve specific ACH transfer information
GET /accounts/{account_id}/achs/{ach_transfer_id}- Get ACH transfer detailsRETURNEDstatus added toTransferStatusenumCASH_SOLANAadded toPaymentMethodTypeenuminternal_notefield 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 detailsGET /contacts- List all contacts with optional nickname filteringGET /contacts/{contact_id}- Get contact detailsPATCH /contacts/{contact_id}- Update contact information and add payment detailsDELETE /contacts/{contact_id}- Delete a contact- New API scopes:
contacts:readandcontacts:write
- 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
POST /accounts/{account_id}/book- Create internal book transfers between accountsPOST /accounts/{account_id}/ach- Create ACH transfers to external counterpartiesPOST /accounts/{account_id}/wire- Create wire transfers to external counterpartiesGET /accounts/{account_id}/wires/{wire_transfer_id}- Get wire transfer details- New API scopes:
transfers:book:write,transfers:ach:write,transfers:wire:write
GET /accounts/{account_id}/payment-networks- List payment networks supported by an account
GET /routing-numbers/{routing_number}- Validate routing numbers and get bank information
GET /api-keys/accessible-entities- List all entities accessible by the current API keyGET /api-keys/current- Get metadata about the current API key
- Optional
x-entity-idheader 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 accountsGET /accounts/{account_id}- Get account detailsGET /accounts/{account_id}/transactions- List transactions with time filtering and paginationGET /accounts/{account_id}/balances- List account balances with time filtering- New API scopes:
accounts:read,accounts:transactions,accounts:balances
POST /accounts/{account_id}/usdc- Create USDC transactionsGET /accounts/{account_id}/transactions/{transaction_id}- Get USDC transaction details- New API scope:
transfers:usdc:write - Support for multiple blockchain networks: Ethereum, Solana, Base
GET /health- API service health status endpoint
- API key authentication via
x-api-keyheader - Standardized error handling with detailed validation responses
- Scoped API permissions for granular access control