> For the complete documentation index, see [llms.txt](https://qosic.gitbook.io/qospay/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qosic.gitbook.io/qospay/merchant-api/discovery/customer-validation.md).

# customer validation

Utilisez la validation client avant tout parcours opérateur nécessitant la vérification du destinataire ou de l’abonné.

```http
POST /api/v1/payment/funds-transfer/product/customer/details HTTP/1.1
Host: api.example.com
Authorization: Bearer <access-token>
Accept: application/json
Content-Type: application/json

{
  "customerId": "12345678901",
  "operatorId": "ELECTRICITY",
  "productCode": "ELEC_PREPAID"
}
```

```bash
curl --request POST "https://api.example.com/api/v1/payment/funds-transfer/product/customer/details" \
  --header "Authorization: Bearer ${QOS_ACCESS_TOKEN}" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "customerId": "12345678901",
    "operatorId": "ELECTRICITY",
    "productCode": "ELEC_PREPAID"
  }'
```

## Champs de la requête

| Champ         | Obligatoire       | Description                                                                                                                                                                 |
| ------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `customerId`  | Oui               | Identifiant client attendu par le provider : numéro de compte, numéro de compteur, numéro de carte à puce ou identifiant d’abonné.                                          |
| `operatorId`  | Oui               | Opérateur retourné par la découverte.                                                                                                                                       |
| `productCode` | Selon le provider | Produit retourné par la découverte des produits. Il est obligatoire pour la recherche de compte Sayswitch et généralement requis pour les factures basées sur des produits. |

Pour une recherche de nom de compte bancaire, utilisez le numéro de compte du bénéficiaire comme `customerId`, l’opérateur de transfert comme `operatorId` et le code banque retourné par la découverte des produits comme `productCode`.

## Réponse réussie — HTTP 200

```json
{
  "data": {
    "customerName": "JOHN DOE",
    "productName": "Prepaid Electricity",
    "productDescription": "Prepaid meter token",
    "outstandingAmount": "5000"
  },
  "message": "Success",
  "success": true,
  "responseCode": "00"
}
```

Tous les champs de `data` peuvent être `null` lorsque le provider ne les renvoie pas. Affichez le nom du client retourné afin que l’utilisateur puisse le confirmer, mais ne modifiez pas le format fourni par le provider et n’initiez pas l’opération si le nom ou l’identifiant n’est pas accepté par l’utilisateur final.

{% hint style="info" %}
Les erreurs courantes incluent `Customer Id is required`, `Operator Id is required`, `Product code is required`, `Operator not found`, `Could not validate customer details at this time` ainsi que des messages de validation propres au provider.
{% endhint %}
