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

# Liens de paiement

> Créez un lien de paiement réutilisable, à partager par email, SMS ou sur votre site.

Toutes les routes de ce groupe nécessitent le header `Authorization: Bearer sk_...` et un scope de clé API `PAYIN` ou `BOTH` à la création.

## Vue d'ensemble

Un lien de paiement est **réutilisable** — contrairement à une [session de checkout](/api-reference/payments/checkout-create), qui est à usage unique, un même lien peut générer un nombre illimité (ou limité via `usage_limit`) de `Transaction` au fil du temps :

```
PaymentLink ("Facture boutique", slug: kx7f2q1a)
│
├── amount_type: "FIXED"  → montant imposé (amount)
│   ou
├── amount_type: "FREE"   → le client choisit (min_amount optionnel comme plancher)
│
└── transactions[] ── une par paiement effectué via ce lien
```

* [Créer un lien de paiement](/api-reference/payment-links/create)
* [Lister ses liens](/api-reference/payment-links/list)
* [Détail d'un lien](/api-reference/payment-links/get)
* [Modifier un lien](/api-reference/payment-links/update)
* [Supprimer un lien](/api-reference/payment-links/delete)
* [Transactions issues d'un lien](/api-reference/payment-links/transactions)

## Montant fixe ou libre

| `amount_type`    | Comportement                                                            |
| ---------------- | ----------------------------------------------------------------------- |
| `FIXED` (défaut) | Le client paie exactement `amount`                                      |
| `FREE`           | Le client choisit son montant ; `min_amount` fixe un plancher optionnel |

<Warning>
  Aucune validation croisée n'est appliquée côté serveur entre `amount_type` et `amount` : rien n'empêche de créer un lien `amount_type: "FIXED"` sans `amount` renseigné. Vérifiez la cohérence de ces deux champs côté intégrateur avant de créer le lien.
</Warning>

## `merchant` non réassignable

Le champ `merchant` est résolu à la création (votre clé API elle-même, ou le marchand actif du dashboard) et reste en lecture seule pour toute mise à jour ultérieure — un `PATCH`/`PUT` ne peut jamais réattribuer un lien existant à un autre marchand.

## Retrouver les paiements d'un lien

[`GET /payment-links/{id}/transactions/`](/api-reference/payment-links/transactions) retourne les `Transaction` générées par ce lien précis.

<Warning>
  Cette vue n'accepte **aucun filtre ni recherche** — contrairement à [`GET /transactions/`](/api-reference/transactions/list), qui supporte `status`, `currency`, plages de dates, etc. Seul le lien lui-même filtre le résultat. Elle utilise aussi une pagination par numéro de page classique (`count`/`next`/`previous`), pas la pagination par curseur de `/transactions/` — une incohérence entre les deux endpoints à garder en tête si vous consommez les deux.
</Warning>

<Warning>
  `POST /payment-links/` n'exige pas de header `Idempotency-Key` (dette technique connue) — un double-clic ou un retry réseau non protégé peut créer deux liens de paiement distincts.
</Warning>
