Créer un paiement

Créez un lien de paiement pour votre service

POST

https://api.fps.pro/invoices/create

Format de requêteapplication/json

amount

required

number

Montant du paiement dans la devise fiat indiquée

currency

required

string

Devise fiat acceptée (voir la liste des devises fiat)

order_id

string

ID de commande dans votre système

network

string

Vous pouvez indiquer le réseau dans lequel le paiement doit être accepté, ou laisser le champ vide pour accepter les paiements dans tout réseau disponible

webhook_link

url

URL à laquelle le statut du paiement sera renvoyé

Par défaut: merchant settings

success_link

url

URL vers laquelle le client sera redirigé après un paiement réussi

Par défaut: merchant settings

error_link

url

URL vers laquelle le client sera redirigé après un paiement échoué

Par défaut: merchant settings

part_payment

boolean

Vous pouvez autoriser ou interdire le paiement partiel d'un même paiement

Par défaut: true or merchant settings

ignore_client_amount

boolean

Si vous définissez la valeur True, tout montant payé par votre client terminera la facture avec succès

Par défaut: false or merchant settings

payment_accuracy

number

Indiquez une valeur en pourcentage de 1 à 100. Si vous définissez 5 pour un paiement de 100 $, alors un paiement client de 95 $ sera considéré comme réussi et terminé

Par défaut: 0 or merchant settings

fee

number

Valeur de 1 à 100 ajoutant des frais au paiement en pourcentage

Par défaut: 0

discount

number

Valeur de 1 à 100 appliquant le pourcentage de réduction indiqué au paiement

Par défaut: 0

additional_info

string

Toute information

auto_convert

boolean

Convertir automatiquement le paiement après réception

Par défaut: false

Format de réponsedata object

id

uuid

ID de facture

info.currency

string | null

Code de devise fiat de la facture

info.token

string | null

Token de paiement

info.network

string | null

Réseau de paiement

info.address

string | null

Adresse du portefeuille pour le paiement

amount.starting_price

number

Montant initial de la facture en fiat

amount.discount_percent

number

Montant de la remise en pourcentage

amount.merchant_fee_percent

number

Commission du marchand en pourcentage

amount.service_fee_percent

number | null

Commission de service de la plateforme en pourcentage

amount.total

number

Montant final après remise et commission

url.webhook

url | null

URL Webhook du marchand

url.success

url | null

URL de redirection après paiement réussi

url.error

url | null

URL de redirection après paiement échoué

url.payment

url

Lien de la page de paiement

options.part_payment

boolean

Indique si le paiement partiel est autorisé

options.ignore_client_amount

boolean

Indique si le montant exact du client est ignoré

options.payment_accuracy

number

Tolérance de paiement autorisée

additional.order_id

string | null

ID de commande externe

additional.info

string | null

Informations supplémentaires de la commande

status

string

Statut actuel de la facture

expired_at

string (ISO 8601, UTC)

Date d'expiration de la facture

created_at

string (ISO 8601, UTC)

Date de création de la facture

Exemples de requête

curl --request POST 'https://api.fps.pro/invoices/create' \
  --header 'Content-Type: application/json' \
  --header 'X-Client-Id: YOUR_CLIENT_ID' \
  --header 'X-Timestamp: 1720000000' \
  --header 'X-Signature: YOUR_HMAC_SHA256_SIGNATURE' \
  --data '{
  "amount": 150.75,
  "currency": "usd",
  "order_id": "ORD-1001",
  "network": "tron",
  "webhook_link": "https://merchant.example.com/webhooks/fps",
  "success_link": "https://merchant.example.com/payments/success",
  "error_link": "https://merchant.example.com/payments/error",
  "part_payment": true,
  "ignore_client_amount": false,
  "payment_accuracy": 0,
  "fee": 1.5,
  "discount": 3,
  "additional_info": "Premium subscription",
  "auto_convert": false
}'

Réponse réussie

{
  "status": 201,
  "message": "invoice created",
  "data": {
    "id": "0a718b02-138d-495a-9661-39ca52139c07",
    "info": {
      "currency": "USD",
      "token": null,
      "network": null,
      "address": null
    },
    "amount": {
      "starting_price": 1000,
      "discount_percent": 0,
      "merchant_fee_percent": 10,
      "service_fee_percent": 1,
      "total": 1100
    },
    "url": {
      "webhook": "https://merchant.example/webhook",
      "success": "https://merchant.example/success",
      "error": "https://merchant.example/error",
      "payment": "https://frontend.example/0a718b02-138d-495a-9661-39ca52139c07"
    },
    "options": {
      "part_payment": true,
      "ignore_client_amount": false,
      "payment_accuracy": 0
    },
    "additional": {
      "order_id": "1",
      "info": ""
    },
    "status": "init",
    "expired_at": "2026-01-05 14:30:43",
    "created_at": "2026-01-05T13:30:43.000Z"
  }
}

Erreurs

La liste détaillée des erreurs d'autorisation se trouve dans Autorisation - Erreurs

{
  "status": 422,
  "message": "Validation Error",
  "errors": [
    {
      "field": "currency",
      "message": "currency is required"
    }
  ]
}
{
  "status": 500,
  "message": "Internal Server Error"
}