Accept crypto payments with payitgo
payitgo is a crypto payment gateway. Your server creates a payment, your customer pays it in stablecoins or crypto on a checkout page, and payitgo tells your server, with a signed notification (IPN), when the money has arrived and is final. The money is then sent to your own wallet, or kept in your payitgo balance until you withdraw it.
Base URL: https://api.payitgo.co
How a payment flows
your server payitgo your customer
│ │ │
│ 1. POST /v1/payments │ │
│─────────────────────▶│ │
│◀─ payment + checkout_url │
│ │ │
│ 2. redirect to checkout_url ────────────────────────▶│
│ │◀──── 3. pays to the address ──│
│ │ (watches the chain) │
│◀─ 4. webhook: payment.detecting │
│◀─ 4. webhook: payment.confirmed │
│ 5. verify signature, mark the order paid, answer 200 │
│ │ │
│◀─ 6. webhook: settlement.completed (money in your wallet)
- Your server creates a payment with
POST /v1/payments: your order id, the amount in US dollars and, if you like, the coin. payitgo returns a payment with a one-time deposit address, the exact crypto amount at a locked rate, and acheckout_url. - You send the customer to
checkout_url(or show the address, amount and QR code on your own page). They have 15 minutes to pay once the coin is set. - The customer pays. payitgo watches the chain: the payment becomes
detectingas soon as the money is seen, andconfirmedonce the network has enough confirmations. - payitgo notifies your server with a webhook (IPN) at each step, signed with your webhook secret.
- Your server verifies the signature and, on
payment.confirmed, marks the order paid. - The money is settled, less payitgo's service fee and the network fee: sent to your wallet within minutes (direct settlement), or added to your balance (custody).
Webhooks are payitgo's IPN
If you know them as IPNs: yes, payitgo has IPNs and a signing key.
payitgo's webhooks are its IPN, and the webhook secret is the
signing key. Every notification carries an X-Webhook-Signature header, an
HMAC-SHA256 you check with that secret. Each mode (test, live) has one webhook
URL and one secret, and each payment can name its own webhook_url, a
callback URL for that payment alone. See Webhooks (IPN).
Test mode and live mode
Every account has a test key and a live key:
| Key | Mode | Money | Webhook |
|---|---|---|---|
| Test key | Test | No coins: you simulate what the customer pays, nothing real moves | The test webhook URL and its own secret |
| Live key | Live | Real coins on mainnet | The live webhook URL and its own secret |
A key's text does not say its mode: the dashboard shows each key with a Test
or Live badge, and the key object's livemode says it
(Authentication).
The API is the same in both: build and test your whole integration with the test key, then swap in the live key and the live webhook secret. New accounts start in test mode; the account owner turns live mode on when ready. See Test mode.
Supported coins
USDT (Tron, Ethereum, BNB Smart Chain), USDC (Ethereum, BNB Smart Chain), TRX, ETH, BNB, BTC, LTC, DOGE and XRP, in both modes. See Currencies for minimums and confirmation times.
Where to find what
| I want to… | Read |
|---|---|
| Take my first test payment, end to end | Quickstart |
| Use a library (Node.js, Python, PHP, Go, Dart) | Libraries |
| Send my API key correctly, manage keys | Authentication |
| Know every field of a payment, every status, every error | Payments |
| Send customers to the hosted page | Checkout |
| Show the checkout in a modal in my React app | React checkout widget |
| Show the amount, address and QR code on my own page, in my own design | Your own payment page |
| Receive and verify IPN notifications | Webhooks (IPN) |
| Know which coins and networks are supported | Currencies |
| Understand fees, minimums and where my money goes | Fees and settlement |
| Test every scenario before going live | Test mode |
| Manage my team, settings, balances and payouts | Account and team |
| Handle errors, rate limits and retries | Errors and limits |
Every page is also available as Markdown: add .md to its address, for
example /docs/payments.md.