JavaScript
import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
const customerResponse = await client.v1.customers.paymentMethod.detach('x');
console.log(customerResponse.data);import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
customer_response = client.v1.customers.payment_method.detach(
id="x",
)
print(customer_response.data)package main
import (
"context"
"fmt"
"github.com/stiggio/stigg-go"
"github.com/stiggio/stigg-go/option"
)
func main() {
client := stigg.NewClient(
option.WithAPIKey("My API Key"),
)
customerResponse, err := client.V1.Customers.PaymentMethod.Detach(
context.TODO(),
"x",
stigg.V1CustomerPaymentMethodDetachParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", customerResponse.Data)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.customers.CustomerResponse;
import io.stigg.models.v1.customers.paymentmethod.PaymentMethodDetachParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
CustomerResponse customerResponse = client.v1().customers().paymentMethod().detach("x");
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
customer_response = stigg.v1.customers.payment_method.detach("x")
puts(customer_response)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Customers.PaymentMethod;
StiggClient client = new();
PaymentMethodDetachParams parameters = new() { ID = "x" };
var customerResponse = await client.V1.Customers.PaymentMethod.Detach(parameters);
Console.WriteLine(customerResponse);stigg v1:customers:payment-method detach \
--api-key 'My API Key' \
--id xcurl --request DELETE \
--url https://api.stigg.io/api/v1/customers/{id}/payment-method \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/customers/{id}/payment-method",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"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;
}{
"data": {
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z",
"archivedAt": null,
"name": "John Doe",
"email": "john@example.com",
"billingId": "cus_MIhJJFnJL24HFH",
"id": "customer-6e24b4",
"billingCurrency": "usd",
"metadata": {},
"integrations": [],
"defaultPaymentMethod": {
"type": "CARD",
"billingId": "pm_1Q0PsIJvEtkwdCNYMSaVuRz6",
"cardLast4Digits": "1234",
"cardExpiryMonth": 12,
"cardExpiryYear": 2025
},
"couponId": "coupon-6e24b4",
"timezone": null,
"language": "en",
"passthrough": {
"stripe": {
"invoiceCustomFields": {}
},
"zuora": {}
}
}
}{
"message": "<string>",
"code": "BadUserInput"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "CustomerNotFound"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Customers
Detach payment method
Removes the payment method from a customer. Ensure active paid subscriptions have an alternative payment method.
DELETE
/
api
/
v1
/
customers
/
{id}
/
payment-method
JavaScript
import Stigg from '@stigg/typescript';
const client = new Stigg({
apiKey: process.env['STIGG_API_KEY'], // This is the default and can be omitted
});
const customerResponse = await client.v1.customers.paymentMethod.detach('x');
console.log(customerResponse.data);import os
from stigg import Stigg
client = Stigg(
api_key=os.environ.get("STIGG_API_KEY"), # This is the default and can be omitted
)
customer_response = client.v1.customers.payment_method.detach(
id="x",
)
print(customer_response.data)package main
import (
"context"
"fmt"
"github.com/stiggio/stigg-go"
"github.com/stiggio/stigg-go/option"
)
func main() {
client := stigg.NewClient(
option.WithAPIKey("My API Key"),
)
customerResponse, err := client.V1.Customers.PaymentMethod.Detach(
context.TODO(),
"x",
stigg.V1CustomerPaymentMethodDetachParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", customerResponse.Data)
}
package io.stigg.example;
import io.stigg.client.StiggClient;
import io.stigg.client.okhttp.StiggOkHttpClient;
import io.stigg.models.v1.customers.CustomerResponse;
import io.stigg.models.v1.customers.paymentmethod.PaymentMethodDetachParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
StiggClient client = StiggOkHttpClient.fromEnv();
CustomerResponse customerResponse = client.v1().customers().paymentMethod().detach("x");
}
}require "stigg"
stigg = Stigg::Client.new(api_key: "My API Key")
customer_response = stigg.v1.customers.payment_method.detach("x")
puts(customer_response)using System;
using Stigg.Client;
using Stigg.Client.Models.V1.Customers.PaymentMethod;
StiggClient client = new();
PaymentMethodDetachParams parameters = new() { ID = "x" };
var customerResponse = await client.V1.Customers.PaymentMethod.Detach(parameters);
Console.WriteLine(customerResponse);stigg v1:customers:payment-method detach \
--api-key 'My API Key' \
--id xcurl --request DELETE \
--url https://api.stigg.io/api/v1/customers/{id}/payment-method \
--header 'X-API-KEY: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stigg.io/api/v1/customers/{id}/payment-method",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"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;
}{
"data": {
"createdAt": "2025-10-26T10:00:00.000Z",
"updatedAt": "2025-10-26T10:00:00.000Z",
"archivedAt": null,
"name": "John Doe",
"email": "john@example.com",
"billingId": "cus_MIhJJFnJL24HFH",
"id": "customer-6e24b4",
"billingCurrency": "usd",
"metadata": {},
"integrations": [],
"defaultPaymentMethod": {
"type": "CARD",
"billingId": "pm_1Q0PsIJvEtkwdCNYMSaVuRz6",
"cardLast4Digits": "1234",
"cardExpiryMonth": 12,
"cardExpiryYear": 2025
},
"couponId": "coupon-6e24b4",
"timezone": null,
"language": "en",
"passthrough": {
"stripe": {
"invoiceCustomFields": {}
},
"zuora": {}
}
}
}{
"message": "<string>",
"code": "BadUserInput"
}{
"message": "<string>",
"code": "Unauthenticated"
}{
"message": "<string>",
"code": "IdentityForbidden"
}{
"message": "<string>",
"code": "CustomerNotFound"
}{
"message": "<string>",
"code": "RateLimitExceeded"
}Authorizations
Server API Key
Headers
Account ID — optional when authenticating with a user JWT (Bearer token); falls back to the user's first membership. Ignored for API-key auth.
Environment ID — required when authenticating with a user JWT (Bearer token) on environment-scoped endpoints. Ignored for API-key auth (env is intrinsic to the key).
Path Parameters
The unique identifier of the entity
Required string length:
1 - 255Response
The customer object without payment method.
Response object
A customer can be either an organization or an individual
Show child attributes
Show child attributes
Related topics
Attach payment methodManaging customers payment methodsHow can my customers update their payment method?Allow customers to subscribe to my product using a payment linkZuora callouts and incoming events⌘I
