curl --request POST \
--url https://api.paywint.com/api/platform/card/add/secure-link/{user_id} \
--header 'Content-Type: application/json' \
--header 'X-Platform-ID: <x-platform-id>' \
--header 'X-Signature: <x-signature>' \
--data '
{
"card_purpose": "PAYMENT"
}
'import requests
url = "https://api.paywint.com/api/platform/card/add/secure-link/{user_id}"
payload = { "card_purpose": "PAYMENT" }
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({card_purpose: 'PAYMENT'})
};
fetch('https://api.paywint.com/api/platform/card/add/secure-link/{user_id}', 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/card/add/secure-link/{user_id}",
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([
'card_purpose' => 'PAYMENT'
]),
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/card/add/secure-link/{user_id}"
payload := strings.NewReader("{\n \"card_purpose\": \"PAYMENT\"\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/card/add/secure-link/{user_id}")
.header("X-Platform-ID", "<x-platform-id>")
.header("X-Signature", "<x-signature>")
.header("Content-Type", "application/json")
.body("{\n \"card_purpose\": \"PAYMENT\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywint.com/api/platform/card/add/secure-link/{user_id}")
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 \"card_purpose\": \"PAYMENT\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed.",
"data": {
"secure_link": "https://your-client-app.com/platform/add-card?prd=1&cardId=07f0a4aa-b890-4135-84d6-ec9c19b82bb3"
},
"queryGeneratedTime": 1718006400
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Add Card
Returns a short-lived secure link to initiate the Add Card process for a user.
This endpoint:
- Generates a secure link based on the provided
card_purpose(PAYMENT or WITHDRAWAL) - The link is valid for a limited time and intended for new card addition only
Usage Notes:
- The link expires after 30 minutes
- Open the
secure_linkin a new browser window or iframe immediately after generation - Do not reuse the link or repurpose it for card editing
curl --request POST \
--url https://api.paywint.com/api/platform/card/add/secure-link/{user_id} \
--header 'Content-Type: application/json' \
--header 'X-Platform-ID: <x-platform-id>' \
--header 'X-Signature: <x-signature>' \
--data '
{
"card_purpose": "PAYMENT"
}
'import requests
url = "https://api.paywint.com/api/platform/card/add/secure-link/{user_id}"
payload = { "card_purpose": "PAYMENT" }
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({card_purpose: 'PAYMENT'})
};
fetch('https://api.paywint.com/api/platform/card/add/secure-link/{user_id}', 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/card/add/secure-link/{user_id}",
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([
'card_purpose' => 'PAYMENT'
]),
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/card/add/secure-link/{user_id}"
payload := strings.NewReader("{\n \"card_purpose\": \"PAYMENT\"\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/card/add/secure-link/{user_id}")
.header("X-Platform-ID", "<x-platform-id>")
.header("X-Signature", "<x-signature>")
.header("Content-Type", "application/json")
.body("{\n \"card_purpose\": \"PAYMENT\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywint.com/api/platform/card/add/secure-link/{user_id}")
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 \"card_purpose\": \"PAYMENT\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed.",
"data": {
"secure_link": "https://your-client-app.com/platform/add-card?prd=1&cardId=07f0a4aa-b890-4135-84d6-ec9c19b82bb3"
},
"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.
Path Parameters
Unique identifier (UUID) of the user for whom the add-card link is being generated.
Body
Specifies the purpose of the card — either PAYMENT or WITHDRAWAL
PAYMENT, WITHDRAWAL "PAYMENT"
Response
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

