{
  "info": {
    "name": "Kaskade Payment Solution API — v1 & v2",
    "description": "Kaskade Payment Solution API V1 and V2.\n\nSet the collection variables `baseUrl`, `baseUrlV2` and `apiKey`, then run any request.\n\nGenerated from docs/api/openapi.json and docs/api/openapi-v2.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": "baseUrlV2",
      "value": "https://kaskade.com/api/v2",
      "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": "**Superseded by Payout API v2.** Every payout now carries a network fee that the merchant must authorise explicitly, and this V1 request has no field to carry that authorisation, so it is refused with `409 fee_approval_required`. Create payouts with `POST https://kaskade.com/api/v2/payouts/quote` and then `POST https://kaskade.com/api/v2/payouts` (see docs/api/openapi-v2.json). Listing and retrieving through V1 are unchanged."
          },
          "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": "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": []
        }
      ]
    },
    {
      "name": "Conversions",
      "item": [
        {
          "name": "Price a conversion",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sourceAsset\": \"\",\n  \"sourceNetwork\": \"\",\n  \"destinationAsset\": \"\",\n  \"destinationNetwork\": \"\",\n  \"amount\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/conversion-quotes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "conversion-quotes"
              ]
            },
            "description": "Requires the `conversions:read` scope (a write key implies it). Creates nothing and reserves nothing."
          },
          "response": []
        },
        {
          "name": "Create a conversion",
          "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  \"sourceAsset\": \"\",\n  \"sourceNetwork\": \"\",\n  \"destinationAsset\": \"\",\n  \"destinationNetwork\": \"\",\n  \"amount\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/conversions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "conversions"
              ]
            },
            "description": "Requires the `conversions:write` scope, which existing keys do not have until it is granted. Prices the conversion, records it and reserves the source balance; execution happens under its own gates. Send `Idempotency-Key`: the same key returns the same conversion, never a second one."
          },
          "response": []
        },
        {
          "name": "List conversions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/conversions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "conversions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "starting_after",
                  "value": "",
                  "description": "A conversion id from a previous page.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Requires `conversions:read`. Newest first."
          },
          "response": []
        },
        {
          "name": "Retrieve a conversion",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/conversions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "conversions",
                ":id"
              ]
            },
            "description": "Requires `conversions:read`. A conversion belonging to another merchant is 404."
          },
          "response": []
        },
        {
          "name": "List available conversion routes",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/conversion-routes",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "conversion-routes"
              ],
              "query": [
                {
                  "key": "sourceAsset",
                  "value": "",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "sourceNetwork",
                  "value": "",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Requires `conversions:read` (a write key implies it). The source/destination asset-and-network pairs this account can convert right now, each with its own minimum and maximum. Routes come from Kaskade's governed Production route matrix; an account without conversion gets an empty list. Narrow to one source with `sourceAsset` and `sourceNetwork`."
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Payouts",
      "item": [
        {
          "name": "Quote a payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"currency\": \"\",\n  \"amount\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/payouts/quote",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "payouts",
                "quote"
              ]
            },
            "description": "Reads only — reserves and sends nothing. Requires the payouts:write scope. The quote is single use and expires after about 180 seconds."
          },
          "response": []
        },
        {
          "name": "Create a payout against a quote",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"quoteId\": \"\",\n  \"currency\": \"\",\n  \"amount\": \"\",\n  \"feeAuthorization\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/payouts",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "payouts"
              ]
            },
            "description": "Requires the payouts:write scope and an Idempotency-Key. Revalidates the quote, rail, destination, KYC, the fee re-priced now, the spendable balance (principal + fee reserve) and limits, then reserves in one transaction."
          },
          "response": []
        },
        {
          "name": "Not supported — list with GET /api/v1/payouts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/payouts",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "payouts"
              ]
            },
            "description": "Always answers 405 not_supported. Use GET /api/v1/payouts to list, or GET /api/v2/payouts/{id}."
          },
          "response": []
        },
        {
          "name": "Retrieve a payout with its network fee",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/payouts/:id",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "payouts",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Customer addresses",
      "item": [
        {
          "name": "Get or create a customer's permanent address",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customerId\": \"\",\n  \"payCurrency\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/customer-addresses",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "customer-addresses"
              ]
            },
            "description": "Switched on per account (403 customer_addresses_not_enabled until then). Returns 201 when created, 200 when the customer already has one for that coin (same address)."
          },
          "response": []
        },
        {
          "name": "List customer addresses",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/customer-addresses",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "customer-addresses"
              ],
              "query": [
                {
                  "key": "customerId",
                  "value": "",
                  "description": "Only this customer's addresses.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "",
                  "description": "1–100, default 50.",
                  "disabled": true
                },
                {
                  "key": "starting_after",
                  "value": "",
                  "description": "An id from the previous page.",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Retrieve a customer address",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/customer-addresses/:id",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "customer-addresses",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Public addresses",
      "item": [
        {
          "name": "Get or create your public address for a coin",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payCurrency\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/public-addresses",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "public-addresses"
              ]
            },
            "description": "Your own permanent address per coin, for anyone to pay to. Every account has them (no switch). Returns 201 when created, 200 when you already have one for that coin (same address). Each transfer becomes its own payment with publicAddressId set and customerId null; transfers below the coin's payment minimum are not credited."
          },
          "response": []
        },
        {
          "name": "List your public addresses",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/public-addresses",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "public-addresses"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Recipients",
      "item": [
        {
          "name": "Create a recipient",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"merchantRecipientRef\": \"\",\n  \"type\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/recipients",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "recipients"
              ]
            },
            "description": "Scope recipients:write. 201 when created; 200 when the same reference already exists with identical details; 409 recipient_exists when the details differ."
          },
          "response": []
        },
        {
          "name": "List recipients",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/recipients",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "recipients"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "1–100, default 25.",
                  "disabled": true
                },
                {
                  "key": "starting_after",
                  "value": "",
                  "description": "An id from the previous page.",
                  "disabled": true
                },
                {
                  "key": "ref",
                  "value": "",
                  "description": "Find by merchantRecipientRef.",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Retrieve a recipient with its addresses",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/recipients/:id",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "recipients",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Add an address to a recipient",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"coin\": \"\",\n  \"address\": \"\",\n  \"ownershipType\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/recipients/:id/addresses",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "recipients",
                ":id",
                "addresses"
              ]
            },
            "description": "Scope recipients:write. Validated like a payout destination. Starts as REVIEW_REQUIRED."
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Disbursements",
      "item": [
        {
          "name": "Quote a disbursement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"recipientAddressId\": \"\",\n  \"amount\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/quote",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "quote"
              ]
            },
            "description": "Scope disbursements:write. Reads only; single use; about 180 seconds."
          },
          "response": []
        },
        {
          "name": "Create a disbursement against a quote",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"quoteId\": \"\",\n  \"recipientAddressId\": \"\",\n  \"amount\": \"\",\n  \"feeAuthorization\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/disbursements",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "List disbursements",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "",
                  "description": "1–100.",
                  "disabled": true
                },
                {
                  "key": "startingAfter",
                  "value": "",
                  "description": "A disbursement id from the previous page (note the camelCase name).",
                  "disabled": true
                },
                {
                  "key": "batchId",
                  "value": "",
                  "description": "Only this batch's disbursements.",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Retrieve a disbursement",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/:id",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                ":id"
              ]
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "v2 · Bulk disbursements",
      "item": [
        {
          "name": "Create a bulk batch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"rows\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches"
              ]
            },
            "description": "Creates and validates the batch. Nothing is reserved or sent."
          },
          "response": []
        },
        {
          "name": "List bulk batches",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Retrieve a batch and its rows",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches/:id",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches",
                ":id"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "",
                  "description": "Only rows in this status.",
                  "disabled": true
                },
                {
                  "key": "afterRow",
                  "value": "",
                  "description": "Rows after this row number.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "",
                  "description": "Rows per page, 1–500, default 100.",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Continue validating a large batch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches/:id/validate",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches",
                ":id",
                "validate"
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Approve a batch (automatic API approval only)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"batchHash\": \"\",\n  \"mode\": \"\",\n  \"feeCaps\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches/:id/approve",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches",
                ":id",
                "approve"
              ]
            },
            "description": "Only for accounts where Kaskade allowed automatic API approval and the merchant chose it in the dashboard; otherwise 403 approval_requires_panel. Same checks as a person's approval: the reviewed batchHash, a fee cap per asset, and the whole batch within the spendable balance."
          },
          "response": []
        },
        {
          "name": "Cancel the batch's unsent rows",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "description": "Required on every v2 write. Reuse the same value to retry safely."
              }
            ],
            "url": {
              "raw": "{{baseUrlV2}}/disbursements/batches/:id/cancel",
              "host": [
                "{{baseUrlV2}}"
              ],
              "path": [
                "disbursements",
                "batches",
                ":id",
                "cancel"
              ]
            },
            "description": "Rows already turned into disbursements are not recalled."
          },
          "response": []
        }
      ]
    }
  ]
}
