Skip to main content
POST
Create Wire Transfer

Authorizations

x-api-key
string
header
required

Your Meow API key, sent in the x-api-key header for authentication.

Headers

Idempotency-Key
string | null

A unique key you generate (1-50 printable ASCII characters, no spaces) so retrying this request never creates a duplicate. Reusing a key is rejected.

Required string length: 1 - 50
Pattern: ^[!-~]+$
x-entity-id
string<uuid>

Optional entity_id to scope requests to a specific entity.

Path Parameters

account_id
string
required

The ID of the account.

Body

application/json
amount
required

Amount to send, in USD.

Required range: 1 <= x <= 1000000000
counterparty_id
string<uuid>
required

Contact to pay. Use list_contacts to find one.

email
string<email> | null

Email address to notify when the operation completes

instructions
string | null

Wire instructions sent to the receiving bank.

Required string length: 1 - 140
purpose
string | null

Purpose of payment. Required by some receiving banks. Your account's bank sets the maximum length: 16 characters on most accounts, 50 on some. A longer purpose is rejected with a message giving your limit.

Minimum string length: 1
internal_note
string | null

Private note, visible only inside Meow.

Required string length: 5 - 255
metadata
Metadata · object | null

Your own key/value data to attach to this object. Meow stores it unchanged and returns it on every read of the object and on every webhook event about it, so you can match it back to your own records. Up to 20 pairs; keys up to 40 characters, values up to 200, and 5 KB serialized as JSON in total — note that a non-ASCII character counts as 6 bytes and an emoji as 12. Values must be strings. Meow never interprets it — do not put anything here that needs to stay private.

idempotency_key
string | null
deprecated

Deprecated: send the key in the Idempotency-Key header instead. When both are sent they must match.

Required string length: 1 - 50

Response

Successful Response

status
enum<string>
required

Where the wire is in its lifecycle. pending_approval means an approval policy is holding it; processing means it was queued for submission to the bank.

Available options:
pending,
pending_approval,
canceled,
processing,
error,
sent,
returned,
void
amount
string
required

Amount sent, in USD. Echoes the request.

Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
instructions
string | null
required

Wire instructions sent to the receiving bank. Echoes the request, except for contacts paid through your brokerage account, where Meow replaces the submitted memo with system-generated instructions.

counterparty_id
string<uuid>
required

Contact that was paid. Echoes the request.

created_time
integer
required

When the transfer was created, as a Unix timestamp in seconds.

transfer_type
enum<string>
required

Rail used. Always wire for this endpoint.

Available options:
book,
usdc,
usdt,
pyusd,
cash,
usdg,
path_usd,
ach,
wire,
international
approval_id
string<uuid>
required

Handle for this transfer, returned whether or not an approval policy gated it. Pass it to GET /approvals/{approval_id} to follow the transfer to completion.

id
string | null

Identifier of the wire at the bank. null until the transfer leaves the queue, so it is always absent while status is processing or pending_approval. Use approval_id as the stable handle instead.

message
string | null

Human-readable next step. Set only when status is pending_approval; otherwise null.

metadata
Metadata · object | null

The metadata attached when this object was created, unchanged. null when none was attached. Rarely, a .created webhook can be published before the create request finishes committing, and that one event reports null; every later event and every read of the object carries the metadata.