No sign up needed  ·  No account needed  ·  No API keys
GatePayGatePay
GatePay/API Docs
Base URL: api.gatepay.to
Developer Reference

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

1

Your server calls the API with your wallet address

2

API returns an encrypted address + tracking token

3

You redirect customer to the checkout URL

4

Customer pays via card, crypto or bank transfer

5

GatePay sends a webhook to your callback URL

6

You mark the order as paid

Generate Payment Address

Step 1
GET/control/wallet.php

Generates 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

ParameterTypeDescription
addressrequiredstringYour USDC wallet address (0x format). Must be different from any affiliate wallet.
callbackrequiredstringYour 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 2

Once 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}
  &currency={currency}
  &provider=hosted
  &email={customer_email}

Parameters

ParameterTypeDescription
addressrequiredstringThe encrypted address_in from Step 1.
amountrequirednumberPayment amount (e.g. 49.99).
currencyrequiredstringISO currency code: USD, EUR, GBP, CAD, AUD, SEK, INR, MXN, BRL.
providerstringAlways hosted — shows all available payment methods.
emailrequiredstringCustomer email address. Required by the checkout.

Example

https://checkout.gatepay.to/pay.php?address=3a8f92bc...&amount=49.99&currency=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 3
GET/control/payment-status.php

Check 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

ParameterTypeDescription
ipn_tokenrequiredstringThe 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 4

When a payment is confirmed, GatePay sends a POST request to the callback URL you provided in Step 1. Use this to automatically fulfil orders.

POSTyour callback URL

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.