Attach external payment method
curl --request POST \
--url https://api.zenskar.com/customers/{customer_id}/payment_methods/attach \
--header 'Content-Type: application/json' \
--header 'organisation: <api-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"payment_method_id": "<string>",
"connector": {
"name": "<string>",
"reference_id": "<string>"
},
"set_as_default": true
}
'import requests
url = "https://api.zenskar.com/customers/{customer_id}/payment_methods/attach"
payload = {
"payment_method_id": "<string>",
"connector": {
"name": "<string>",
"reference_id": "<string>"
},
"set_as_default": True
}
headers = {
"x-api-key": "<api-key>",
"organisation": "<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>',
organisation: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payment_method_id: '<string>',
connector: {name: '<string>', reference_id: '<string>'},
set_as_default: true
})
};
fetch('https://api.zenskar.com/customers/{customer_id}/payment_methods/attach', 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.zenskar.com/customers/{customer_id}/payment_methods/attach",
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([
'payment_method_id' => '<string>',
'connector' => [
'name' => '<string>',
'reference_id' => '<string>'
],
'set_as_default' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"organisation: <api-key>",
"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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zenskar.com/customers/{customer_id}/payment_methods/attach"
payload := strings.NewReader("{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("organisation", "<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.zenskar.com/customers/{customer_id}/payment_methods/attach")
.header("x-api-key", "<api-key>")
.header("organisation", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zenskar.com/customers/{customer_id}/payment_methods/attach")
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["organisation"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}"
response = http.request(request)
puts response.read_body{
"customer_id": "<string>",
"payment_method_id": "<string>",
"external_id": "<string>",
"set_as_default": true,
"raw_data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Customers
Attach external payment method
Attaches an external payment method (from Stripe or other provider) to a customer. Connector Auto-Detection:
- If ‘connector’ is not provided, the system will automatically detect the connector by querying resource mappings
- If exactly one connector mapping exists for the customer, it will be used automatically
- If multiple connector mappings exist, you must explicitly specify which connector to use
- If no connector mappings exist, an error will be returned
POST
/
customers
/
{customer_id}
/
payment_methods
/
attach
Attach external payment method
curl --request POST \
--url https://api.zenskar.com/customers/{customer_id}/payment_methods/attach \
--header 'Content-Type: application/json' \
--header 'organisation: <api-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"payment_method_id": "<string>",
"connector": {
"name": "<string>",
"reference_id": "<string>"
},
"set_as_default": true
}
'import requests
url = "https://api.zenskar.com/customers/{customer_id}/payment_methods/attach"
payload = {
"payment_method_id": "<string>",
"connector": {
"name": "<string>",
"reference_id": "<string>"
},
"set_as_default": True
}
headers = {
"x-api-key": "<api-key>",
"organisation": "<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>',
organisation: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payment_method_id: '<string>',
connector: {name: '<string>', reference_id: '<string>'},
set_as_default: true
})
};
fetch('https://api.zenskar.com/customers/{customer_id}/payment_methods/attach', 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.zenskar.com/customers/{customer_id}/payment_methods/attach",
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([
'payment_method_id' => '<string>',
'connector' => [
'name' => '<string>',
'reference_id' => '<string>'
],
'set_as_default' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"organisation: <api-key>",
"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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zenskar.com/customers/{customer_id}/payment_methods/attach"
payload := strings.NewReader("{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("organisation", "<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.zenskar.com/customers/{customer_id}/payment_methods/attach")
.header("x-api-key", "<api-key>")
.header("organisation", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zenskar.com/customers/{customer_id}/payment_methods/attach")
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["organisation"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"payment_method_id\": \"<string>\",\n \"connector\": {\n \"name\": \"<string>\",\n \"reference_id\": \"<string>\"\n },\n \"set_as_default\": true\n}"
response = http.request(request)
puts response.read_body{
"customer_id": "<string>",
"payment_method_id": "<string>",
"external_id": "<string>",
"set_as_default": true,
"raw_data": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Path Parameters
Body
application/json
Request schema for attaching external payment method to customer
Payment method ID from external provider (e.g., Stripe pm_xxx)
Minimum string length:
1Payment provider connector configuration (e.g., {'name': 'stripe'}). If not provided, will auto-detect from resource mappings.
Show child attributes
Show child attributes
Whether to set this payment method as default for the customer
Response
Successful Response
Response schema for payment method attachment operation
Customer ID
Attached payment method ID
External customer ID (e.g., Stripe customer ID)
Whether payment method was set as default
Raw PaymentMethod object from provider