curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/wire/scheduled \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}
'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled"
payload = {
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 500000000.5,
counterparty_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rrule: '<string>',
instructions: '<string>',
purpose: '<string>',
internal_note: '<string>',
email: 'jsmith@example.com',
metadata: {},
idempotency_key: '<string>'
})
};
fetch('https://api.meow.com/v1/accounts/{account_id}/wire/scheduled', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled"
payload := strings.NewReader("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 500000000.5,
'counterparty_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rrule' => '<string>',
'instructions' => '<string>',
'purpose' => '<string>',
'internal_note' => '<string>',
'email' => 'jsmith@example.com',
'metadata' => [
],
'idempotency_key' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/accounts/{account_id}/wire/scheduled';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 500000000.5,
counterparty_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rrule: '<string>',
instructions: '<string>',
purpose: '<string>',
internal_note: '<string>',
email: 'jsmith@example.com',
metadata: {},
idempotency_key: '<string>'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": [],
"idempotency_key": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/accounts/{account_id}/wire/scheduled' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}'{
"status": "pending",
"amount": "<string>",
"instructions": "<string>",
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"transfer_type": "book",
"approval_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_occurrence": "2023-11-07T05:31:56Z",
"message": "<string>",
"metadata": {}
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Create Scheduled Wire Transfer
Creates a recurring or one-off future wire to an external counterparty. Each occurrence is sent in US dollars on the schedule’s business-day rules.
curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/wire/scheduled \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}
'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled"
payload = {
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 500000000.5,
counterparty_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rrule: '<string>',
instructions: '<string>',
purpose: '<string>',
internal_note: '<string>',
email: 'jsmith@example.com',
metadata: {},
idempotency_key: '<string>'
})
};
fetch('https://api.meow.com/v1/accounts/{account_id}/wire/scheduled', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled"
payload := strings.NewReader("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => 500000000.5,
'counterparty_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'rrule' => '<string>',
'instructions' => '<string>',
'purpose' => '<string>',
'internal_note' => '<string>',
'email' => 'jsmith@example.com',
'metadata' => [
],
'idempotency_key' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const url = 'https://api.meow.com/v1/accounts/{account_id}/wire/scheduled';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amount: 500000000.5,
counterparty_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
rrule: '<string>',
instructions: '<string>',
purpose: '<string>',
internal_note: '<string>',
email: 'jsmith@example.com',
metadata: {},
idempotency_key: '<string>'
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"amount\": 500000000.5,\n \"counterparty_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"rrule\": \"<string>\",\n \"instructions\": \"<string>\",\n \"purpose\": \"<string>\",\n \"internal_note\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": [],
"idempotency_key": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/wire/scheduled")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"x-api-key": "<api-key>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))falsefalse$headers=@{}
$headers.Add("x-api-key", "<api-key>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/accounts/{account_id}/wire/scheduled' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"amount": 500000000.5,
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"instructions": "<string>",
"purpose": "<string>",
"internal_note": "<string>",
"email": "jsmith@example.com",
"metadata": {},
"idempotency_key": "<string>"
}'{
"status": "pending",
"amount": "<string>",
"instructions": "<string>",
"counterparty_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rrule": "<string>",
"transfer_type": "book",
"approval_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_occurrence": "2023-11-07T05:31:56Z",
"message": "<string>",
"metadata": {}
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Authorizations
Your Meow API key, sent in the x-api-key header for authentication.
Headers
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.
1 - 50^[!-~]+$Optional entity_id to scope requests to a specific entity.
Path Parameters
The ID of the account.
Body
Amount to send on each occurrence, in USD.
1 <= x <= 1000000000Contact to pay. Use list_contacts to find one.
Recurrence rule (RFC 5545 RRULE) defining the schedule.
1 - 120Wire instructions sent to the receiving bank.
1 - 140Purpose 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.
1Private note, visible only inside Meow.
5 - 255Address to notify on each occurrence.
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.
Show child attributes
Show child attributes
Deprecated: send the key in the Idempotency-Key header instead. When both are sent they must match.
1 - 50Response
Successful Response
State of the schedule, not of any individual wire. pending means the schedule is live and waiting for its first occurrence; pending_approval means an approval policy is holding it; processing means it was queued for creation.
pending, pending_approval, canceled, processing, error, sent, returned, void Amount sent on each occurrence, in USD. Echoes the request.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Wire instructions sent to the receiving bank on each occurrence. Echoes the request, except for contacts paid through your brokerage account, where Meow replaces the submitted memo with system-generated instructions.
Contact paid on each occurrence. Echoes the request.
Recurrence rule (RFC 5545 RRULE) driving the schedule. Echoes the request.
1 - 120Rail used on each occurrence. Always wire for this endpoint.
book, usdc, usdt, pyusd, cash, usdg, path_usd, ach, wire, international Handle for this schedule, returned whether or not an approval policy gated it. Pass it to GET /approvals/{approval_id} to follow the request to completion.
Identifier of the schedule, for use with List Scheduled Wire Transfers. null until the schedule is actually created, so it is always absent while status is processing or pending_approval. Use approval_id as the stable handle instead.
When the first wire will be sent. Scheduled payments run at 10:00 UTC, and an occurrence that falls on a weekend or bank holiday moves to the previous business day. null until the schedule is created.
Human-readable next step. Set only when status is pending_approval; otherwise null.
The metadata attached when this schedule was created, unchanged. Every wire the schedule sends carries it too, so the webhook for any occurrence reports the same value. null when none was attached.
Show child attributes
Show child attributes