{
  "info": {
    "name": "Kaskade Payment Solution API — v1",
    "description": "Kaskade Payment Solution API V1.\n\nSet the collection variables `baseUrl` and `apiKey`, then run any request.\n\nGenerated from docs/api/openapi.json — do not edit by hand.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://kaskade.com/api/v1",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "ks_live_YOUR_API_KEY",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Currencies",
      "item": [
        {
          "name": "List currencies this account can accept",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/currencies",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "currencies"
              ],
              "query": [
                {
                  "key": "include",
                  "value": "",
                  "description": "Opt in to announced assets.",
                  "disabled": true
                }
              ]
            },
            "description": "By default returns LIVE coins only — unchanged from launch. Pass `include=upcoming` to additionally receive announced, non-transactional assets, which carry `enabled:false` and `depositAvailable:false`."
          },
          "response": []
        },
        {
          "name": "Metadata and live minimum for one currency",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/currencies/:code",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "currencies",
                ":code"
              ]
            },
            "description": "Answers for ANY ticker, including ones this account cannot accept."
          },
          "response": []
        },
        {
          "name": "Live USD to crypto estimate",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/rates/estimate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "rates",
                "estimate"
              ],
              "query": [
                {
                  "key": "amount",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "currency",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Account",
      "item": [
        {
          "name": "Fee schedule for this account",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/fees",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "fees"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Available custody balance per coin",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "balance"
              ]
            },
            "description": "Direct-settlement accounts receive an empty object: nothing is held for them."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Payments",
      "item": [
        {
          "name": "Create a payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payments"
              ]
            },
            "description": "Creates a **direct payment**: Kaskade allocates a deposit address and returns it to you with the exact amount due, so you can render your own payment screen. If you would rather we hosted the checkout and gave you a shareable link, call `POST /invoices` instead.\n\n**Price the payment one of two ways — send exactly one amount.**\n\n**Fiat-denominated (`priceUsd`)** — the payment is priced in your base currency and Kaskade calculates the cryptocurrency amount due at the live rate. `{\"priceUsd\": 100, \"payCurrency\": \"usdttrc20\"}` means *$100 worth* of USDT on Tron — approximately 100 USDT, not exactly 100. This is V1.0 behaviour and is unchanged.\n\n**Coin-denominated (`payAmount` + `payCurrency`)** — the payment is priced directly in the coin, as a decimal STRING. No fiat conversion determines the customer principal. `{\"payAmount\": \"100\", \"payCurrency\": \"usdttrc20\"}` means the customer owes **exactly 100 USDT on TRON**; the platform fee is not added to it. A JSON number is rejected — an exact coin amount must be quoted.\n\nSending both amounts, or neither, is a `validation_error`.\n\n**The ticker encodes the network.** `usdttrc20` (USDT on Tron) and `usdterc20` (USDT on Ethereum) are different rails and are never interchangeable; a bare `usdt` is rejected because it does not say which chain the funds should arrive on. There is no separate network field. Discover valid tickers with `GET /currencies`.\n\n**Same asset, same network only.** In V1.1 a coin-denominated payment is settled by that asset on that network and nothing else — Kaskade performs no cross-asset or cross-network conversion.\n\nThe response carries `id`, `payCurrency`, `payAmount`, `amountDueExact`, `payAddress`, `status`, `expiresAt` and `pricingMode` (`fiat` or `crypto`)."
          },
          "response": []
        },
        {
          "name": "List payments",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payments"
              ]
            },
            "description": "Returns the most recent items, newest first, capped server-side. There are no pagination parameters on this endpoint today."
          },
          "response": []
        },
        {
          "name": "Retrieve a payment (refreshes status)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payments/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payments",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Invoices",
      "item": [
        {
          "name": "Create a hosted invoice",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/invoices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices"
              ]
            },
            "description": "Creates a **hosted invoice** and returns a shareable Kaskade checkout URL. The `invoice.url` in the response is a page hosted by Kaskade — give it to your customer and they pay there. Use this when you do not want to build a payment screen; use `POST /payments` when you want the deposit address and amount programmatically.\n\n**Price the invoice one of two ways — send exactly one amount.**\n\n**Fiat-denominated (`amountUsd`)** — the invoice is priced in your base currency and Kaskade calculates the cryptocurrency amount due. `{\"amountUsd\": 100, \"payCurrency\": \"usdttrc20\"}` means *$100 worth* of USDT on Tron. `payCurrency` is optional here: set it to lock the invoice to one coin, omit it to let the customer choose any supported coin.\n\n**Coin-denominated (`payAmount` + `payCurrency`)** — the invoice is priced directly in the coin, as a decimal STRING, and `payCurrency` is REQUIRED. `{\"payAmount\": \"100\", \"payCurrency\": \"usdttrc20\"}` means the invoice is for **exactly 100 USDT on TRON**, payable in that asset on that network only. A JSON number is rejected.\n\nSending both amounts, or neither, is a `validation_error`.\n\n**The ticker encodes the network.** `usdttrc20` (USDT on Tron) and `usdterc20` (USDT on Ethereum) are different rails and are never interchangeable; a bare `usdt` is rejected. There is no separate network field. Discover valid tickers with `GET /currencies`.\n\n**Same asset, same network only.** A `usdttrc20` invoice is not settled by USDT sent on Ethereum, and a `usdterc20` invoice is not settled by USDT sent on Tron. Cross-asset and cross-network conversion is not part of V1.1."
          },
          "response": []
        },
        {
          "name": "List invoices",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices"
              ]
            },
            "description": "Returns the most recent items, newest first, capped server-side. There are no pagination parameters on this endpoint today."
          },
          "response": []
        },
        {
          "name": "Retrieve an invoice",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/invoices/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "invoices",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Payouts",
      "item": [
        {
          "name": "Request a payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"currency\": \"\",\n  \"amount\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payouts"
              ]
            },
            "description": "Subject to KYC, rail availability, allowlisted destinations and operator release."
          },
          "response": []
        },
        {
          "name": "List payouts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payouts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "Maximum rows to return.",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Retrieve a payout",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payouts/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payouts",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "List allowlisted destinations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/payout-destinations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payout-destinations"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Add a payout destination",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"\",\n  \"currency\": \"\",\n  \"address\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/payout-destinations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "payout-destinations"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Players",
      "item": [
        {
          "name": "Create (or return) a player and their permanent deposit address",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"externalId\": \"\",\n  \"name\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/players",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "players"
              ]
            },
            "description": "Requires the casino product on the account, otherwise 403. Naturally idempotent on externalId: calling twice returns the same player and the same permanent address. TRON only today."
          },
          "response": []
        },
        {
          "name": "List players",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/players",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "players"
              ]
            },
            "description": "Returns the most recent items, newest first, capped server-side. There are no pagination parameters on this endpoint today."
          },
          "response": []
        },
        {
          "name": "Retrieve a player",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/players/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "players",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Ramp",
      "item": [
        {
          "name": "Create a fiat on-ramp order",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"priceUsd\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/ramp/onramp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "ramp",
                "onramp"
              ]
            },
            "description": "Returns 503 when the fiat ramp is not enabled for the platform."
          },
          "response": []
        },
        {
          "name": "Create a fiat off-ramp order",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Optional. Makes a retry safe.",
                "disabled": true
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"cryptoAmount\": 0,\n  \"walletAddress\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/ramp/offramp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "ramp",
                "offramp"
              ]
            },
            "description": "Returns 503 when the fiat ramp is not enabled for the platform."
          },
          "response": []
        },
        {
          "name": "Retrieve a ramp order",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/ramp/orders/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "ramp",
                "orders",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    }
  ]
}
