Skip to main content

Overview

NanoGPT supports multiple deposit methods (crypto, stablecoins, and cards). This page documents the public endpoints you can use to:
  • Create a deposit payment intent
  • Check deposit limits
  • Track deposit status (polling or SSE)
Deposits are credited automatically after payment confirmation.

Supported Payment Methods

Limits vary by method and can change. Use GET /api/transaction/limits/{ticker} for the authoritative min/max.

Crypto (invoice / address)

TickerNameProvider
BTCBitcoinBTCPay
BTC-LNBitcoin LightningBTCPay
LTCLitecoinBTCPay
LTC-MWEBLitecoin MWEBBTCPay
XMRMoneroBTCPay
DOGEDogecoinBTCPay
DASHDashBTCPay
ZECZcashBTCPay
BCHBitcoin CashPrompt.Cash
BANBananoNanswap (legacy)
KASKaspaNanswap
TONToncoinNanswap
NEARNEAR ProtocolNanswap
EGLDMultiversXNanswap
VVVVVVNanswap
ZANOZanoZano proxy
FUSDFreedom DollarZano proxy

Stablecoins and multi-chain (Daimo Pay)

These methods settle as USDC and can be paid from multiple chains/wallets.
TickerName
USDCUSD Coin
USDTTether
ETHEthereum
SOLSolana

Fiat (card)

TickerNameProvider
USDUS DollarStripe
EUREuroStripe
GBPBritish PoundStripe

Nano (direct deposit)

Nano deposits use a direct-send flow to your assigned Nano deposit address (no invoice creation). See: Check Balance and Receive Nano.

Authentication

