GatePay API
Accept payments with zero signup. Use your wallet address — no API keys, no accounts, no KYC. All requests go through api.gatepay.to.
Overview
Base URL
https://api.gatepay.to
Auth
None — wallet address only
Format
JSON responses
The GatePay API works in two steps: first generate an encrypted payment address for your wallet, then redirect your customer to a checkout URL built with that address. Payments are settled in USDC to your wallet automatically.
Flow
Your server calls the API with your wallet address
API returns an encrypted address + tracking token
You redirect customer to the checkout URL
Customer pays via card, crypto or bank transfer
GatePay sends a webhook to your callback URL
You mark the order as paid
Generate Payment Address
Step 1Generates an encrypted payment address linked to your wallet. The returned address_in is used to build the checkout URL. The ipn_token is your tracking ID for this payment.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
addressrequired | string | Your USDC wallet address (0x format). Must be different from any affiliate wallet. |
callbackrequired | string | Your webhook URL. GatePay will POST payment data here when payment is confirmed. |
Example Request
curl "https://api.gatepay.to/control/wallet.php?address=0xYOUR_WALLET&callback=https://yoursite.com/webhook"
Response
{
"address_in": "3a8f92bc...", // Encrypted address — use this in the checkout URL
"ipn_token": "tok_abc123..." // Your tracking ID for this payment
}Build a Checkout URL
Step 2Once you have the address_in from Step 1, construct a checkout URL and redirect your customer to it. No API call needed — this is a plain URL.
Checkout URL Format
https://checkout.gatepay.to/pay.php
?address={address_in}
&amount={amount}
¤cy={currency}
&provider=hosted
&email={customer_email}Parameters
| Parameter | Type | Description |
|---|---|---|
addressrequired | string | The encrypted address_in from Step 1. |
amountrequired | number | Payment amount (e.g. 49.99). |
currencyrequired | string | ISO currency code: USD, EUR, GBP, CAD, AUD, SEK, INR, MXN, BRL. |
provider | string | Always hosted — shows all available payment methods. |
emailrequired | string | Customer email address. Required by the checkout. |
Example
https://checkout.gatepay.to/pay.php?address=3a8f92bc...&amount=49.99¤cy=USD&provider=hosted&email=customer@example.com
Payout: All payments settle as USDC on Polygon to your wallet address. 94% goes to your wallet, 1% to GatePay, 1% network fee.
Track Payment Status
Step 3Check the status of a payment using the ipn_token returned in Step 1. You can poll this endpoint or use it to verify webhook callbacks.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
ipn_tokenrequired | string | The tracking token returned in Step 1. |
Example Request
curl "https://api.gatepay.to/control/payment-status.php?ipn_token=tok_abc123..."
Response
{
"status": "paid", // "paid" or "unpaid"
"value_coin": "49.21", // Amount of crypto received
"txid_out": "0xabc123...", // Blockchain transaction ID
"coin": "polygon_usdc" // Payout coin and network
}You can also let your customers track payments themselves at gatepay.to/track-payment.
Webhooks (IPN)
Step 4When a payment is confirmed, GatePay sends a POST request to the callback URL you provided in Step 1. Use this to automatically fulfil orders.
Webhook Payload
{
"status": "paid",
"ipn_token": "tok_abc123...", // Match this to your order
"value_coin": "49.21", // Crypto amount received
"txid_in": "0xdef456...", // Inbound transaction ID
"txid_out": "0xabc123...", // Outbound (payout) transaction ID
"coin": "polygon_usdc", // Payout coin
"address_in": "3a8f92bc..." // The encrypted address
}Handling Webhooks
// Node.js / Express example
app.post('/webhook', (req, res) => {
const { status, ipn_token, value_coin } = req.body
if (status === 'paid') {
// Find order by ipn_token and mark as paid
fulfillOrder(ipn_token)
}
res.sendStatus(200) // Always respond 200
})Always respond 200
Respond with HTTP 200 as quickly as possible. GatePay may retry failed webhooks.
Verify with status endpoint
For critical orders, confirm payment via the status endpoint before fulfilling.
Need integration help?
Our team can help you get integrated quickly.
