You provide a public wallet address → payfjord reads blockchain data → detects the transaction → your website checks the status whenever it likes.
Order
Top up 11 USDT
Here is why these websites picked payfjord over a gateway that holds their funds.
From 0.25% of the amount actually received. No monthly fee, no invoice-creation fee, no withdrawal fee — money lands in your wallet directly, so there is nothing to withdraw.
One call to create an invoice, one to check status. Endpoint and field names match FPayment exactly, so migrating usually means changing a domain and an API key.
We never ask for your wallet's private key — there is nowhere to even enter one. Callbacks are signed with HMAC-SHA256 and Binance keys are stored AES-256-GCM encrypted.
Connect as many websites as you like to one account, each as its own store — no risk of one site's revenue getting mixed into another's.
Paid late, wrong decimals, or sent straight to your wallet without an invoice — every case is logged with its blockchain transaction hash so you can still credit the right customer.
3 unmatched payments
Money arrived in your wallet but matched no invoice.
Manual matching is free — you did the work.
Customers pick their network on the checkout page. Whichever networks you enable are the ones they see — no code changes needed.
Create an account, enter a wallet address, try a real invoice. No card, no contract, and nothing to pay until your first successful transaction.
Support will never ask for your wallet's private key or your API secret.
1USDT
trial credit, granted when you create your first store
Everything you have to write fits on the screen below. No SDK, no complicated webhooks.
// Your site calls this when the customer clicks pay$curl = curl_init();curl_setopt_array($curl, array( CURLOPT_URL => "https://payfjord.com/api/AddInvoice", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => array( 'merchant_id' => "M368470373", 'api_key' => "pk_...", 'name' => 'Top up on your website', 'amount' => '12', 'request_id' => 'don_hang_48127', 'callback_url' => 'https://website-cua-ban.com/callback', ),)); $result = json_decode(curl_exec($curl), true);// → send the customer to the payment pageheader("Location: " . $result['data']['url_payment']);Pass callback_url and we call you back when the invoice is done. If you cannot expose an endpoint, keep trans_id and ask /api/GetInvoiceStatus at any time.