All /api/transaction/* endpoints require API key authentication using one of these methods:
# Method 1: Authorization header
curl -H "Authorization: Bearer YOUR_API_KEY"

# Method 2: x-api-key header  
curl -H "x-api-key: YOUR_API_KEY"

Endpoint Summary

Pick the endpoint based on the payment method:
  • Crypto invoice / swap deposits: POST /api/transaction/create/{ticker}
  • Daimo Pay (multi-chain): POST /api/transaction/create/daimo/{ticker}
  • Card (Stripe): POST /api/transaction/create/usd
  • Limits: GET /api/transaction/limits/{ticker}
  • Status polling: GET /api/transaction/status/{ticker}/{txId}
  • Status SSE: GET /api/transaction/status/events?ticker={ticker}&txId={txId}
  • Nano (XNO): send to nanoDepositAddress (from Check Balance); optionally call Receive Nano

Create Crypto Deposit

Create an invoice / pay-in address for supported crypto tickers
ticker
string
required
Ticker symbol. Examples: btc, btc-ln, ltc, zec, bch, kas, vvv, zano, fusd
amount
number
required
Amount of cryptocurrency to deposit. Must be between minimum and maximum limits.
curl -X POST https://nano-gpt.com/api/transaction/create/btc \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 0.001}'
{
  "txId": "abc123",
  "address": "bc1q...",
  "amount": 0.001,
  "status": "New",
  "paymentLink": "bitcoin:bc1q...?amount=0.001",
  "createdAt": "2026-01-19T12:00:00.000Z",
  "expiresAt": "2026-01-19T13:00:00.000Z"
}

Response Fields

txId
string
Unique transaction identifier for tracking
address
string
Deposit address for sending crypto
amount
number
Requested deposit amount
status
string
Payment status. Common values include: New, Pending, Processing, Paid, Completed, Expired, Failed
URI for wallet apps (e.g., bitcoin:address)
createdAt
string
ISO timestamp of creation
expiresAt
string
ISO timestamp when address expires

Check Payment Limits

Get minimum and maximum deposit amounts for a payment method
ticker
string
required
Payment method ticker symbol (for example: btc, btc-ln, zec, usdc, sol, usd)
curl https://nano-gpt.com/api/transaction/limits/kas \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "minimum": 10.5,
  "maximum": 5250,
  "fiatEquivalentMinimum": 1,
  "fiatEquivalentMaximum": 500,
  "timestamp": 1705669200
}

Create Daimo Payment

Create a multi-chain payment (USDC/USDT/ETH/SOL) via Daimo Pay
ticker
string
required
Daimo payment ticker. Common values: usdc, usdt, eth, sol
amount
number
required
Amount to pay. This is typically treated as a USD/USDC amount (for example, 10 for about $10).
curl -X POST https://nano-gpt.com/api/transaction/create/daimo/usdc \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 10}'
{
  "paymentId": "encrypted_payment_id"
}

Create Card Deposit (Stripe)

Create a Stripe Checkout session for card deposits
amount
number
required
Amount in the selected fiat currency (for example, 10).
curl -X POST https://nano-gpt.com/api/transaction/create/usd \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 10}'
{
  "paymentLink": "https://checkout.stripe.com/c/pay/cs_test_..."
}

Status Tracking

Most deposit methods can be tracked by polling a status endpoint:
GET /api/transaction/status/{ticker}/{txId}
Some methods use provider-specific IDs (for example Stripe session IDs). The create response usually returns the correct txId value to use. Example:
curl "https://nano-gpt.com/api/transaction/status/btc/abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"

Real-time status (SSE)

Instead of polling, you can subscribe to Server-Sent Events:
GET /api/transaction/status/events?ticker={ticker}&txId={txId}
Example:
curl -N "https://nano-gpt.com/api/transaction/status/events?ticker=btc&txId=abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"
The server may also return an x-poll-after header on status responses to indicate a recommended retry interval (seconds).

Transaction Lifecycle

Status values can vary slightly by payment method, but a typical lifecycle looks like:
StatusMeaning
New / PendingDeposit created, awaiting payment
ProcessingPayment detected and being confirmed/processed
PaidPayment confirmed, crediting pending
CompletedBalance credited
ExpiredPayment window expired (some providers can still credit late payments)
FailedProvider error or processing failure
Notes:
  • BTC deposits can take longer to reach Completed due to on-chain settlement/confirmations.
  • Some providers may accept payment after an invoice expires; in those cases the deposit can still complete.

Payment Providers

NanoGPT uses different providers per ticker:
  • BTCPay: BTC, BTC-LN, LTC, LTC-MWEB, XMR, DOGE, DASH, ZEC
  • Prompt.Cash: BCH
  • Nanswap: BAN, KAS, TON, NEAR, EGLD, VVV
  • Zano proxy: ZANO, FUSD
  • Daimo Pay: USDC, USDT, ETH, SOL (multi-chain payments settling as USDC)
  • Stripe: card deposits (USD/EUR/GBP)
  • Native Nano: XNO direct deposits to your nanoDepositAddress

Pricing Endpoints

These endpoints are commonly used by deposit flows and checkout UIs:
  • GET /api/get-nano-price (NANO/USD pricing)
  • GET /api/get-fiat-prices (fiat FX rates)
Example:
curl "https://nano-gpt.com/api/get-nano-price"
curl "https://nano-gpt.com/api/get-fiat-prices"
Example responses:
// GET /api/get-nano-price
{
  "pair": "NANOUSD",
  "latestPrice": 1.23
}
// GET /api/get-fiat-prices
{
  "usdTo": {
    "USD": 1,
    "EUR": 0.92,
    "GBP": 0.79
  },
  "currencies": {
    "USD": "United States Dollar",
    "EUR": "Euro",
    "GBP": "British Pound"
  }
}

Bonuses and Discounts

  • BTC-LN: Lightning deposits may include a bonus on the credited amount (if enabled).
  • XNO: Paying with Nano balance may include a usage discount (if enabled).
  • USDC via Daimo: USDC stablecoin deposits typically credit close to $1 per 1 USDC.

Error Handling

HTTP Status Codes

CodeDescription
200Success
400Invalid amount, unsupported ticker, or below/above limits
401Authentication failure
429Rate limited
500Provider unavailable or internal error

Common Error Messages

  • "No amount specified" - Missing amount in request body
  • "Invalid amount. Must be a positive number." - Amount validation failed
  • "Minimum amount is X" - Below minimum threshold
  • "Maximum amount is X" - Above maximum threshold
  • "Unsupported ticker" - Ticker not supported
  • "This payment method is currently not available" - Provider temporarily unavailable

Rate Limits

  • 10 requests per 10 minutes per IP address or API key
  • Rate limit applies to all deposit creation endpoints

Payment Flow

1

Create Invoice

Call /api/transaction/create/{ticker} with desired amount
2

Get Address

Extract address from response
3

Send Payment

User sends crypto to the provided address
4

Auto-Credit

Account balance automatically updated when payment confirms