curl --request POST \
--url https://api.paywint.com/api/platform/cross-border/create-payment \
--header 'Content-Type: application/json' \
--header 'X-Platform-ID: <x-platform-id>' \
--header 'X-Signature: <x-signature>' \
--data '
{
"user_id": "f47ac10b-****-****-****-0e02b2c3d479",
"payee_id": "f47ac10b-****-****-****-0e02b2c3d479",
"amount": 123,
"to_bank_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payout_currency": "INR",
"invoice_no": "INV-2024-001234",
"description": "<string>"
}
'import requests
url = "https://api.paywint.com/api/platform/cross-border/create-payment"
payload = {
"user_id": "f47ac10b-****-****-****-0e02b2c3d479",
"payee_id": "f47ac10b-****-****-****-0e02b2c3d479",
"amount": 123,
"to_bank_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payout_currency": "INR",
"invoice_no": "INV-2024-001234",
"description": "<string>"
}
headers = {
"X-Platform-ID": "<x-platform-id>",
"X-Signature": "<x-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Platform-ID': '<x-platform-id>',
'X-Signature': '<x-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user_id: 'f47ac10b-****-****-****-0e02b2c3d479',
payee_id: 'f47ac10b-****-****-****-0e02b2c3d479',
amount: 123,
to_bank_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
payout_currency: 'INR',
invoice_no: 'INV-2024-001234',
description: '<string>'
})
};
fetch('https://api.paywint.com/api/platform/cross-border/create-payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paywint.com/api/platform/cross-border/create-payment",
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([
'user_id' => 'f47ac10b-****-****-****-0e02b2c3d479',
'payee_id' => 'f47ac10b-****-****-****-0e02b2c3d479',
'amount' => 123,
'to_bank_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'payout_currency' => 'INR',
'invoice_no' => 'INV-2024-001234',
'description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Platform-ID: <x-platform-id>",
"X-Signature: <x-signature>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.paywint.com/api/platform/cross-border/create-payment"
payload := strings.NewReader("{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Platform-ID", "<x-platform-id>")
req.Header.Add("X-Signature", "<x-signature>")
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.paywint.com/api/platform/cross-border/create-payment")
.header("X-Platform-ID", "<x-platform-id>")
.header("X-Signature", "<x-signature>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywint.com/api/platform/cross-border/create-payment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Platform-ID"] = '<x-platform-id>'
request["X-Signature"] = '<x-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed.",
"data": {
"payment_id": "f47ac10b-****-****-****-0e02b2c3d479",
"status": "INITIATED"
},
"queryGeneratedTime": 1718006400
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create a Cross-Border Payment
Creates a cross-border payment from a platform user’s wallet to a saved payee bank.
Send:
payer_id(aliasuser_id) — the user funding the paymentpayee_id— the payeeto_bank_id— the saved payee bankamount— the source amount in USD, pluspayout_currency,invoice_noand an optionaldescription
Amount limits (the source amount in USD, both inclusive):
- Minimum amount:
$10 USD - Maximum amount:
$5,000 USD, except:- Pakistan (
payout_currency: PKR):$3,500 USD
- Pakistan (
The maximum depends on the destination payout_currency. A request below the minimum or above the
applicable maximum is rejected with AMOUNT_OUT_OF_RANGE, and the error payload echoes min_amount,
max_amount (the maximum that applied) and currency (USD).
Also rejects with COUNTRY_NOT_ALLOWED if the payee country is not enabled for the platform, or
MISSING_REQUIRED_FIELDS when a required payee field is missing. Returns the created payment;
progress is delivered via payment.* webhooks.
curl --request POST \
--url https://api.paywint.com/api/platform/cross-border/create-payment \
--header 'Content-Type: application/json' \
--header 'X-Platform-ID: <x-platform-id>' \
--header 'X-Signature: <x-signature>' \
--data '
{
"user_id": "f47ac10b-****-****-****-0e02b2c3d479",
"payee_id": "f47ac10b-****-****-****-0e02b2c3d479",
"amount": 123,
"to_bank_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payout_currency": "INR",
"invoice_no": "INV-2024-001234",
"description": "<string>"
}
'import requests
url = "https://api.paywint.com/api/platform/cross-border/create-payment"
payload = {
"user_id": "f47ac10b-****-****-****-0e02b2c3d479",
"payee_id": "f47ac10b-****-****-****-0e02b2c3d479",
"amount": 123,
"to_bank_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payout_currency": "INR",
"invoice_no": "INV-2024-001234",
"description": "<string>"
}
headers = {
"X-Platform-ID": "<x-platform-id>",
"X-Signature": "<x-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Platform-ID': '<x-platform-id>',
'X-Signature': '<x-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user_id: 'f47ac10b-****-****-****-0e02b2c3d479',
payee_id: 'f47ac10b-****-****-****-0e02b2c3d479',
amount: 123,
to_bank_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
payout_currency: 'INR',
invoice_no: 'INV-2024-001234',
description: '<string>'
})
};
fetch('https://api.paywint.com/api/platform/cross-border/create-payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paywint.com/api/platform/cross-border/create-payment",
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([
'user_id' => 'f47ac10b-****-****-****-0e02b2c3d479',
'payee_id' => 'f47ac10b-****-****-****-0e02b2c3d479',
'amount' => 123,
'to_bank_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'payout_currency' => 'INR',
'invoice_no' => 'INV-2024-001234',
'description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Platform-ID: <x-platform-id>",
"X-Signature: <x-signature>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.paywint.com/api/platform/cross-border/create-payment"
payload := strings.NewReader("{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Platform-ID", "<x-platform-id>")
req.Header.Add("X-Signature", "<x-signature>")
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.paywint.com/api/platform/cross-border/create-payment")
.header("X-Platform-ID", "<x-platform-id>")
.header("X-Signature", "<x-signature>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywint.com/api/platform/cross-border/create-payment")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Platform-ID"] = '<x-platform-id>'
request["X-Signature"] = '<x-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"payee_id\": \"f47ac10b-****-****-****-0e02b2c3d479\",\n \"amount\": 123,\n \"to_bank_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"payout_currency\": \"INR\",\n \"invoice_no\": \"INV-2024-001234\",\n \"description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed.",
"data": {
"payment_id": "f47ac10b-****-****-****-0e02b2c3d479",
"status": "INITIATED"
},
"queryGeneratedTime": 1718006400
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Headers
Unique platform identifier (UUID). You receive this during onboarding. Must be sent with every API request.
HMAC-SHA256 request signature for authentication. Use your platform secret key to compute it as: METHOD + PATH + QUERY + BODY_HASH.
Body
Platform-side cross-border payout request.
A cross-border payout always debits the payer's wallet to an international bank, so the payment
and receiving methods are fixed server-side (WALLET / BANK) and are never partner-supplied. This
is a dedicated schema carrying only the cross-border routing fields plus the funding basics
(payer_id/user_id, payee_id, amount) and the extra description and invoice_no.
Unique identifier (UUID) of the user funding the payout (payer).
"f47ac10b-****-****-****-0e02b2c3d479"
Unique identifier (UUID) of the payee user.
"f47ac10b-****-****-****-0e02b2c3d479"
Source amount debited from the payer's wallet.
Saved payee bank id (bank details resolved server-side).
Currency paid out.
8"INR"
Optional invoice or transaction reference number for tracking and record-keeping.
20"INV-2024-001234"
Optional short note or description for the payout.
255Response
Successful Response
Indicates whether the request was processed successfully.
true
A short, human-readable message describing the result of the request.
"Operation completed."
The main response payload, if applicable
Show child attributes
Show child attributes
The Unix timestamp (in seconds) indicating when the response was generated.
1718006400

