Update customer
curl --request PATCH \
--url https://platform.swipelux.com/v3/customers/{customerId} \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"externalId": null,
"business": {
"phone": null,
"registeredAddress": {
"city": "Paris"
}
},
"financialProfile": {
"accountPurposes": [
"treasury_management"
]
},
"metadata": {
"segment": "growth",
"legacySegment": null
}
}
'import requests
url = "https://platform.swipelux.com/v3/customers/{customerId}"
payload = {
"externalId": None,
"business": {
"phone": None,
"registeredAddress": { "city": "Paris" }
},
"financialProfile": { "accountPurposes": ["treasury_management"] },
"metadata": {
"segment": "growth",
"legacySegment": None
}
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: null,
business: {phone: null, registeredAddress: {city: 'Paris'}},
financialProfile: {accountPurposes: ['treasury_management']},
metadata: {segment: 'growth', legacySegment: null}
})
};
fetch('https://platform.swipelux.com/v3/customers/{customerId}', 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://platform.swipelux.com/v3/customers/{customerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'externalId' => null,
'business' => [
'phone' => null,
'registeredAddress' => [
'city' => 'Paris'
]
],
'financialProfile' => [
'accountPurposes' => [
'treasury_management'
]
],
'metadata' => [
'segment' => 'growth',
'legacySegment' => null
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://platform.swipelux.com/v3/customers/{customerId}"
payload := strings.NewReader("{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.patch("https://platform.swipelux.com/v3/customers/{customerId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.swipelux.com/v3/customers/{customerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "cus_01JBUSINESS",
"type": "business",
"externalId": null,
"business": {
"legalName": "Acme Payments SAS",
"registeredAddress": {
"streetLine1": "1 Avenue Exemple",
"city": "Paris",
"country": "FR"
}
},
"financialProfile": {
"accountPurposes": [
"treasury_management"
]
},
"relatedParties": [
{
"id": "rp_01JDIRECTOR",
"customerId": "cus_01JBUSINESS",
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T18:20:00.000Z"
}
],
"metadata": {
"segment": "growth"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T19:05:00.000Z"
}
}{
"type": "https://docs.swipelux.com/errors/invalid-field-for-type",
"title": "Invalid Field For Type",
"status": 400,
"code": "invalid_field_for_type",
"detail": "Request contains fields invalid for the selected customer type.",
"correlationId": "01JERRORINVALIDBRANCH",
"errors": [
{
"pointer": "/business",
"code": "invalid_field_for_type",
"message": "Field is not valid for customer type individual."
}
]
}{
"type": "https://docs.swipelux.com/errors/unauthorized",
"title": "<string>",
"status": 401,
"code": "unauthorized",
"detail": "<string>",
"correlationId": "<string>",
"retryable": false,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/forbidden",
"title": "<string>",
"status": 403,
"code": "forbidden",
"detail": "<string>",
"correlationId": "<string>",
"retryable": false,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/customer-not-found",
"title": "<string>",
"status": 404,
"code": "customer_not_found",
"detail": "<string>",
"correlationId": "<string>",
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/idempotency-request-in-progress",
"title": "Idempotency Request In Progress",
"status": 409,
"code": "idempotency_request_in_progress",
"detail": "A request with this Idempotency-Key is still in progress.",
"correlationId": "01JERRORIDEMPOTENCY",
"retryable": true
}{
"type": "https://docs.swipelux.com/errors/internal-error",
"title": "<string>",
"status": 500,
"code": "internal_error",
"detail": "<string>",
"correlationId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"transferId": "<string>",
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"actor": "customer",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"type": "account",
"id": "<string>",
"requiredAction": "archive_account"
}
]
}customers
Update customer
Deep-merges canonical customer facts. Arrays replace atomically, null clears nullable facts, metadata merges by key, and related-party ids upsert in place.
Update customer
curl --request PATCH \
--url https://platform.swipelux.com/v3/customers/{customerId} \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"externalId": null,
"business": {
"phone": null,
"registeredAddress": {
"city": "Paris"
}
},
"financialProfile": {
"accountPurposes": [
"treasury_management"
]
},
"metadata": {
"segment": "growth",
"legacySegment": null
}
}
'import requests
url = "https://platform.swipelux.com/v3/customers/{customerId}"
payload = {
"externalId": None,
"business": {
"phone": None,
"registeredAddress": { "city": "Paris" }
},
"financialProfile": { "accountPurposes": ["treasury_management"] },
"metadata": {
"segment": "growth",
"legacySegment": None
}
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: null,
business: {phone: null, registeredAddress: {city: 'Paris'}},
financialProfile: {accountPurposes: ['treasury_management']},
metadata: {segment: 'growth', legacySegment: null}
})
};
fetch('https://platform.swipelux.com/v3/customers/{customerId}', 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://platform.swipelux.com/v3/customers/{customerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'externalId' => null,
'business' => [
'phone' => null,
'registeredAddress' => [
'city' => 'Paris'
]
],
'financialProfile' => [
'accountPurposes' => [
'treasury_management'
]
],
'metadata' => [
'segment' => 'growth',
'legacySegment' => null
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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://platform.swipelux.com/v3/customers/{customerId}"
payload := strings.NewReader("{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.patch("https://platform.swipelux.com/v3/customers/{customerId}")
.header("Idempotency-Key", "<idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.swipelux.com/v3/customers/{customerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": null,\n \"business\": {\n \"phone\": null,\n \"registeredAddress\": {\n \"city\": \"Paris\"\n }\n },\n \"financialProfile\": {\n \"accountPurposes\": [\n \"treasury_management\"\n ]\n },\n \"metadata\": {\n \"segment\": \"growth\",\n \"legacySegment\": null\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "cus_01JBUSINESS",
"type": "business",
"externalId": null,
"business": {
"legalName": "Acme Payments SAS",
"registeredAddress": {
"streetLine1": "1 Avenue Exemple",
"city": "Paris",
"country": "FR"
}
},
"financialProfile": {
"accountPurposes": [
"treasury_management"
]
},
"relatedParties": [
{
"id": "rp_01JDIRECTOR",
"customerId": "cus_01JBUSINESS",
"partyType": "person",
"roles": [
"director"
],
"title": "Chief executive officer",
"person": {
"firstName": "Amina",
"lastName": "Diallo",
"residenceCountry": "FR"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T18:20:00.000Z"
}
],
"metadata": {
"segment": "growth"
},
"createdAt": "2026-07-15T18:20:00.000Z",
"updatedAt": "2026-07-15T19:05:00.000Z"
}
}{
"type": "https://docs.swipelux.com/errors/invalid-field-for-type",
"title": "Invalid Field For Type",
"status": 400,
"code": "invalid_field_for_type",
"detail": "Request contains fields invalid for the selected customer type.",
"correlationId": "01JERRORINVALIDBRANCH",
"errors": [
{
"pointer": "/business",
"code": "invalid_field_for_type",
"message": "Field is not valid for customer type individual."
}
]
}{
"type": "https://docs.swipelux.com/errors/unauthorized",
"title": "<string>",
"status": 401,
"code": "unauthorized",
"detail": "<string>",
"correlationId": "<string>",
"retryable": false,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/forbidden",
"title": "<string>",
"status": 403,
"code": "forbidden",
"detail": "<string>",
"correlationId": "<string>",
"retryable": false,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/customer-not-found",
"title": "<string>",
"status": 404,
"code": "customer_not_found",
"detail": "<string>",
"correlationId": "<string>",
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "https://docs.swipelux.com/errors/idempotency-request-in-progress",
"title": "Idempotency Request In Progress",
"status": 409,
"code": "idempotency_request_in_progress",
"detail": "A request with this Idempotency-Key is still in progress.",
"correlationId": "01JERRORIDEMPOTENCY",
"retryable": true
}{
"type": "https://docs.swipelux.com/errors/internal-error",
"title": "<string>",
"status": 500,
"code": "internal_error",
"detail": "<string>",
"correlationId": "<string>",
"retryable": true,
"errors": [
{
"pointer": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"transferId": "<string>",
"statusReason": {
"code": "sanctions_screening_failed",
"message": "<string>",
"actor": "customer",
"retryable": true
},
"reviewAnswer": "<string>",
"capabilities": [
"<string>"
],
"blockingResources": [
{
"type": "account",
"id": "<string>",
"requiredAction": "archive_account"
}
]
}Authorizations
Your Swipelux API key. Obtain this from the Swipelux Dashboard.
Headers
Required for effectful v3 requests (POST, PATCH, PUT, DELETE). Reuse the same key with the same body to replay the cached response.
Required string length:
1 - 255Path Parameters
Body
application/json
- Option 1
- Option 2
Customer-type-specific JSON merge document. The stored customer type selects the applicable branch; shared-only patches can satisfy both schemas. Unknown request fields are silently ignored.
Response
Customer updated successfully
- Option 1
- Option 2
Show child attributes
Show child attributes