curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel \
--header 'x-api-key: <api-key>'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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}/wires/{wire_transfer_id}/cancel")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
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}/wires/{wire_transfer_id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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}/wires/{wire_transfer_id}/cancel';
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
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}/wires/{wire_transfer_id}/cancel");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")
.post(null)
.addHeader("x-api-key", "<api-key>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["x-api-key": "<api-key>"]
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>")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel' -Method POST -Headers $headers{
"amount": "1000.00",
"counterparty_account_number": "123456789",
"counterparty_bank_name": "Example Bank N.A.",
"counterparty_id": "cp_3b0d5e2a41f2",
"counterparty_name": "Catnip Coffee Co",
"counterparty_routing_number": "021000021",
"created_at": "2026-01-15T14:46:41.375Z",
"direction": "outbound",
"id": "wire_9f1c3b6e2a1d",
"imad": "2026011500000001",
"instructions": "catnip-payroll-2026",
"internal_note": "Q1 roasting supplies",
"purpose": "invoice_payment",
"status": "sent",
"updated_at": "2026-01-15T14:46:41.375Z"
}{
"code": 123,
"message": "<string>",
"debug_message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}{
"error_code": "<string>",
"message": "<string>"
}Cancel Wire Transfer
Cancels an outgoing wire that the bank has not yet sent. Returns the wire with its new status. A wire that has already left cannot be cancelled; contact your bank to request a recall instead.
curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel \
--header 'x-api-key: <api-key>'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel"
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
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}/wires/{wire_transfer_id}/cancel")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
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}/wires/{wire_transfer_id}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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}/wires/{wire_transfer_id}/cancel';
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
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}/wires/{wire_transfer_id}/cancel");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")
.post(null)
.addHeader("x-api-key", "<api-key>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["x-api-key": "<api-key>"]
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>")
$response = Invoke-WebRequest -Uri 'https://api.meow.com/v1/accounts/{account_id}/wires/{wire_transfer_id}/cancel' -Method POST -Headers $headers{
"amount": "1000.00",
"counterparty_account_number": "123456789",
"counterparty_bank_name": "Example Bank N.A.",
"counterparty_id": "cp_3b0d5e2a41f2",
"counterparty_name": "Catnip Coffee Co",
"counterparty_routing_number": "021000021",
"created_at": "2026-01-15T14:46:41.375Z",
"direction": "outbound",
"id": "wire_9f1c3b6e2a1d",
"imad": "2026011500000001",
"instructions": "catnip-payroll-2026",
"internal_note": "Q1 roasting supplies",
"purpose": "invoice_payment",
"status": "sent",
"updated_at": "2026-01-15T14:46:41.375Z"
}{
"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
Optional entity_id to scope requests to a specific entity.
Path Parameters
The ID of the account.
The transaction group ID for the wire transfer (e.g. withdrawal_wire_...), the wire ID returned when you created the transfer (e.g. wire_...), or the ID of an inbound wire (e.g. iw_...).
Response
Successful Response
How much moved, in USD.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Where the transfer is in its lifecycle. pending and processing still change; poll until the transfer settles. An ACH transfer settles at sent, returned, canceled, or error; a wire settles at sent, canceled, error, or void.
pending, pending_approval, canceled, processing, error, sent, returned, void Whether the money moved into this account (inbound) or out of it (outbound). Inbound transfers were sent to you by someone else, so they have no counterparty you configured.
inbound, outbound When the transfer was created.
When the transfer last changed, so you can detect new activity.
Pass this back to Get Wire Transfer to check on the transfer.
The contact you sent to. Null on inbound transfers, which arrive from someone you never configured.
Who you sent to, or who sent to you on an inbound transfer.
The other side's account number, when the bank reports it. Often absent on inbound transfers.
The other side's routing number, when the bank reports it. Often absent on inbound transfers.
Your private note on this transfer. Never leaves Meow.
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.
Show child attributes
Show child attributes
The originator to beneficiary information carried on the wire. On an inbound wire this is where a sender puts a reference you can match on.
The other side's bank, when the bank reports it. Often absent on inbound wires.
Why the transfer failed, when it did.
The wire's IMAD, which uniquely identifies it on the Fedwire network. Use it when tracing a wire with a bank.
The purpose you stated when sending. Null on inbound wires, which carry no purpose you set.
The sender's postal address as their bank reported it. Only set on inbound wires.
The sending bank's postal address as it arrived on the wire. Only set on inbound wires.
True when an inbound wire came from a bank outside the US. Null when the bank did not say, and on outbound wires.