The three pieces
- Your wallets. Any wallet you control (hardware wallet, Exodus, Trust Wallet, Electrum, a Tron wallet...). You give Payfim public receiving addresses only - never private keys or seed phrases.
- The Payfim gateway. A small PHP application you install on your hosting. It creates invoices, converts prices at live exchange rates, watches the blockchains and notifies your store.
- Your store plugin. The WooCommerce, WHMCS or OpenCart module that connects your checkout to the gateway with an API key.
What happens during a purchase
- Invoice. When a customer chooses crypto, your store asks your gateway (server-to-server) to create an invoice for the exact order total. Because this never passes through the customer's browser, the price cannot be tampered with.
- Quote. The customer picks a coin. Payfim locks the exchange rate for the quote period you chose (30 minutes by default) and calculates a unique amount for that invoice - for example 19.0347 USDT instead of 19.00 - so it can tell simultaneous customers apart.
- Payment. The customer scans the QR code or copies the address and amount, and sends the payment from any wallet or exchange.
- Detection. Your gateway queries the blockchain (Bitcoin through mempool.space, TRON through TronGrid, Ethereum through Etherscan, and so on). When it sees a matching transaction it reserves that transaction hash so it can never be used for another invoice.
- Confirmation. Payfim waits for the number of confirmations you set for that coin, then marks the invoice paid.
- Notification. Your gateway sends a webhook signed with HMAC-SHA256. The store plugin verifies it, double-checks the invoice with the gateway, and marks the order paid.
Where the money goes
Directly from the customer's wallet to yours, on the blockchain. Payfim is software, not a payment institution: it never receives, holds or forwards funds. That is why there are no payout schedules, reserves or withdrawal limits.
What if something goes wrong?
- Customer underpays: the invoice becomes Underpaid and your store puts the order on hold with a note of the amount received.
- Customer pays late: payments broadcast right at the deadline are still detected during a short grace period; after that the quote expires and the customer can request a fresh one.
- Your store was offline: Payfim retries webhooks automatically for up to 24 hours, and you can resend any webhook from the invoice page.
- Something needs a human: mark any invoice paid or cancelled manually from the dashboard; the store is notified the same way.
