> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulse-sell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout

> Créez un lien de paiement pour un produit, avec code promo.

Permission : `checkout.write`. Compteur de débit séparé (100 par minute). Guide : [Checkout](https://docs.pulse-sell.com/guides/checkout.md).

## Créer un lien de paiement

`POST /checkout` — `201`

Renvoie l'adresse de la page de paiement hébergée de la boutique. Aucune donnée de carte ne passe par l'API.

| Champ | Requis | Description |
| - | - | - |
| `product_id` | oui | Un produit **publié** de la boutique. |
| `variant_id` | non | Variante du produit. |
| `quantity` | non | Entier de 1 à 100 (défaut 1). |
| `discount_code` | non | Code promo, vérifié avant la création du lien : `422 invalid_discount_code` s'il est inconnu, inactif, expiré ou épuisé. |
| `customer` | non | `email`, `first_name`, `last_name`, `phone` : préremplit le paiement. |
| `ps_ref` | non | Référence libre (80 caractères). |
| `utm_source`, `utm_medium`, `utm_campaign` | non | Suivi marketing. |

```bash cURL theme={null}
curl -X POST https://api.pulse-sell.com/v1/checkout \
  -H "Authorization: Bearer $PULSESELL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"product_id": "cm1prod001", "quantity": 1, "discount_code": "LANCE20", "customer": {"email": "awa@example.com", "first_name": "Awa"}}'
```

```json Réponse theme={null}
{
  "data": {
    "checkout_url": "https://ma-boutique.pulse-sell.com/buy/guide-complet?promo=LANCE20",
    "product_id": "cm1prod001",
    "quantity": 1,
    "variant_id": null,
    "discount": { "code": "LANCE20", "type": "percentage", "value": 20, "discount_amount": { "value": 5, "currency": "XOF" } }
  }
}
```

`discount` vaut `null` si aucun code n'a été envoyé.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.