# Clients
Source: https://docs.lomi.africa/build/platform/customers

Gérez les profils clients et consultez leur historique de paiement.

***

title: Clients
description: Gérez les profils clients et consultez leur historique de paiement.
--------------------------------------------------------------------------------

import { Tabs, Tab } from 'fumadocs-ui/components/tabs';

L’API Customers permet de créer, consulter, mettre à jour et gérer les profils clients liés à votre compte marchand.

## Créer un client

**Référence API (schéma complet) :** [Créer un client](/api/customers/CustomersController_create)

**L’essentiel :** `name` est obligatoire. Passez `email`, `phone_number`, `whatsapp_number`, l’adresse, `is_business` et `metadata` pour le préremplissage checkout et votre CRM.

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    import { LomiSDK } from '@lomi./sdk';

    const lomi = new LomiSDK({
      apiKey: process.env.LOMI_SECRET_KEY!,
      environment: 'live',
    });

    const customer = await lomi.customers.create({
      name: 'Amadou Ba',
      email: 'amadou.ba@example.com',
      phone_number: '+221771234567',
      country: 'Senegal',
      city: 'Dakar',
      is_business: false,
      metadata: {
        internal_id: 'USER_123',
      },
    });

    console.log(`Customer created: ${customer.id}`);
    ```
  </Tab>

  <Tab value="Python">
    ```python
    from lomi import LomiClient
    import os

    client = LomiClient(
        api_key=os.environ["LOMI_SECRET_KEY"],
        environment="test"
    )

    customer = client.customers.create({
        "name": "Amadou Ba",
        "email": "amadou.ba@example.com",
        "phone_number": "+221771234567",
        "country": "Senegal",
        "city": "Dakar",
        "is_business": False,
        "metadata": {"internal_id": "USER_123"}
    })

    print(f"Customer created: {customer['id']}")
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X POST "https://api.lomi.africa/customers" \
      -H "X-API-KEY: $LOMI_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Amadou Ba",
        "email": "amadou.ba@example.com",
        "phone_number": "+221771234567",
        "country": "Senegal",
        "city": "Dakar",
        "is_business": false,
        "metadata": {"internal_id": "USER_123"}
      }'
    ```
  </Tab>
</Tabs>

***

## Lister les clients

**Référence API :** [Lister les clients](/api/customers/CustomersController_findAll), `search`, `type`, `status`, `page` et `pageSize`.

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    const customers = await lomi.customers.list({
      search: 'amadou',
      type: 'individual',
      status: 'active',
      page: 1,
      pageSize: 20,
    });
    ```
  </Tab>

  <Tab value="Python">
    ```python
    customers = client.customers.list(
        search="amadou",
        type="individual",
        status="active",
        page=1,
        pageSize=20
    )
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X GET "https://api.lomi.africa/customers?search=amadou&type=individual&page=1&pageSize=20" \
      -H "X-API-KEY: $LOMI_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Réponse

```json
{
  "customers": [...],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalCount": 150,
    "totalPages": 8
  }
}
```

***

## Obtenir un client

**Référence API :** [Obtenir un client](/api/customers/CustomersController_findOne)

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    const customer = await lomi.customers.get('cus_abc123...');
    ```
  </Tab>

  <Tab value="Python">
    ```python
    customer = client.customers.get('cus_abc123...')
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X GET "https://api.lomi.africa/customers/cus_abc123..." \
      -H "X-API-KEY: $LOMI_SECRET_KEY"
    ```
  </Tab>
</Tabs>

***

## Mettre à jour un client

**Référence API :** [Mettre à jour un client](/api/customers/CustomersController_update), tous les champs du corps sont facultatifs.

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    const updated = await lomi.customers.update('cus_abc123...', {
      email: 'new.email@example.com',
      metadata: { vip: true },
    });
    ```
  </Tab>

  <Tab value="Python">
    ```python
    updated = client.customers.update('cus_abc123...', {
        "email": "new.email@example.com",
        "metadata": {"vip": True}
    })
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X PATCH "https://api.lomi.africa/customers/cus_abc123..." \
      -H "X-API-KEY: $LOMI_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"email": "new.email@example.com"}'
    ```
  </Tab>
</Tabs>

***

## Supprimer un client

**Référence API :** [Supprimer un client](/api/customers/CustomersController_remove)

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    await lomi.customers.delete('cus_abc123...');
    ```
  </Tab>

  <Tab value="Python">
    ```python
    client.customers.delete('cus_abc123...')
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X DELETE "https://api.lomi.africa/customers/cus_abc123..." \
      -H "X-API-KEY: $LOMI_SECRET_KEY"
    ```
  </Tab>
</Tabs>

***

## Transactions d’un client

**Référence API :** [Transactions client](/api/customers/CustomersController_getTransactions)

<Tabs items={["TypeScript", "Python", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    const transactions = await lomi.customers.getTransactions('cus_abc123...');

    transactions.forEach(tx => {
      console.log(`${tx.description}: ${tx.gross_amount} ${tx.currency_code}`);
    });
    ```
  </Tab>

  <Tab value="Python">
    ```python
    transactions = client.customers.get_transactions('cus_abc123...')

    for tx in transactions:
        print(f"{tx['description']}: {tx['gross_amount']} {tx['currency_code']}")
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X GET "https://api.lomi.africa/customers/cus_abc123.../transactions" \
      -H "X-API-KEY: $LOMI_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Réponse

```json
[
  {
    "transaction_id": "tx_def456...",
    "description": "Payment for Product A",
    "gross_amount": 10000,
    "currency_code": "XOF",
    "status": "completed",
    "created_at": "2024-01-15T10:30:00Z"
  }
]
```

***

## Créer une session de lancement portail client

**Référence API :** [Session de lancement portail](/api/customers/CustomersController_createPortalSession)

Génère une URL portail hébergée à usage unique depuis votre backend. Retourne `launch_url` pour la redirection. Voir [Portail client](/build/billing/customer-portal) pour les flux, la sécurité et la configuration production.

<Tabs items={["TypeScript", "cURL"]}>
  <Tab value="TypeScript">
    ```typescript
    import axios from 'axios';

    const { data: launch } = await axios.post(
      'https://api.lomi.africa/customers/cus_abc123.../portal',
      {
        return_url: 'https://merchant.example.com/account',
        flow_type: 'subscription_cancel',
        flow_subscription_id: 'sub_abc123...',
        flow_after_completion_url:
          'https://merchant.example.com/account/subscription-cancelled',
      },
      {
        headers: {
          'X-API-KEY': process.env.LOMI_SECRET_KEY!,
          'Content-Type': 'application/json',
        },
      },
    );

    window.location.href = launch.launch_url;
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -X POST "https://api.lomi.africa/customers/cus_abc123.../portal" \
      -H "X-API-KEY: $LOMI_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "return_url": "https://merchant.example.com/account",
        "flow_type": "subscription_cancel",
        "flow_subscription_id": "sub_abc123...",
        "flow_after_completion_url": "https://merchant.example.com/account/subscription-cancelled"
      }'
    ```
  </Tab>
</Tabs>

***

## API associée

* [Créer un client](/api/customers/CustomersController_create)
* [Lister les clients](/api/customers/CustomersController_findAll)
* [Obtenir un client](/api/customers/CustomersController_findOne)
* [Mettre à jour un client](/api/customers/CustomersController_update)
* [Supprimer un client](/api/customers/CustomersController_remove)
* [Transactions client](/api/customers/CustomersController_getTransactions)
* [Session de lancement portail](/api/customers/CustomersController_createPortalSession)
* [Guide portail client](/build/billing/customer-portal)
