Skip to content

Erase a customer

POST
/customers/{id}/erase
curl --request POST \
--url https://example.com/customers/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/erase \
--header 'Content-Type: application/json' \
--cookie bottle.session_token=<bottle.session_token> \
--data '{ "reason": "request" }'

The personal details go and the money stays: the customer row survives with its name blanked, addresses are cleared, and orders keep what was charged, which is a record HMRC expects a business to keep for six years. A customer on legal hold is refused. This cannot be undone.

id
required

UUID v7

string format: uuid
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

Media typeapplication/json
object
reason
string
default: request
Allowed values: request retention

Erased

Media typeapplication/json
object
id
required

UUID v7

string format: uuid
subject
required
string
Allowed values: customer user
subjectId
required
string
reason
required
string
Allowed values: request retention
requestedBy
required
string | null
addressesErased
required
integer
ordersKept
required
integer
ordersDeleted
required
integer
subjectDeleted
required
boolean
createdAt
required
string format: date-time
Example
{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"subject": "customer",
"reason": "request"
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not a member, or without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Not found

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

On legal hold

Media typeapplication/json
object
error
required
string
message
required
string
Example
{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string
Example
{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}