curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/international/quote \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}
'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/international/quote"
payload = {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}
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({
contact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
recipient_amount: 1,
source_amount: 1
})
};
fetch('https://api.meow.com/v1/accounts/{account_id}/international/quote', 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}/international/quote"
payload := strings.NewReader("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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}/international/quote")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/international/quote")
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 \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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}/international/quote",
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([
'contact_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'recipient_amount' => 1,
'source_amount' => 1
]),
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}/international/quote';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
recipient_amount: 1,
source_amount: 1
})
};
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}/international/quote");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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 \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/international/quote")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/international/quote")!
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}/international/quote' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}'{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": "<string>",
"recipient_currency": "AED",
"source_amount": "<string>",
"rate": "<string>",
"fee": "<string>",
"total_debit": "<string>",
"fixed_side": "recipient_amount"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Quote an International Payment
Prices an international payment without sending it, so you can show the rate, the fee, and the total debit before committing. Fix either leg: give recipient_amount to learn what the payment costs you, or source_amount to learn what the recipient gets. Nothing is reserved, and the payment is priced again when you call POST /accounts/{account_id}/international, so the figures can move if the rate does.
curl --request POST \
--url https://api.meow.com/v1/accounts/{account_id}/international/quote \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}
'import requests
url = "https://api.meow.com/v1/accounts/{account_id}/international/quote"
payload = {
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}
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({
contact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
recipient_amount: 1,
source_amount: 1
})
};
fetch('https://api.meow.com/v1/accounts/{account_id}/international/quote', 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}/international/quote"
payload := strings.NewReader("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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}/international/quote")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meow.com/v1/accounts/{account_id}/international/quote")
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 \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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}/international/quote",
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([
'contact_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'recipient_amount' => 1,
'source_amount' => 1
]),
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}/international/quote';
const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
recipient_amount: 1,
source_amount: 1
})
};
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}/international/quote");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("x-api-key", "<api-key>");
request.AddJsonBody("{\n \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\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 \"contact_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"recipient_amount\": 1,\n \"source_amount\": 1\n}")
val request = Request.Builder()
.url("https://api.meow.com/v1/accounts/{account_id}/international/quote")
.post(body)
.addHeader("x-api-key", "<api-key>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.meow.com/v1/accounts/{account_id}/international/quote")!
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}/international/quote' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": 1,
"source_amount": 1
}'{
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recipient_amount": "<string>",
"recipient_currency": "AED",
"source_amount": "<string>",
"rate": "<string>",
"fee": "<string>",
"total_debit": "<string>",
"fixed_side": "recipient_amount"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}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 account the payment would be funded from.
Body
Contact you intend to pay. The contact must already have international payment details saved, because the destination decides which rail prices the conversion.
Currency the recipient would be paid in.
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYN, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRU, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SLE, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STN, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UYW, UZS, VED, VES, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWG, ZWL Price the conversion from what the recipient must receive. Provide exactly one of recipient_amount or source_amount.
x > 0Price the conversion from the US dollars you want converted, before the fee. Provide exactly one of recipient_amount or source_amount.
x > 0Response
Successful Response
Contact the quote was priced for.
How much the recipient would receive.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Currency the recipient would be paid in.
AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYN, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRU, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SLE, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STN, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UYW, UZS, VED, VES, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW, ZWG, ZWL US dollars converted to fund the payment, before the fee.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Rate this conversion was priced at. source_amount and recipient_amount are the figures to reconcile against, since rounding is applied to both.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$What the conversion would cost you, in US dollars.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$US dollars that would leave the account in total, fee included. This is the figure your approval rules are evaluated against.
^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$Which leg you held fixed, and so the only one of the two amounts that comes back exactly as you sent it.
recipient_amount, source_amount