Create payment

Create a payment link for paying for your service

POST

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

Request formatapplication/json

amount

required

number

Payment amount in the selected fiat currency

currency

required

string

Accepted fiat currency (see the fiat list)

order_id

string

Order ID in your system

network

string

You can specify the network where payment must be accepted, or leave the field empty to accept payment in any available network

webhook_link

url

URL where the payment status will be returned

Default: merchant settings

success_link

url

URL where the client will be redirected after a successful payment

Default: merchant settings

error_link

url

URL where the client will be redirected after an unsuccessful payment

Default: merchant settings

part_payment

boolean

You can allow or prohibit partial payment within a single payment

Default: true or merchant settings

ignore_client_amount

boolean

If you set this value to True, any amount paid by your client will successfully complete the invoice

Default: false or merchant settings

payment_accuracy

number

Specify a percentage value from 1 to 100. If you set 5 for a $100 payment, then when the client pays $95, the payment will be considered successful and completed

Default: 0 or merchant settings

fee

number

A value from 1 to 100 that adds a percentage-based fee to the payment

Default: 0

discount

number

A value from 1 to 100 that applies the specified discount percentage to the payment

Default: 0

additional_info

string

Any information

auto_convert

boolean

Automatically convert the payment after it is received

Default: false

Response formatdata object

id

uuid

Invoice ID

info.currency

string | null

Fiat currency code of the invoice

info.token

string | null

Payment token

info.network

string | null

Payment network

info.address

string | null

Wallet address for payment

amount.starting_price

number

Initial invoice amount in fiat

amount.discount_percent

number

Discount amount as a percentage

amount.merchant_fee_percent

number

Merchant fee as a percentage

amount.service_fee_percent

number | null

Platform service fee as a percentage

amount.total

number

Final amount after discount and fee

url.webhook

url | null

Merchant Webhook URL

url.success

url | null

Redirect URL after successful payment

url.error

url | null

Redirect URL after failed payment

url.payment

url

Payment page link

options.part_payment

boolean

Whether partial payment is allowed

options.ignore_client_amount

boolean

Whether the exact client amount is ignored

options.payment_accuracy

number

Allowed payment tolerance

additional.order_id

string | null

External order ID

additional.info

string | null

Additional order information

status

string

Current invoice status

expired_at

string (ISO 8601, UTC)

Invoice expiration date

created_at

string (ISO 8601, UTC)

Invoice creation date

Request examples

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
}'

Successful response

{
  "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"
  }
}

Errors

Detailed authorization errors are listed in Authorization - Errors

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