Skip to content
REST APIHMAC-SHA256 signed5 official SDKs

One API.
Every chain.

Invoices, payouts, withdrawals and earn through one signed REST API. Same calls on all 7 networks.

quickstart.py
from xfintrapay import FintraPay client = FintraPay( api_key="xfp_key_...", api_secret="xfp_secret_...", ) invoice = client.create_invoice( amount="100.00", currency="USDT", blockchain="tron", ) print(invoice["checkout_url"])
201 Created · example response { "id": "3f6c2a1e-…-7d0b5c9e4f21", "status": "pending", "amount": "100.00", "currency": "USDT", "blockchain": "tron", "checkout_url": "https://fintrapay.io/pay/…" } // later → webhook: invoice.paid
Authentication

Signed. Never sent.

Your API secret never crosses the wire. Every request carries an HMAC-SHA256 signature and a timestamp. Requests more than 30 seconds old are rejected, so a captured request can't be replayed. Edit the request and watch the signature change.

String to sign
1711054800\ntimestamp
POST\nmethod
/v1/invoices\npath
{"amount":"100.00","currency":"USDT","blockchain":"tron"}body
X-Signature · HMAC-SHA256, hex56abe79344ed4812766b7085a8a13e3abe417584e38e144f51284967b32d9261
X-API-Key:   xfp_key_...
X-Timestamp: 1711054800
X-Signature: 56abe79344ed4812…

Computed locally in your browser with WebCrypto. Never paste a real secret into a web page.

API overview

Every flow, one API.

Accept payments, send payouts, withdraw and earn, all through the same REST API and the same signing. Full reference in the API documentation.

Invoices

Create invoices and track status across all 7 chains.

  • POST/v1/invoices
  • GET/v1/invoices/{id}
  • GET/v1/invoices

Payouts

Pay any wallet. Single, or a batch of up to 500 recipients.

  • POST/v1/payouts
  • POST/v1/payouts/batch
  • GET/v1/payouts/{id}

Withdrawals

Move custodial balance to your registered wallet.

  • POST/v1/withdrawals
  • GET/v1/withdrawals/{id}

Refunds

Full or partial refunds on the same coin and chain.

  • POST/v1/invoices/{id}/refunds
  • GET/v1/refunds/{id}

Earn

Lock idle balance in a contract, withdraw interest, or break early.

  • POST/v1/earn/contracts
  • POST/v1/earn/contracts/{id}/withdraw-interest

Deposit addresses

Persistent addresses per end user, with no redirect.

  • POST/v1/deposit-api/users
  • POST/v1/deposit-api/users/{id}/addresses

Subscriptions

Plans and recurring billing with automatic invoices.

  • POST/v1/subscription-plans
  • POST/v1/subscriptions

Payment links

Reusable URLs with a QR code, fixed or open amount.

  • POST/v1/payment-links
  • GET/v1/payment-links

Account and balance

Profile, settings, API keys and balances.

  • GET/v1/balance
  • PATCH/v1/merchants/me/settings
SDKs

Five languages. Signing built in.

Each SDK signs requests for you and verifies webhook signatures. The client class is FintraPay in Python, Node.js, PHP and Java.

Pythonpip install fintrapay
Node.jsnpm install fintrapay
PHPcomposer require fintrapay/fintrapay-php
Gogo get github.com/Fintra-Ltd/fintrapay-go
Javaio.fintrapay:fintrapay-java
Webhooks

Know the moment it lands.

Signed webhooks for every status change. Missed one? Resend it from the dashboard.

invoice.paid

Your customer's payment has been detected on-chain.

invoice.confirmed

The network's required confirmations are reached.

invoice.underpaid

The customer sent less than the invoice amount.

invoice.expired

The invoice window closed without full payment.

Your first signed call is minutes away.

Create an account, generate an API key and send your first invoice.

Get API keys