Base URLs & Request Format

Base URLs

EnvironmentURLUse Case
Productionhttps://api.inflowpay.xyzLive transactions
Sandboxhttps://sandbox.api.inflowpay.comIntegration testing — request access from Inflow
Card Paymentshttps://api-card.inflowpay.comOptional PCI-scoped host for server-to-server card capture only (POST /api/server/payment)

api-card.inflowpay.com is a separate base URL documented on the server-to-server payment endpoints in the API reference — use it only when your backend sends raw card data to Inflow. Hosted checkout (POST /api/payment), balance, payouts, Connect, and webhooks use the standard API host (api.inflowpay.xyz / sandbox.api.inflowpay.com). If you use the Inflow SDK for cards, keep the default API URL.

Sandbox: use https://sandbox.api.inflowpay.com with sandbox keys. See Sandbox Environment for access and key prefixes.

URL Prefixes by Resource

Note: Subscription endpoints use a different path prefix than payment endpoints.

ResourceExample Path
Payments (hosted checkout)https://api.inflowpay.xyz/api/payment
Balancehttps://api.inflowpay.xyz/api/balance
Webhookshttps://api.inflowpay.xyz/api/webhook
Subscriptionshttps://api.inflowpay.xyz/subscription/... (no /api/ prefix)
Payment linkshttps://api.inflowpay.xyz/api/link

Request Format

All API requests use JSON for both request and response bodies.

Headers

HeaderRequiredDescription
Content-TypeYes (for POST/PUT/PATCH)Always application/json
AcceptRecommendedapplication/json
X-Inflow-Api-KeyYesYour private API key

Example Request

curl -X POST https://api.inflowpay.xyz/api/payment \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "X-Inflow-Api-Key: inflow_prod_your_key" \
  -d '{
    "products": [{ "name": "Product", "price": 4999, "quantity": 1 }],
    "currency": "EUR",
    "customerEmail": "[email protected]",
    "successUrl": "https://yoursite.com/success"
  }'

Example Response

{
  "paymentId": "pay_abc123",
  "purchaseUrl": "https://checkout.inflowpay.com/pay/pay_abc123"
}

HTTP Methods

MethodUsage
GETRetrieve resources (payments, subscriptions, links)
POSTCreate resources or perform actions
PATCHPartially update a resource
PUTFully update a resource
DELETEDelete a resource or cancel a subscription

HTTP Status Codes

CodeMeaning
200Success (GET, PATCH, PUT, DELETE)
201Created (POST)
400Bad Request — Invalid parameters
401Unauthorized — Invalid or missing API key
404Not Found — Resource doesn't exist
500Internal Server Error — Something went wrong on our side

Error Response Format

All errors return a consistent JSON structure:

{
  "statusCode": 400,
  "message": "Validation failed",
  "error": "Bad Request"
}

For validation errors, message may be an array of error strings:

{
  "statusCode": 400,
  "message": [
    "currency must be one of the following values: EUR, USD",
    "customerEmail must be an email"
  ],
  "error": "Bad Request"
}