Customer Enrollment & KYC
Delete Customer
Close a customer profile enrolled in error.
DELETE /v1/customer/:uuid
This is a soft delete: the record and its KYC trail are retained for audit purposes, but the customer stops resolving requests via the public API and can no longer be granted KYC, accounts, cards, or cross-border transfers.
Use this endpoint to
- Close a customer profile that was enrolled by mistake or is a duplicate
- Free up a
customerid/email/phone so you can re-enroll the person correctly
Request
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
uuid |
string | Yes | Customer id from Enroll Customer |
Important: Any unfunded accounts the customer holds are closed with them. Accounts that have already received funds, or cards that aren't terminated, block the delete — see Errors below.
Code Samples
const response = await fetch(
"https://sandbox.hitchpay.ng/v1/customer/CUSTOMER_UUID",
{
method: "DELETE",
headers: { Authorization: "Bearer YOUR_ACCESS_TOKEN" }
}
);
const data = await response.json();
console.log(data);<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://sandbox.hitchpay.ng/v1/customer/CUSTOMER_UUID",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_ACCESS_TOKEN"
]
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import requests
url = "https://sandbox.hitchpay.ng/v1/customer/CUSTOMER_UUID"
headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
response = requests.delete(url, headers=headers)
print(response.json())Response
{
"status": "success",
"message": "Customer deleted successfully.",
"data": {
"uuid": "…",
"customerid": "your-customer-ref-001",
"deleted": true,
"accounts_closed": 1
}
}Fields
| Field | Type | Description |
|---|---|---|
uuid |
string | Customer id |
customerid |
string | Your reference — now freed up for re-enrollment |
deleted |
boolean | Always true on success |
accounts_closed |
number | Count of unfunded accounts closed as part of this delete |
Behavior notes
- Soft delete — the record and its KYC trail are kept for audit, but the customer stops resolving over the public API.
- The customer's
customerid, email, and phone are freed up so you can re-enroll the person correctly. - Fires the
customer.deletedwebhook. - Money in flight is never dropped: inflows that land on an already-issued account after deletion are still credited to your wallet.
Errors
| Code | HTTP | Meaning |
|---|---|---|
UNAUTHORIZED |
401 | Business not found or inactive |
NOT_FOUND |
404 | Customer not found |
CUSTOMER_HAS_CARDS |
409 | The customer has a card that isn't terminated — terminate it first via Terminate Card |
CUSTOMER_HAS_ACTIVITY |
409 | The customer has an account that has already received funds — contact support to close it |
Questions? Email [email protected]. Also on GitBook.