{"item":[{"id":"aa845842-d5bf-4498-bc00-1ca8857c0a6b","name":"Check API status","request":{"name":"Check API status","description":{"content":"Reports overall health: a real database connectivity check, how many webhook deliveries are still pending, how long the oldest unpaid charge has been waiting, and how recently an on-chain payment notification was received — a cheap signal for whether the payment-detection pipeline is still running. Doesn't require authentication. Returns 503 (not 200) when the database check fails, so a plain HTTP-status uptime check catches an outage without needing to inspect the response body.","type":"text/plain"},"url":{"path":["health"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":null},"response":[{"id":"b0a409ff-a201-44a8-98fa-67ba636adb68","name":"API is healthy","originalRequest":{"url":{"path":["health"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"status\": \"ok\",\n  \"version\": \"Ut labore\",\n  \"timestamp\": \"1975-07-25T13:58:40.598Z\",\n  \"db\": \"error\",\n  \"pendingWebhooks\": 30508392.318549886,\n  \"oldestPendingChargeAgeSeconds\": 83553799.1118165,\n  \"lastMoralisEventAgeSeconds\": 14880805.302688375\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d0b752bb-e894-4858-8d33-db9d0e8b2700","name":"Database is unreachable","originalRequest":{"url":{"path":["health"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"status\": \"ok\",\n  \"version\": \"Ut labore\",\n  \"timestamp\": \"1975-07-25T13:58:40.598Z\",\n  \"db\": \"error\",\n  \"pendingWebhooks\": 30508392.318549886,\n  \"oldestPendingChargeAgeSeconds\": 83553799.1118165,\n  \"lastMoralisEventAgeSeconds\": 14880805.302688375\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c4043a2a-6b1c-4313-ae3a-1e4b631ea50e","name":"charges","item":[{"id":"f2c76879-b783-4927-ad2b-4fc7b792de03","name":"Create a charge","request":{"name":"Create a charge","description":{"content":"Creates a payment request and predicts a unique, immutable on-chain address for it — no on-chain transaction happens yet. The merchant's payout split is frozen at this moment, so it stays consistent even if the fee tier changes later. The payout wallet itself is not a field on this request — it's bound to the API key used to authenticate (issued that way by Dashboard), so a leaked key can never redirect an existing merchant's funds by passing a different address. Pass `idempotencyKey` to safely retry the same request without creating a duplicate charge.","type":"text/plain"},"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"amount\": \"<number>\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"<string>\",\n      \"network\": \"<string>\"\n    }\n  ],\n  \"expiresIn\": \"<integer>\",\n  \"currency\": \"USD\",\n  \"idempotencyKey\": \"<string>\",\n  \"externalRef\": \"<string>\",\n  \"source\": \"<string>\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"<string>\",\n          \"quantity\": \"<integer>\",\n          \"imageUrl\": \"<uri>\"\n        },\n        {\n          \"name\": \"<string>\",\n          \"quantity\": \"<integer>\",\n          \"imageUrl\": \"<uri>\"\n        }\n      ]\n    }\n  },\n  \"redirectUrl\": \"<uri>\",\n  \"splitRecipients\": [\n    {\n      \"recipientId\": \"<string>\",\n      \"percent\": \"<number>\",\n      \"label\": \"<string>\"\n    },\n    {\n      \"recipientId\": \"<string>\",\n      \"percent\": \"<number>\",\n      \"label\": \"<string>\"\n    }\n  ],\n  \"escrow\": {\n    \"releaserAddress\": \"<string>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8dde16bd-1dc3-455d-9755-1f41080d6cd5","name":"Charge created","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"adipisici\",\n  \"amount\": 83353414.31189483,\n  \"amountReceived\": 38622125.25416821,\n  \"isOverpaid\": true,\n  \"currency\": \"occaecat cillum\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"optimism\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"bnb\"\n    }\n  ],\n  \"paidWith\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDC\",\n      \"network\": \"polygon\"\n    }\n  ],\n  \"swapAlternatives\": [\n    {\n      \"token\": \"ETH\",\n      \"network\": \"base\"\n    },\n    {\n      \"token\": \"ETH\",\n      \"network\": \"arbitrum\"\n    }\n  ],\n  \"address\": \"eiusmod Ut labor\",\n  \"status\": \"pending\",\n  \"settlementStatus\": \"failed\",\n  \"environment\": \"live\",\n  \"apiKeyId\": \"ex ea\",\n  \"txHash\": \"sit cillum\",\n  \"externalRef\": \"dolore qui voluptate minim\",\n  \"source\": \"aliqua et in in\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"occaecat est\",\n          \"quantity\": 2583,\n          \"imageUrl\": \"https://smsYkEXhrEyUlGKMsu.bgl2xgfM7qDCHs85DlSNAfc2oFB\"\n        },\n        {\n          \"name\": \"consectetur Ut\",\n          \"quantity\": 4837,\n          \"imageUrl\": \"https://otrgkByYGrYdJYQcZJqXqWaiFj.kblyOy6Yxo55iZdx6b0evLpKXMUc\"\n        }\n      ]\n    },\n    \"aute3c\": {}\n  },\n  \"redirectUrl\": \"nostrud\",\n  \"checkoutUrl\": \"voluptate incididunt Excepteur tempor\",\n  \"splitRecipients\": [\n    {\n      \"address\": \"0xb1e0Aba5Cc8B8EAb0b7B97c449F0b0aa86cf4cE9\",\n      \"percent\": 82.07240880250448,\n      \"label\": \"enim ul\"\n    },\n    {\n      \"address\": \"0x0d1F710E2C0538f3A6cb8193FeB1e823E3e43a5d\",\n      \"percent\": 44.28609256382892,\n      \"label\": \"cillum anim\"\n    }\n  ],\n  \"createdAt\": \"1990-11-20T00:09:59.086Z\",\n  \"expiresAt\": \"2007-08-14T23:16:08.562Z\",\n  \"confirmedAt\": \"1991-02-24T14:38:12.945Z\",\n  \"settledAt\": \"1969-06-14T03:47:35.484Z\",\n  \"lastActivityAt\": \"1973-07-17T08:48:46.182Z\",\n  \"escrow\": {\n    \"releaserAddress\": \"sint non enim\",\n    \"releasedAt\": \"2001-08-30T20:15:30.764Z\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"77f88d7f-c012-4cd0-8456-66dca2748a31","name":"Validation error (`validation_error`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ce0fc02e-577a-4a90-bbbd-e4cf5d5e8ef0","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"be3b9002-450f-4998-aba5-8ff441131230","name":"API key is missing the `charges:write` scope, or the request includes `splitRecipients` and the key is missing `charges:split_write`, or the key holds both `charges:split_write` and a recipients-registration scope (never allowed together) (`insufficient_scope` / `conflicting_api_key_scopes`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c0d1fdd1-a667-48ab-9d94-c138e6cdb7ac","name":"idempotencyKey reused with a different request body (`idempotency_key_reused`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1aaa3220-6238-4d51-82e8-6a9c52587c46","name":"This token/network/environment combination has no deployed contract yet, or a splitRecipients entry references a recipientId that doesn't exist for this org/environment, exceeds your available percent, or collides with Klappay's treasury/your own payout address (`token_not_supported` / `recipient_not_found_in_split` / `split_recipients_exceed_available_percent` / `split_recipient_is_treasury_address` / `split_recipient_is_payout_address`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b0fa70cc-5a90-4439-af6d-bc0ef0198a46","name":"Could not reach the blockchain RPC to predict the split/escrow address (transient, safe to retry shortly) (`rpc_unavailable`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"amount\": 49.9,\n  \"currency\": \"USD\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"base\"\n    }\n  ],\n  \"expiresIn\": 1800\n}","options":{"raw":{"language":"json"}}}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4368bc2d-901d-4697-8ef0-af7276595c83","name":"List charges","request":{"name":"List charges","description":{"content":"Returns charges for the authenticated organization, newest first, with cursor-based pagination. Filter by `status`, `token`/`network` (the pair actually paid, i.e. `paidWith` — not what was accepted), `environment`, `since` (created after a given time), or `isOverpaid`. Useful as a fallback to catch any status change a missed webhook delivery didn't report.","type":"text/plain"},"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"<string>","description":"Payment progress, from the payer side. `pending`: created, nothing received yet. `partially_paid`: some funds received, less than `amount`. `confirmed`: full amount received (or more — see `isOverpaid`). `expired`: `expiresAt` passed with zero funds received. `underpaid`: `expiresAt` passed while `partially_paid`. Every status is reached automatically, on its own timeline — there is no merchant-initiated cancellation. This never reflects whether funds actually reached the merchant — see `settlementStatus` for that."},{"disabled":false,"key":"token","value":"<string>","description":"Filters on `paidWith.token` — the pair actually paid, not accepted."},{"disabled":false,"key":"network","value":"<string>","description":"Filters on `paidWith.network` — the pair actually paid, not accepted."},{"disabled":false,"key":"environment","value":"<string>","description":"`live` or `test`, matching the `klap_live_.../klap_test_...` prefix of the API key that created or is scoped to this resource. `live` settles on Base mainnet with real funds; `test` settles on Base Sepolia, a separate testnet — real on-chain activity, but never real money."},{"disabled":false,"key":"since","value":"<dateTime>","description":"Only return charges created at or after this timestamp (filters on `createdAt`, not on when the status last changed). If polling as a fallback for missed webhooks, use a window at least as wide as the longest `expiresIn` your charges use, or you can miss a long-lived charge that changed status outside a narrower window."},{"disabled":false,"key":"isOverpaid","value":"<string>"},{"disabled":false,"key":"limit","value":"20","description":"Max items to return per page (1–100, default 20)."},{"disabled":false,"key":"cursor","value":"<string>","description":"Opaque — pass the previous response's `nextCursor` verbatim to fetch the next page. Never construct or parse this value yourself; its shape is not part of the public contract and may change."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"d2731d2b-6174-4043-bd5d-2d01c4e29d0a","name":"Paginated charges","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"<string>"},{"key":"token","value":"<string>"},{"key":"network","value":"<string>"},{"key":"environment","value":"<string>"},{"key":"since","value":"<dateTime>"},{"key":"isOverpaid","value":"<string>"},{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"data\": [\n    {\n      \"id\": \"incidid\",\n      \"amount\": -44646528.06031788,\n      \"amountReceived\": 50212396.86347142,\n      \"isOverpaid\": false,\n      \"currency\": \"reprehenderit in ullamco est\",\n      \"acceptedPayments\": [\n        {\n          \"token\": \"USDT\",\n          \"network\": \"base\"\n        },\n        {\n          \"token\": \"USDC\",\n          \"network\": \"polygon\"\n        }\n      ],\n      \"paidWith\": [\n        {\n          \"token\": \"USDT\",\n          \"network\": \"base\"\n        },\n        {\n          \"token\": \"USDC\",\n          \"network\": \"polygon\"\n        }\n      ],\n      \"swapAlternatives\": [\n        {\n          \"token\": \"BTC\",\n          \"network\": \"arbitrum\"\n        },\n        {\n          \"token\": \"ETH\",\n          \"network\": \"bnb\"\n        }\n      ],\n      \"address\": \"sint velit do\",\n      \"status\": \"expired\",\n      \"settlementStatus\": \"failed\",\n      \"environment\": \"live\",\n      \"apiKeyId\": \"quis Duis non magna\",\n      \"txHash\": \"tempor consequat pariatur\",\n      \"externalRef\": \"voluptate do ad dolore veniam\",\n      \"source\": \"Ut\",\n      \"metadata\": {\n        \"klappay\": {\n          \"products\": [\n            {\n              \"name\": \"aliquip sunt\",\n              \"quantity\": 8472,\n              \"imageUrl\": \"http://eHgTqvsvDzeYknyBehMpJOcXHfMPrgpf.gworTyALCmbAEnCrruOvDFhLicmlmH6jFFeQxk6dkcY2tmjiMoqu15\"\n            },\n            {\n              \"name\": \"deserunt sint\",\n              \"quantity\": 9702,\n              \"imageUrl\": \"http://NnVsSljBBiIyRmZXwTgKzIHUBKLhy.bxrVCZY6KNlwk5jUwU5lSr3Z9vyzUZ3snGcmHLj61cnQiF\"\n            }\n          ]\n        },\n        \"proidentb81\": {},\n        \"ullamco98\": {},\n        \"eiusmodee\": {}\n      },\n      \"redirectUrl\": \"officia velit ulla\",\n      \"checkoutUrl\": \"ullamco aliqua adipisicing\",\n      \"splitRecipients\": [\n        {\n          \"address\": \"0xC10fe1984A163c139A5DCf6195909aeBbdDAFE7d\",\n          \"percent\": 33.239982706972924,\n          \"label\": \"adipisicing\"\n        },\n        {\n          \"address\": \"0xBE824fe0b67Dfcc4b43d8bF56DcECbc8BE6b6D64\",\n          \"percent\": 46.344966579949926,\n          \"label\": \"ut esse\"\n        }\n      ],\n      \"createdAt\": \"2018-10-31T03:09:17.681Z\",\n      \"expiresAt\": \"1966-12-08T16:29:24.062Z\",\n      \"confirmedAt\": \"1948-08-25T09:47:12.725Z\",\n      \"settledAt\": \"1992-08-18T23:31:31.364Z\",\n      \"lastActivityAt\": \"1985-10-24T13:08:28.770Z\",\n      \"escrow\": {\n        \"releaserAddress\": \"deserunt sed\",\n        \"releasedAt\": \"1948-05-27T22:27:39.627Z\"\n      }\n    },\n    {\n      \"id\": \"Lorem laboris irure\",\n      \"amount\": 6057701.934825912,\n      \"amountReceived\": -36965101.45925867,\n      \"isOverpaid\": true,\n      \"currency\": \"in ex Duis\",\n      \"acceptedPayments\": [\n        {\n          \"token\": \"USDC\",\n          \"network\": \"optimism\"\n        },\n        {\n          \"token\": \"USDT\",\n          \"network\": \"base\"\n        }\n      ],\n      \"paidWith\": [\n        {\n          \"token\": \"USDC\",\n          \"network\": \"optimism\"\n        },\n        {\n          \"token\": \"USDT\",\n          \"network\": \"avalanche\"\n        }\n      ],\n      \"swapAlternatives\": [\n        {\n          \"token\": \"BTC\",\n          \"network\": \"bnb\"\n        },\n        {\n          \"token\": \"BTC\",\n          \"network\": \"polygon\"\n        }\n      ],\n      \"address\": \"commodo in\",\n      \"status\": \"partially_paid\",\n      \"settlementStatus\": \"pending\",\n      \"environment\": \"live\",\n      \"apiKeyId\": \"laboris ullamco\",\n      \"txHash\": \"reprehenderit exercitation tempor\",\n      \"externalRef\": \"sunt commodo\",\n      \"source\": \"ut sit aliqua\",\n      \"metadata\": {\n        \"klappay\": {\n          \"products\": [\n            {\n              \"name\": \"fugiat\",\n              \"quantity\": 5725,\n              \"imageUrl\": \"http://hVurmhswp.owHydaDq9UJHkvPPl.\"\n            },\n            {\n              \"name\": \"aliquip minim\",\n              \"quantity\": 1114,\n              \"imageUrl\": \"http://GjsMRZtLb.cxgzMgfi+G0dKsUirll,U2FD\"\n            }\n          ]\n        },\n        \"elit_e9\": {}\n      },\n      \"redirectUrl\": \"dolor\",\n      \"checkoutUrl\": \"culpa aliqua ad dolor\",\n      \"splitRecipients\": [\n        {\n          \"address\": \"0xbb81ECc7e8Ffc3BBeba0aB80d6e8Cde8Eef59c84\",\n          \"percent\": 1.605194936682114,\n          \"label\": \"est sunt ut cupidatat nostrud\"\n        },\n        {\n          \"address\": \"0x5E2D252BbfA66A26a9C7a9d115A6a25232ddc84a\",\n          \"percent\": 9.593770233972307,\n          \"label\": \"do velit \"\n        }\n      ],\n      \"createdAt\": \"2002-04-01T06:02:06.316Z\",\n      \"expiresAt\": \"1969-05-24T21:39:41.904Z\",\n      \"confirmedAt\": \"2004-02-21T07:27:15.447Z\",\n      \"settledAt\": \"2012-09-26T17:49:29.832Z\",\n      \"lastActivityAt\": \"2014-09-16T20:30:44.052Z\",\n      \"escrow\": {\n        \"releaserAddress\": \"esse\",\n        \"releasedAt\": \"1983-12-07T00:21:44.249Z\"\n      }\n    }\n  ],\n  \"nextCursor\": \"incididunt\",\n  \"hasMore\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f6e95109-50b9-4823-bc46-a9b9f3277e0c","name":"Malformed pagination cursor (`invalid_cursor`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"<string>"},{"key":"token","value":"<string>"},{"key":"network","value":"<string>"},{"key":"environment","value":"<string>"},{"key":"since","value":"<dateTime>"},{"key":"isOverpaid","value":"<string>"},{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6bd63e0b-f0fe-4540-b1ae-7adf8b2654bc","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"<string>"},{"key":"token","value":"<string>"},{"key":"network","value":"<string>"},{"key":"environment","value":"<string>"},{"key":"since","value":"<dateTime>"},{"key":"isOverpaid","value":"<string>"},{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"26f00e52-8bdf-4f94-82f0-dacdad73f390","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"<string>"},{"key":"token","value":"<string>"},{"key":"network","value":"<string>"},{"key":"environment","value":"<string>"},{"key":"since","value":"<dateTime>"},{"key":"isOverpaid","value":"<string>"},{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1161c561-b69e-4559-baff-dd136a885b9a","name":"The requested `environment` filter doesn't match this API key's own environment (`environment_mismatch`)","originalRequest":{"url":{"path":["charges"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"<string>"},{"key":"token","value":"<string>"},{"key":"network","value":"<string>"},{"key":"environment","value":"<string>"},{"key":"since","value":"<dateTime>"},{"key":"isOverpaid","value":"<string>"},{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"75c0934c-36da-4fb7-852e-2078c25b5009","name":"{id}","item":[{"id":"9819a2eb-225c-44a4-8404-74d248264c34","name":"Get a charge by id","request":{"name":"Get a charge by id","description":{"content":"Returns the current state of a single charge — status, amount received so far, whether it was overpaid, and the on-chain address payers should send funds to.","type":"text/plain"},"url":{"path":["charges",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"e0ec27fa-1c1a-4cbd-8920-330682520115","name":"Charge","originalRequest":{"url":{"path":["charges",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"adipisici\",\n  \"amount\": 83353414.31189483,\n  \"amountReceived\": 38622125.25416821,\n  \"isOverpaid\": true,\n  \"currency\": \"occaecat cillum\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"optimism\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"bnb\"\n    }\n  ],\n  \"paidWith\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDC\",\n      \"network\": \"polygon\"\n    }\n  ],\n  \"swapAlternatives\": [\n    {\n      \"token\": \"ETH\",\n      \"network\": \"base\"\n    },\n    {\n      \"token\": \"ETH\",\n      \"network\": \"arbitrum\"\n    }\n  ],\n  \"address\": \"eiusmod Ut labor\",\n  \"status\": \"pending\",\n  \"settlementStatus\": \"failed\",\n  \"environment\": \"live\",\n  \"apiKeyId\": \"ex ea\",\n  \"txHash\": \"sit cillum\",\n  \"externalRef\": \"dolore qui voluptate minim\",\n  \"source\": \"aliqua et in in\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"occaecat est\",\n          \"quantity\": 2583,\n          \"imageUrl\": \"https://smsYkEXhrEyUlGKMsu.bgl2xgfM7qDCHs85DlSNAfc2oFB\"\n        },\n        {\n          \"name\": \"consectetur Ut\",\n          \"quantity\": 4837,\n          \"imageUrl\": \"https://otrgkByYGrYdJYQcZJqXqWaiFj.kblyOy6Yxo55iZdx6b0evLpKXMUc\"\n        }\n      ]\n    },\n    \"aute3c\": {}\n  },\n  \"redirectUrl\": \"nostrud\",\n  \"checkoutUrl\": \"voluptate incididunt Excepteur tempor\",\n  \"splitRecipients\": [\n    {\n      \"address\": \"0xb1e0Aba5Cc8B8EAb0b7B97c449F0b0aa86cf4cE9\",\n      \"percent\": 82.07240880250448,\n      \"label\": \"enim ul\"\n    },\n    {\n      \"address\": \"0x0d1F710E2C0538f3A6cb8193FeB1e823E3e43a5d\",\n      \"percent\": 44.28609256382892,\n      \"label\": \"cillum anim\"\n    }\n  ],\n  \"createdAt\": \"1990-11-20T00:09:59.086Z\",\n  \"expiresAt\": \"2007-08-14T23:16:08.562Z\",\n  \"confirmedAt\": \"1991-02-24T14:38:12.945Z\",\n  \"settledAt\": \"1969-06-14T03:47:35.484Z\",\n  \"lastActivityAt\": \"1973-07-17T08:48:46.182Z\",\n  \"escrow\": {\n    \"releaserAddress\": \"sint non enim\",\n    \"releasedAt\": \"2001-08-30T20:15:30.764Z\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4fe22bc0-dd4f-42c5-8c7a-22f365709603","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4b7b2a18-1d96-43ea-8b48-355befe39a36","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d8bc9427-d28f-4789-b890-5559ab73b817","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"667524d0-3bc2-4121-99e8-b116e48f544c","name":"Get the full event timeline for a charge","request":{"name":"Get the full event timeline for a charge","description":{"content":"Returns every event recorded against a charge, in chronological order: creation, each on-chain transfer detected, the payout distribution, and every webhook delivery attempt with its outcome. Useful for debugging a specific payment without needing separate audit tooling.","type":"text/plain"},"url":{"path":["charges",":id","timeline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"88059ab9-8db7-43b1-8766-64b7db58ce52","name":"Charge timeline","originalRequest":{"url":{"path":["charges",":id","timeline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"type\": \"webhook.failed\",\n    \"at\": \"1974-12-29T07:43:02.636Z\",\n    \"txHash\": \"laborum\",\n    \"amount\": 91490170.41169113,\n    \"source\": \"reconciliation_job\",\n    \"token\": \"USDC\",\n    \"network\": \"polygon\",\n    \"causedTransition\": true,\n    \"event\": \"charge.partially_paid\",\n    \"responseCode\": 66908765.355323076,\n    \"attempts\": 94919906.58143651\n  },\n  {\n    \"type\": \"charge.created\",\n    \"at\": \"1978-11-03T00:45:20.662Z\",\n    \"txHash\": \"in dese\",\n    \"amount\": 97191727.80961666,\n    \"source\": \"reconciliation_job\",\n    \"token\": \"USDC\",\n    \"network\": \"bnb\",\n    \"causedTransition\": false,\n    \"event\": \"charge.overpaid\",\n    \"responseCode\": -92039160.24415575,\n    \"attempts\": 68271614.47670671\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"a288528e-5fc5-42d6-9555-7441c04f8119","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","timeline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9f718336-6daf-4d16-8a7a-f1d5ee1ae820","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","timeline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f651a60-fb59-44bd-8aff-ecf651bb5a93","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","timeline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5c2ec07d-8342-4113-9810-16c8290d97d2","name":"Stream live status updates for a charge (Server-Sent Events)","request":{"name":"Stream live status updates for a charge (Server-Sent Events)","description":{"content":"Opens a Server-Sent Events stream that pushes the full `Charge` object every time its `status` or `settlementStatus` changes, starting with the current state immediately on connect. Closes automatically once the charge reaches a terminal state (`expired`, or `confirmed`/`underpaid` with a resolved `settlementStatus`), when the charge itself expires, or if the client disconnects. This is what an official SDK's `waitForConfirmation()`/`waitForSettlement()` use instead of polling when available — see [github.com/klappay](https://github.com/klappay) for available SDKs; prefer one over consuming this directly unless you have a reason not to.","type":"text/plain"},"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"text/event-stream"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"aa58934c-87ab-4036-aa2f-4aa7db1feedd","name":"SSE stream. Each event is `event: charge` with `data: <Charge JSON>`. A comment-only heartbeat (`: ping`) is sent periodically to keep the connection alive through proxies.","originalRequest":{"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"text/event-stream"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"text/event-stream"}],"body":"exercitatio","cookie":[],"_postman_previewlanguage":"text"},{"id":"31bd805c-f54e-4033-be00-73be2af9e72c","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"35fb1b2d-44cf-4597-8d05-f89d06f89719","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ef4640e-12be-457f-a0db-88cb0136fef7","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"927d704c-f1fb-4044-b437-77aa4360ce83","name":"Too many concurrent event streams — try again shortly. (`sse_capacity`)","originalRequest":{"url":{"path":["charges",":id","events"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"53124c19-7a2b-4da1-8377-5b23a7e21f2c","name":"Get a scannable payment QR code for a charge","request":{"name":"Get a scannable payment QR code for a charge","description":{"content":"Returns an SVG QR code encoding an EIP-681 payment URI (`ethereum:<contract>@<chainId>/transfer?address=...&uint256=...`) for one of this charge's accepted `(token, network)` pairs — scanning it with a wallet that supports EIP-681 prefill (e.g. Trust Wallet, imToken; MetaMask's support has historically been partial) prefills the recipient, token, and amount. `token`/`network` query params select which accepted pair to encode — required when `acceptedPayments` has more than one pair, ignored and unnecessary otherwise. Only available while the charge can still be paid (`pending`/`partially_paid`) — a QR for an already-`confirmed`/`expired`/`underpaid` charge would direct a payer's funds nowhere useful.","type":"text/plain"},"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"token","value":"<string>","description":"Which accepted `(token, network)` pair to encode in the QR — required if `acceptedPayments` has more than one pair, since there is no single unambiguous default to fall back to. Ignored (and unnecessary) when the charge accepts exactly one pair."},{"disabled":false,"key":"network","value":"<string>","description":"The blockchain a charge/payment is on."}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"image/svg+xml"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"8c96dda8-8695-4e37-abfe-6bc92139c0bf","name":"QR code as an SVG image","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"image/svg+xml"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"image/svg+xml"}],"body":"exercitatio","cookie":[],"_postman_previewlanguage":"text"},{"id":"f598b8c0-2ddd-4d80-b5c9-11ce005b3dea","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"99a31d1d-317c-43af-ba31-c397f588636b","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f208844-e49b-412e-90f2-3591a6194e63","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"241d9be2-cb7c-414f-8a92-0702ac14456f","name":"Charge is already confirmed, expired, or underpaid — no longer accepting payment (`charge_not_payable`)","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"48edd683-c336-4d04-b215-332e2c2f3599","name":"acceptedPayments has more than one pair and none was specified via token/network, the specified pair isn't one of this charge's accepted pairs, or this token/network/environment combination has no deployed contract yet (`payment_pair_required` / `payment_pair_not_accepted` / `token_not_supported`)","originalRequest":{"url":{"path":["charges",":id","qrcode"],"host":["{{baseUrl}}"],"query":[{"key":"token","value":"<string>"},{"key":"network","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f2fe182f-2f60-4ad5-a748-b7bec0be0137","name":"Get a locked quote to pay this charge with a different cryptocurrency","request":{"name":"Get a locked quote to pay this charge with a different cryptocurrency","description":{"content":"Quotes a swap (via the 0x Swap API) from a non-stablecoin cryptocurrency the payer holds into one of this charge's `acceptedPayments` tokens — see `swapAlternatives` on the charge for which inputs are trusted. The swap's output is delivered directly to this charge's own `address`, so once the payer signs and submits `transaction`, the resulting USDC/USDT is detected and credited exactly like any other transfer — Klappay never sees or custodies the input cryptocurrency. Klappay charges the payer a separate 1% fee on top of the merchant's own `feePercent`, collected as part of the swap itself; the merchant always receives the charge's full remaining amount regardless. Requires `charges:write` (not just `charges:read`) since, unlike every other read on this resource, each call costs a real, billable request against Klappay's own 0x account — rate-limited per charge on top of that, independent of the general per-key rate limit. **Two different client-side flows depending on `inputToken`**: a network's own native currency (ETH/BNB/MATIC/AVAX) needs no extra step — sign and send `transaction` directly; an ERC-20 input (today, only `BTC`) needs `permit2`'s EIP-712 message signed first, with the signature appended to `transaction.data` before sending. `permit2` is always present on the response — `null` for a native-currency input, an object for an ERC-20 one — check whether it's non-null rather than whether the key exists. See each field's own description for the exact mechanics. **`test`-environment charges always reject with `422 swap_test_environment_unsupported`** — 0x, who powers this endpoint, has no testnet support at all today, so no `inputToken`/`inputNetwork` combination could ever succeed there; `swapAlternatives` on a test charge is always empty for the same reason.","type":"text/plain"},"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"inputToken\": \"<string>\",\n  \"inputNetwork\": \"<string>\",\n  \"takerAddress\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"95ff1d86-2a2f-4d0b-9206-9994e22a4985","name":"Locked swap quote","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"inputToken\": \"BNB\",\n  \"inputNetwork\": \"polygon\",\n  \"inputAmount\": -85871883.19524106,\n  \"outputToken\": \"USDC\",\n  \"outputNetwork\": \"optimism\",\n  \"outputAmount\": -69510512.7798945,\n  \"fees\": {\n    \"klappayFee\": -18664672.661958084,\n    \"zeroExFee\": -95073653.89151086\n  },\n  \"expiresAt\": \"1972-10-02T09:51:52.765Z\",\n  \"transaction\": {\n    \"to\": \"in ipsum laborum dolore\",\n    \"data\": \"et eiusmod irure\",\n    \"value\": \"anim sunt sed ut\"\n  },\n  \"permit2\": {\n    \"eip712\": {\n      \"dolor3d0\": {},\n      \"nostrud8\": {},\n      \"elit3b9\": {}\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3195a137-3396-47df-a1e2-62e251a7a058","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8d2f43a1-9277-48a0-8d1e-cd14baa6904e","name":"API key is missing the `charges:write` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8d4e3028-a263-46df-bc9b-55ca022b923b","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b1990a51-ca80-4040-b3d5-82270bb743e0","name":"Charge is already confirmed, expired, or underpaid — no longer accepting payment (`charge_not_payable`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8b5125da-c31b-4874-a6c5-6a082ad0d831","name":"inputToken/inputNetwork isn't a trusted swap input for this charge (see its swapAlternatives), or the charge is in the test environment, which 0x doesn't support at all (`token_not_supported` / `swap_test_environment_unsupported`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"75a74189-7f76-4c69-90a4-433e9d2bf776","name":"Too many swap quote requests for this charge (`rate_limited`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d17f87a6-23bd-4e1c-b582-5671b8e15e2d","name":"Either this deployment has no 0x credentials configured at all, or the upstream quote request to 0x itself failed (often insufficient liquidity for this pair/amount) — safe to retry, including with a different inputToken (`swap_unavailable` / `swap_quote_failed`)","originalRequest":{"url":{"path":["charges",":id","quote"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"inputToken\": \"ETH\",\n  \"inputNetwork\": \"base\",\n  \"takerAddress\": \"0x1111111111111111111111111111111111111111\"\n}","options":{"raw":{"language":"json"}}}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1339c79a-aaf5-4990-9b5b-983dd78cb81a","name":"Trigger an on-demand payment check for a charge","request":{"name":"Trigger an on-demand payment check for a charge","description":{"content":"Re-verifies this charge's on-chain payment state immediately, instead of waiting for the background reconciliation pass that otherwise catches it within roughly a minute as a backstop. This never trusts the caller's claim that a payment happened — by default it re-runs the same independent on-chain lookup the reconciliation job and webhook ingestion already use, and only changes the charge's state if a real matching transfer is actually found on-chain. Optionally pass `txHash`/`network` (e.g. right after a swap-to-pay or wallet-connect transaction is sent) to verify that specific transaction directly instead — one RPC call instead of scanning a block range, so it resolves faster and cheaper; the amount credited still always comes from what that transaction actually contains on-chain, never from anything implied by passing it. Rate-limited to once every 10 seconds per charge — shared across every caller of that charge, not per API key — since each call costs a real RPC round trip; prefer `GET /v1/charges/{id}/events` (SSE) to observe the result instead of polling this endpoint repeatedly.","type":"text/plain"},"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"txHash\": \"<string>\",\n  \"network\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"85fb8b38-87e1-4bda-a575-8448a2e1cff5","name":"Current charge state after the check","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"adipisici\",\n  \"amount\": 83353414.31189483,\n  \"amountReceived\": 38622125.25416821,\n  \"isOverpaid\": true,\n  \"currency\": \"occaecat cillum\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"optimism\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"bnb\"\n    }\n  ],\n  \"paidWith\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDC\",\n      \"network\": \"polygon\"\n    }\n  ],\n  \"swapAlternatives\": [\n    {\n      \"token\": \"ETH\",\n      \"network\": \"base\"\n    },\n    {\n      \"token\": \"ETH\",\n      \"network\": \"arbitrum\"\n    }\n  ],\n  \"address\": \"eiusmod Ut labor\",\n  \"status\": \"pending\",\n  \"settlementStatus\": \"failed\",\n  \"environment\": \"live\",\n  \"apiKeyId\": \"ex ea\",\n  \"txHash\": \"sit cillum\",\n  \"externalRef\": \"dolore qui voluptate minim\",\n  \"source\": \"aliqua et in in\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"occaecat est\",\n          \"quantity\": 2583,\n          \"imageUrl\": \"https://smsYkEXhrEyUlGKMsu.bgl2xgfM7qDCHs85DlSNAfc2oFB\"\n        },\n        {\n          \"name\": \"consectetur Ut\",\n          \"quantity\": 4837,\n          \"imageUrl\": \"https://otrgkByYGrYdJYQcZJqXqWaiFj.kblyOy6Yxo55iZdx6b0evLpKXMUc\"\n        }\n      ]\n    },\n    \"aute3c\": {}\n  },\n  \"redirectUrl\": \"nostrud\",\n  \"checkoutUrl\": \"voluptate incididunt Excepteur tempor\",\n  \"splitRecipients\": [\n    {\n      \"address\": \"0xb1e0Aba5Cc8B8EAb0b7B97c449F0b0aa86cf4cE9\",\n      \"percent\": 82.07240880250448,\n      \"label\": \"enim ul\"\n    },\n    {\n      \"address\": \"0x0d1F710E2C0538f3A6cb8193FeB1e823E3e43a5d\",\n      \"percent\": 44.28609256382892,\n      \"label\": \"cillum anim\"\n    }\n  ],\n  \"createdAt\": \"1990-11-20T00:09:59.086Z\",\n  \"expiresAt\": \"2007-08-14T23:16:08.562Z\",\n  \"confirmedAt\": \"1991-02-24T14:38:12.945Z\",\n  \"settledAt\": \"1969-06-14T03:47:35.484Z\",\n  \"lastActivityAt\": \"1973-07-17T08:48:46.182Z\",\n  \"escrow\": {\n    \"releaserAddress\": \"sint non enim\",\n    \"releasedAt\": \"2001-08-30T20:15:30.764Z\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"233d99cf-d4e0-4194-a9a8-56a6bf95dc02","name":"`txHash`/`network` malformed, or only one of the two was provided (`validation_error`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"83139173-0283-4a39-bcfd-56d9919c13e2","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2c7d4660-7cd2-4e9b-b36a-815c75c11ca3","name":"API key is missing the `charges:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3921aa3d-0a34-476f-a456-5007feb474c0","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ec8297b8-ad7f-4805-86bc-d7a4a281f280","name":"`network` was provided but this charge doesn't accept payment on it (`payment_pair_not_accepted`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"df069faa-2088-4594-9ad2-12407eb126ca","name":"This charge was already checked in the last 10 seconds — wait and retry, or watch `GET /v1/charges/{id}/events` instead (`rate_limited`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d992988f-c8b7-4152-bd73-3798caed1c65","name":"Could not reach the blockchain RPC to check this charge — transient, safe to retry shortly. (`rpc_unavailable`)","originalRequest":{"url":{"path":["charges",":id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"txHash\": \"0x1234567890123456789012345678901234567890123456789012345678901234\",\n  \"network\": \"base\"\n}","options":{"raw":{"language":"json"}}}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cf49e33d-8b5d-481c-9ba9-dca671b0619d","name":"Release an escrow charge's funds","request":{"name":"Release an escrow charge's funds","description":{"content":"Moves an escrow-configured charge's entire current token balance out of its Safe to the charge's split address, where the normal distribution mechanism then pays out the merchant/platform shares — see `docs/payments.md`. `signature` must be a valid Safe transaction signature from this charge's `escrowReleaserAddress`, authorizing a transfer of the escrow's full live balance to that split address; it is verified on-chain by the Safe contract itself before anything moves, never taken on faith by Klappay. Can only be called once per charge — a second call fails with `409 escrow_already_released`.","type":"text/plain"},"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"signature\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"4e3e9b52-b4f1-47d7-bf18-c54d67748644","name":"Released charge","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"adipisici\",\n  \"amount\": 83353414.31189483,\n  \"amountReceived\": 38622125.25416821,\n  \"isOverpaid\": true,\n  \"currency\": \"occaecat cillum\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"optimism\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"bnb\"\n    }\n  ],\n  \"paidWith\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDC\",\n      \"network\": \"polygon\"\n    }\n  ],\n  \"swapAlternatives\": [\n    {\n      \"token\": \"ETH\",\n      \"network\": \"base\"\n    },\n    {\n      \"token\": \"ETH\",\n      \"network\": \"arbitrum\"\n    }\n  ],\n  \"address\": \"eiusmod Ut labor\",\n  \"status\": \"pending\",\n  \"settlementStatus\": \"failed\",\n  \"environment\": \"live\",\n  \"apiKeyId\": \"ex ea\",\n  \"txHash\": \"sit cillum\",\n  \"externalRef\": \"dolore qui voluptate minim\",\n  \"source\": \"aliqua et in in\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"occaecat est\",\n          \"quantity\": 2583,\n          \"imageUrl\": \"https://smsYkEXhrEyUlGKMsu.bgl2xgfM7qDCHs85DlSNAfc2oFB\"\n        },\n        {\n          \"name\": \"consectetur Ut\",\n          \"quantity\": 4837,\n          \"imageUrl\": \"https://otrgkByYGrYdJYQcZJqXqWaiFj.kblyOy6Yxo55iZdx6b0evLpKXMUc\"\n        }\n      ]\n    },\n    \"aute3c\": {}\n  },\n  \"redirectUrl\": \"nostrud\",\n  \"checkoutUrl\": \"voluptate incididunt Excepteur tempor\",\n  \"splitRecipients\": [\n    {\n      \"address\": \"0xb1e0Aba5Cc8B8EAb0b7B97c449F0b0aa86cf4cE9\",\n      \"percent\": 82.07240880250448,\n      \"label\": \"enim ul\"\n    },\n    {\n      \"address\": \"0x0d1F710E2C0538f3A6cb8193FeB1e823E3e43a5d\",\n      \"percent\": 44.28609256382892,\n      \"label\": \"cillum anim\"\n    }\n  ],\n  \"createdAt\": \"1990-11-20T00:09:59.086Z\",\n  \"expiresAt\": \"2007-08-14T23:16:08.562Z\",\n  \"confirmedAt\": \"1991-02-24T14:38:12.945Z\",\n  \"settledAt\": \"1969-06-14T03:47:35.484Z\",\n  \"lastActivityAt\": \"1973-07-17T08:48:46.182Z\",\n  \"escrow\": {\n    \"releaserAddress\": \"sint non enim\",\n    \"releasedAt\": \"2001-08-30T20:15:30.764Z\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c39b964d-1526-4f9a-b93f-711f5b866d13","name":"`signature` did not authorize a release from this charge's `escrowReleaserAddress` (`escrow_invalid_signature`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"094d0b95-64d5-46b8-9a7c-626ddc16cc41","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"02e4798b-6682-490d-99d3-042c228cafab","name":"API key is missing the `charges:write` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"831f068a-d982-4e9e-929d-b031bc96c723","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4b876c10-6dc7-4cea-ab43-8c888a8b8328","name":"This escrow was already released, or another release request for it is currently being processed — safe to retry shortly in the latter case (`escrow_already_released` / `escrow_release_in_progress`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"95d430c6-2274-4b7a-a237-7fc80c845b1c","name":"This charge wasn't created as an escrow, currently holds a zero balance, or received payment across more than one token/network pair (not yet supported) (`escrow_not_configured` / `escrow_nothing_to_release` / `escrow_multiple_payment_pairs`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"acbd90ad-4e40-433e-b18f-a76a24562d59","name":"Could not reach the blockchain RPC to prepare or submit this release — transient, safe to retry shortly. (`rpc_unavailable`)","originalRequest":{"url":{"path":["charges",":id","release"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"signature\": \"0x2d0fbf1dba287883a4b6c5aeef9da7653dc68b3e20417d42e87db700ad9e878662edc0c052143c22892355d5c87e74e66be49399c7c7a4db98108ea51643d4651c\"\n}","options":{"raw":{"language":"json"}}}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]}],"event":[]},{"id":"31b9e732-0a44-4e99-8aa5-01b3bd83c840","name":"webhooks","item":[{"id":"59c353c8-6a3d-4714-aa97-22e08920f919","name":"Register a webhook","request":{"name":"Register a webhook","description":{"content":"Registers a URL to receive event notifications — must be HTTPS and resolve to a public address. Select events individually (`events`), by whole category (`eventCategories` — new events in that category arrive automatically), or via `events: [\"*\"]` combined with `excludeEvents`. At least one of `events` or `eventCategories` is required — omitting both is a `400`. Returns a signing secret exactly once; use it to verify the `X-Klappay-Signature` header on every delivery. Limited to 20 active webhooks per organization.","type":"text/plain"},"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"69117d71-b3d4-49f8-9b5b-7b2771ab1ef1","name":"Webhook created","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"incididunt amet in voluptate\",\n  \"environment\": \"test\",\n  \"url\": \"laborum ut do\",\n  \"events\": [\n    \"charge.created\",\n    \"charge.partially_paid\"\n  ],\n  \"eventCategories\": [\n    \"payments\",\n    \"webhooks\"\n  ],\n  \"excludeEvents\": [\n    \"charge.expired\",\n    \"charge.escrow_released\"\n  ],\n  \"isWildcard\": true,\n  \"secret\": \"dolor laborum Lorem\",\n  \"createdAt\": \"1960-09-05T00:53:04.265Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"754c1114-46db-42bf-9730-c14f56b92fb0","name":"Validation error, or `url` isn't a valid HTTPS URL that resolves to a public (non-private, non-loopback, non-reserved) address (`validation_error` / `invalid_webhook_url` / `insecure_webhook_url` / `unresolvable_webhook_url` / `unsafe_webhook_url`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"556d9fca-3aa4-456d-9cc9-d3695ffebc8f","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1da54748-61f6-48c0-81fa-60f747d52247","name":"API key is missing the `webhooks:write` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"562f8f94-ae7e-4e2b-bdf8-5878b59df2df","name":"Webhook limit reached for this organization (`webhook_limit_reached`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"<uri>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3960067c-c7ba-4aa2-91f5-ac9328bc4afc","name":"List webhooks","request":{"name":"List webhooks","description":{"content":"Lists your tenant's registered webhooks, with a hint of the secret instead of the secret itself. Scoped to the calling key's own environment — a webhook created with a `live`/`test` key is only visible to a `live`/`test` key respectively (a webhook predating environment-scoping, with no `environment` of its own, is visible to both).","type":"text/plain"},"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"3453a1e0-1fc5-4f58-aa4a-6c91387f18f0","name":"Webhooks","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": \"ut labore\",\n    \"environment\": \"live\",\n    \"url\": \"dolor U\",\n    \"events\": [\n      \"charge.settlement_failed\",\n      \"charge.settled\"\n    ],\n    \"eventCategories\": [\n      \"webhooks\",\n      \"payments\"\n    ],\n    \"excludeEvents\": [\n      \"charge.settlement_failed\",\n      \"charge.confirmed\"\n    ],\n    \"isWildcard\": true,\n    \"createdAt\": \"1964-02-12T20:46:41.009Z\",\n    \"hint\": \"est aute dolore quis anim\"\n  },\n  {\n    \"id\": \"sed\",\n    \"environment\": \"test\",\n    \"url\": \"dolore irure\",\n    \"events\": [\n      \"charge.expired\",\n      \"charge.overpaid\"\n    ],\n    \"eventCategories\": [\n      \"webhooks\",\n      \"webhooks\"\n    ],\n    \"excludeEvents\": [\n      \"charge.overpaid\",\n      \"charge.overpaid\"\n    ],\n    \"isWildcard\": false,\n    \"createdAt\": \"1947-10-11T02:56:15.621Z\",\n    \"hint\": \"id sit culpa\"\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"9811577a-35dc-4fe3-bbbe-a5a2d75d00fd","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"44458b5b-1c7f-476f-a04a-9c5fcea8c74f","name":"API key is missing the `webhooks:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c91a4d26-9726-4ece-befb-0b4fe82e6bb4","name":"{id}","item":[{"id":"ee79b0a9-d8c4-4afa-b3d1-3830da30a2b8","name":"Remove a webhook","request":{"name":"Remove a webhook","description":{"content":"Stops future event deliveries to this webhook. Past delivery history is kept and still queryable.","type":"text/plain"},"url":{"path":["webhooks",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"fb344bef-7566-47e2-9e86-69b653754f8c","name":"Webhook removed","originalRequest":{"url":{"path":["webhooks",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"}],"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"bceb13db-2944-4522-a5f4-03e3dd15fcfe","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"23efe183-9eef-4aca-938a-1e5ec9886c05","name":"API key is missing the `webhooks:write` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6605dab3-581e-4727-83e8-f1ae67e0c89e","name":"Webhook not found (`webhook_not_found`)","originalRequest":{"url":{"path":["webhooks",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"82fd8a38-a6f3-4903-9157-b3bfd9a0413e","name":"Rotate a webhook signing secret","request":{"name":"Rotate a webhook signing secret","description":{"content":"Generates a fresh signing secret for this webhook, replacing the old one immediately — no further `X-Klappay-Signature` header will validate against the old secret. Use this if a secret ever leaks, instead of deleting and recreating the webhook (which would lose its id and delivery history). Returns the new secret exactly once, same as creation.","type":"text/plain"},"url":{"path":["webhooks",":id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"7b12ded5-62bd-46d0-84ca-b436b5be2eb6","name":"Webhook with its new secret","originalRequest":{"url":{"path":["webhooks",":id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"incididunt amet in voluptate\",\n  \"environment\": \"test\",\n  \"url\": \"laborum ut do\",\n  \"events\": [\n    \"charge.created\",\n    \"charge.partially_paid\"\n  ],\n  \"eventCategories\": [\n    \"payments\",\n    \"webhooks\"\n  ],\n  \"excludeEvents\": [\n    \"charge.expired\",\n    \"charge.escrow_released\"\n  ],\n  \"isWildcard\": true,\n  \"secret\": \"dolor laborum Lorem\",\n  \"createdAt\": \"1960-09-05T00:53:04.265Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"855a667c-be1b-4e86-8467-dc505b038333","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks",":id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"858f7fde-2b1c-498d-9801-f46d3d0f2ad9","name":"API key is missing the `webhooks:manage_secret` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks",":id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2c88ef70-b295-4463-92f9-158fd1d17ef5","name":"Webhook not found (`webhook_not_found`)","originalRequest":{"url":{"path":["webhooks",":id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4cc75cf6-7b85-45a5-927d-7fb220ca061e","name":"deliveries","item":[{"id":"96d41788-9ed9-49d3-ac7d-7ed2d655d4da","name":"List delivery logs for a webhook","request":{"name":"List delivery logs for a webhook","description":{"content":"Returns delivery attempts for a webhook, newest first — status, HTTP response code, and attempt count. Cursor-paginated. Useful for diagnosing why an event never arrived.","type":"text/plain"},"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"20","description":"Max items to return per page (1–100, default 20)."},{"disabled":false,"key":"cursor","value":"<string>","description":"Opaque — pass the previous response's `nextCursor` verbatim to fetch the next page. Never construct or parse this value yourself; its shape is not part of the public contract and may change."}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"0d1e9c90-cb6e-4aff-9fa8-0ac245181fe1","name":"Delivery logs","originalRequest":{"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"data\": [\n    {\n      \"id\": \"labore pariatur voluptate esse exercitation\",\n      \"webhookId\": \"qui \",\n      \"event\": \"charge.escrow_released\",\n      \"status\": \"pending\",\n      \"attempts\": 86695544.2716802,\n      \"responseCode\": 2891363.16548115,\n      \"nextRetryAt\": \"2017-05-13T14:07:24.433Z\",\n      \"deliveredAt\": \"1998-12-03T07:17:14.702Z\",\n      \"createdAt\": \"1996-03-11T17:28:50.218Z\"\n    },\n    {\n      \"id\": \"magna\",\n      \"webhookId\": \"cillum ad occaecat\",\n      \"event\": \"charge.settled\",\n      \"status\": \"failed\",\n      \"attempts\": -25076674.782581717,\n      \"responseCode\": -1378094.1272081584,\n      \"nextRetryAt\": \"1956-09-20T04:58:27.181Z\",\n      \"deliveredAt\": \"1954-12-07T11:25:44.527Z\",\n      \"createdAt\": \"1966-06-29T10:46:05.811Z\"\n    }\n  ],\n  \"nextCursor\": \"id commodo\",\n  \"hasMore\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f6cbfe2e-f8eb-4009-bf1f-ffa62caa12b2","name":"Malformed pagination cursor (`invalid_cursor`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b5e6da68-b8f3-4a65-bd19-fcfb3c3fce79","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1dff86cb-0468-4f33-b308-4451e0629a3e","name":"API key is missing the `webhooks:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cab94ae0-3418-4986-bf7f-238438640c49","name":"Webhook not found (`webhook_not_found`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3cbd0960-afe9-4737-b1b2-049ac6b8cbf0","name":"Manually retry a webhook delivery","request":{"name":"Manually retry a webhook delivery","description":{"content":"Immediately attempts redelivery of a specific event, regardless of its normal retry schedule or whether retries were already exhausted. Does not wait for the attempt to finish — check `GET /v1/webhooks/{id}/deliveries` afterward for the outcome.","type":"text/plain"},"url":{"path":["webhooks",":id","deliveries",":deliveryId","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "},{"disabled":false,"type":"any","value":"<string>","key":"deliveryId","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"22b32a0a-d2b1-41f0-af16-ca24555573a8","name":"Retry accepted","originalRequest":{"url":{"path":["webhooks",":id","deliveries",":deliveryId","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "},{"disabled":false,"type":"any","value":"<string>","key":"deliveryId","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"}],"method":"POST","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"917376f3-8586-4aac-b4ed-5e228aee2063","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries",":deliveryId","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "},{"disabled":false,"type":"any","value":"<string>","key":"deliveryId","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"decceaee-6694-4ea3-a48e-5a9fa27da7c1","name":"API key is missing the `webhooks:write` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries",":deliveryId","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "},{"disabled":false,"type":"any","value":"<string>","key":"deliveryId","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"201dd70b-437d-485b-9018-fa1baaec6581","name":"Webhook or delivery not found (`webhook_not_found` / `delivery_not_found`)","originalRequest":{"url":{"path":["webhooks",":id","deliveries",":deliveryId","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "},{"disabled":false,"type":"any","value":"<string>","key":"deliveryId","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]}],"event":[]},{"id":"d6768c83-7cef-4f45-b8f0-fb3a8ae67774","name":"Stream every webhook event for this organization live (used by the official CLI)","request":{"name":"Stream every webhook event for this organization live (used by the official CLI)","description":{"content":"Opens a long-lived Server-Sent Events stream carrying every webhook event dispatched for the authenticated organization, regardless of whether any webhook is registered for it. Charge events are scoped to the connecting API key's own environment (a `test` key never sees `live` charge events and vice versa); webhook-delivery-health events aren't charge-specific, so they're always visible regardless of which key connected. The first event (`event: session`) carries an ephemeral signing secret, valid only for this connection and never persisted — used to sign forwarded payloads the same way a real webhook delivery is signed. This is what `klap listen --forward-to` (`@klappay/cli`, [github.com/klappay](https://github.com/klappay)) consumes to forward events to a local server without exposing it to the internet, and is also the right endpoint for anyone building an equivalent local-dev tool — no webhook registration required.","type":"text/plain"},"url":{"path":["webhooks","listen"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"text/event-stream"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"94a6763d-9597-4ade-aeb7-74790766cba6","name":"SSE stream. First event is `event: session` with `data: { \"secret\": \"whsec_...\" }`. Every subsequent event is `event: webhook` with `data: <WebhookPayload JSON>`. A comment-only heartbeat (`: ping`) is sent periodically to keep the connection alive through proxies.","originalRequest":{"url":{"path":["webhooks","listen"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"text/event-stream"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"text/event-stream"}],"body":"exercitatio","cookie":[],"_postman_previewlanguage":"text"},{"id":"fe1b352a-6f56-4a50-b023-659262b0f038","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["webhooks","listen"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ef93249b-1472-4b84-a80c-71d335d9ccdb","name":"API key is missing the `webhooks:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["webhooks","listen"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3676395b-9995-4f40-a211-484face67544","name":"Too many concurrent event streams — try again shortly. (`sse_capacity`)","originalRequest":{"url":{"path":["webhooks","listen"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"cd660a78-49c3-4e6b-a239-08da9ad69e5d","name":"Simulate a charge event (test API key only)","request":{"name":"Simulate a charge event (test API key only)","description":{"content":"Pushes a `test`-environment charge into any state transition, without any real on-chain transfer — the matching webhook fires and any SSE stream updates exactly as it would for a real payment. Both the API key used and the charge itself must be `test`-environment. Each event has a precondition on the charge's current state (e.g. `charge.underpaid` requires the charge to already be `partially_paid` — trigger that first): triggering an event the charge isn't eligible for returns `422 invalid_trigger_state`. `charge.settled`/`charge.settlement_failed` never call the blockchain — they simulate the outcome directly, so a test charge never spends real gas. `charge.overpaid` also dispatches `charge.confirmed` alongside it, matching real behavior — it never happens standalone. This is the only sandbox trigger endpoint — webhook-delivery-health events are derived from real delivery attempts and have no simulated trigger of their own.","type":"text/plain"},"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"event\": \"<string>\",\n  \"amount\": \"<number>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c3dcdb1b-dacf-4499-8749-f5cc9f05e0ea","name":"Charge updated","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"adipisici\",\n  \"amount\": 83353414.31189483,\n  \"amountReceived\": 38622125.25416821,\n  \"isOverpaid\": true,\n  \"currency\": \"occaecat cillum\",\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"optimism\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"bnb\"\n    }\n  ],\n  \"paidWith\": [\n    {\n      \"token\": \"USDC\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDC\",\n      \"network\": \"polygon\"\n    }\n  ],\n  \"swapAlternatives\": [\n    {\n      \"token\": \"ETH\",\n      \"network\": \"base\"\n    },\n    {\n      \"token\": \"ETH\",\n      \"network\": \"arbitrum\"\n    }\n  ],\n  \"address\": \"eiusmod Ut labor\",\n  \"status\": \"pending\",\n  \"settlementStatus\": \"failed\",\n  \"environment\": \"live\",\n  \"apiKeyId\": \"ex ea\",\n  \"txHash\": \"sit cillum\",\n  \"externalRef\": \"dolore qui voluptate minim\",\n  \"source\": \"aliqua et in in\",\n  \"metadata\": {\n    \"klappay\": {\n      \"products\": [\n        {\n          \"name\": \"occaecat est\",\n          \"quantity\": 2583,\n          \"imageUrl\": \"https://smsYkEXhrEyUlGKMsu.bgl2xgfM7qDCHs85DlSNAfc2oFB\"\n        },\n        {\n          \"name\": \"consectetur Ut\",\n          \"quantity\": 4837,\n          \"imageUrl\": \"https://otrgkByYGrYdJYQcZJqXqWaiFj.kblyOy6Yxo55iZdx6b0evLpKXMUc\"\n        }\n      ]\n    },\n    \"aute3c\": {}\n  },\n  \"redirectUrl\": \"nostrud\",\n  \"checkoutUrl\": \"voluptate incididunt Excepteur tempor\",\n  \"splitRecipients\": [\n    {\n      \"address\": \"0xb1e0Aba5Cc8B8EAb0b7B97c449F0b0aa86cf4cE9\",\n      \"percent\": 82.07240880250448,\n      \"label\": \"enim ul\"\n    },\n    {\n      \"address\": \"0x0d1F710E2C0538f3A6cb8193FeB1e823E3e43a5d\",\n      \"percent\": 44.28609256382892,\n      \"label\": \"cillum anim\"\n    }\n  ],\n  \"createdAt\": \"1990-11-20T00:09:59.086Z\",\n  \"expiresAt\": \"2007-08-14T23:16:08.562Z\",\n  \"confirmedAt\": \"1991-02-24T14:38:12.945Z\",\n  \"settledAt\": \"1969-06-14T03:47:35.484Z\",\n  \"lastActivityAt\": \"1973-07-17T08:48:46.182Z\",\n  \"escrow\": {\n    \"releaserAddress\": \"sint non enim\",\n    \"releasedAt\": \"2001-08-30T20:15:30.764Z\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d34fb61a-9e56-4008-8e93-375f68413889","name":"Invalid amount for charge.partially_paid/charge.overpaid (`invalid_amount`)","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c993f43c-5bc7-413a-9ea2-9a8b149d6fac","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"736d336d-cf8e-4c02-ac2b-3f13b31e8935","name":"Requires a test API key with the `sandbox:trigger` scope, and the charge itself must be test-environment (`forbidden` / `charge_not_test_environment` / `insufficient_scope`)","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b9d1ab1f-7f47-4a82-87ee-f92c013e1511","name":"Charge not found (`charge_not_found`)","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ff49c023-9529-4665-ac16-a24d593759ae","name":"Charge is not in the state this event requires (`invalid_trigger_state`)","originalRequest":{"url":{"path":["sandbox","charges",":id","trigger"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event\": \"charge.confirmed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9f193d78-5358-4fba-a685-7397aa73081b","name":"distributions/pending","item":[{"id":"77e7833f-e82d-43d3-9e31-3235ddcb1218","name":"List distributions currently claimable within the grace period","request":{"name":"List distributions currently claimable within the grace period","description":{"content":"Cursor-paginated snapshot of every split, in the connecting API key's own environment, with a confirmed payout still inside its 5-minute grace period before Klappay's own worker claims it. `distribute()` on 0xSplits is permissionless — anyone can call it and receive `distributorFeePercent` of the balance. This endpoint exists for discoverability and accountability (which key is consuming it), not to grant a new on-chain capability — `distribute()` is callable by anyone with or without it. Pairs with `GET /v1/distributions/pending/events` for real-time deltas — open that stream *first*, then call this endpoint to bootstrap state (or pass `?limit=` to the stream itself for a self-contained snapshot+live connection), treating `distribution.available`/`distribution.claimed` as idempotent add/remove operations against the snapshot; opening the stream after this call instead leaves a small gap where a delta between the two requests is never delivered. Rate limited to 20 requests/min per tenant (shared across every API key on your account, not per-key).","type":"text/plain"},"url":{"path":["distributions","pending"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"20","description":"Max items to return per page (1–100, default 20)."},{"disabled":false,"key":"cursor","value":"<string>","description":"Opaque — pass the previous response's `nextCursor` verbatim to fetch the next page. Never construct or parse this value yourself; its shape is not part of the public contract and may change."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"66ea7ef5-fe3d-4ef4-97da-4ace9f131f78","name":"Currently claimable distributions in the caller's environment","originalRequest":{"url":{"path":["distributions","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"data\": [\n    {\n      \"splitAddress\": \"consequat\",\n      \"network\": \"ethereum\",\n      \"token\": \"USDT\",\n      \"recipients\": [\n        {\n          \"address\": \"in\",\n          \"percentAllocation\": 34197005.50308783\n        },\n        {\n          \"address\": \"cillum dolore sit ut\",\n          \"percentAllocation\": -17001105.356619358\n        }\n      ],\n      \"distributorFeePercent\": -91657527.68734072,\n      \"estimatedRewardAmount\": -21094195.39553599,\n      \"availableSince\": \"2004-12-21T01:36:58.185Z\",\n      \"graceEndsAt\": \"1979-11-14T00:21:58.607Z\"\n    },\n    {\n      \"splitAddress\": \"laborum aliquip eiusmod\",\n      \"network\": \"avalanche\",\n      \"token\": \"USDC\",\n      \"recipients\": [\n        {\n          \"address\": \"in magna\",\n          \"percentAllocation\": -78671421.67497206\n        },\n        {\n          \"address\": \"laborum ad reprehenderit\",\n          \"percentAllocation\": 33463933.18631962\n        }\n      ],\n      \"distributorFeePercent\": -10874779.928762317,\n      \"estimatedRewardAmount\": 37495462.37729341,\n      \"availableSince\": \"1993-01-31T07:01:33.913Z\",\n      \"graceEndsAt\": \"1960-10-09T06:43:54.234Z\"\n    }\n  ],\n  \"nextCursor\": \"fugiat dolore\",\n  \"hasMore\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ad2540d9-c497-4a7f-8cf7-81d0d2d45462","name":"Malformed pagination cursor (`invalid_cursor`)","originalRequest":{"url":{"path":["distributions","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2ef78662-b233-4fce-a67a-817de878692d","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["distributions","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ae921176-f0bc-465a-9156-5966d6aef485","name":"Rate limited — max 20 requests/min on /v1/distributions/* (`rate_limited`)","originalRequest":{"url":{"path":["distributions","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"20"},{"key":"cursor","value":"<string>"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"49f34013-7839-47a8-8d93-864741e2694e","name":"Real-time stream of distribution availability","request":{"name":"Real-time stream of distribution availability","description":{"content":"Server-Sent Events, scoped to the connecting API key's own environment — a `test` key never sees `live` distributions and vice versa. Emits `distribution.available` the instant a new distribution enters its grace period (or re-enters it, if Klappay's own attempt failed and is being retried), and `distribution.claimed` the instant one is no longer claimable — settled by anyone, or picked up by Klappay's own worker (published the moment the worker claims the row, before it finishes, so a keeper doesn't waste gas racing an in-flight attempt). By default (`?limit=` omitted or `0`), no initial snapshot is sent — connect here *first*, then call `GET /v1/distributions/pending` to bootstrap, applying its rows as the baseline and every event received (before or after that call resolves) as an idempotent add/remove on top of it. Pass `?limit=` (up to 100) for a self-contained connection instead — up to that many currently-claimable distributions are sent as synthetic `distribution.available` events immediately after connecting, before live deltas continue; if more than `limit` are claimable at connect time the excess isn't sent, so use the paginated `GET /v1/distributions/pending` directly if you need a complete listing during an anomalous backlog. Rate limited to 20 requests/min per tenant (shared across every API key on your account, not per-key) for the initial connection.","type":"text/plain"},"url":{"path":["distributions","pending","events"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"0","description":"How many currently-claimable distributions to emit as an initial snapshot right after connecting — each as a synthetic `distribution.available` event — before continuing with real-time deltas. `0` (the default, same as omitting it) sends no snapshot at all, matching this endpoint's original behavior: connect first, then call `GET /v1/distributions/pending` yourself to bootstrap. Not a page — there is no cursor for this snapshot, so if more than `limit` are claimable at connect time, the excess is simply not sent; call `GET /v1/distributions/pending` directly for a complete, paginated listing."}],"variable":[]},"header":[{"key":"Accept","value":"text/event-stream"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"c8223a62-f290-4707-a2e3-dfad8b0b57cb","name":"SSE stream. Each event is `event: distribution.available` or `event: distribution.claimed` with `data: <PendingDistributionEvent JSON>`. A comment-only heartbeat (`: ping`) is sent periodically to keep the connection alive through proxies.","originalRequest":{"url":{"path":["distributions","pending","events"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"0"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"text/event-stream"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"text/event-stream"}],"body":"exercitatio","cookie":[],"_postman_previewlanguage":"text"},{"id":"2c1dd516-fd50-4379-8dcf-06190c5e13bf","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["distributions","pending","events"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"0"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d830428b-8828-4135-aa8f-2123155a6d26","name":"Rate limited — max 20 requests/min on /v1/distributions/* (`rate_limited`)","originalRequest":{"url":{"path":["distributions","pending","events"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"0"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"dc95e35f-8a0b-4746-9cca-a76f0254af65","name":"Too many concurrent event streams — try again shortly. (`sse_capacity`)","originalRequest":{"url":{"path":["distributions","pending","events"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"0"}],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"b1871222-e16f-48ef-8330-6cf8522f515c","name":"List (token, network) pairs your environment's key can accept","request":{"name":"List (token, network) pairs your environment's key can accept","description":{"content":"The live capabilities matrix for the environment your API key belongs to — the exact same `TOKEN_ADDRESSES` lookup `POST /v1/charges` validates `acceptedPayments` against, so a pair listed here is always safe to submit. Build a payment-method picker from this instead of hardcoding the matrix client-side; it changes as new networks/tokens come online.","type":"text/plain"},"url":{"path":["networks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"87ad0ad7-6a2d-4481-921a-c0c8a668b2f0","name":"Accepted (token, network) pairs for the calling environment","originalRequest":{"url":{"path":["networks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"acceptedPayments\": [\n    {\n      \"token\": \"USDT\",\n      \"network\": \"avalanche\"\n    },\n    {\n      \"token\": \"USDT\",\n      \"network\": \"ethereum\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1b655cf3-1cc2-45c4-9712-a510cbd8ef0f","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["networks"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ea0f9a2d-ec99-4e37-89f9-f1177da44ac7","name":"Query metrics","request":{"name":"Query metrics","description":{"content":"Ad-hoc analytics over your `charges`/`transactions`/`distributions` data — pick a resource, an aggregation, optional `groupBy` (including a single time-bucketed `date_bucket` entry), and filters; the response rows are shaped by that query, not a fixed report. Every filterable/groupable/aggregatable field is an explicit, typed enum — this is not a raw SQL passthrough. Scoped entirely to the calling API key's own tenant — there is no way to query another tenant's data. `environment` must match the calling key's own environment (a `test` key can never query `live` data or vice versa) — a mismatch is `422 environment_mismatch`. Rate limited to 60 requests/min per tenant (shared across every API key on your account, not per-key) — this can be an expensive aggregate query, tighter than the general `/v1/*` limit.","type":"text/plain"},"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"resource\": \"<string>\",\n  \"environment\": \"<string>\",\n  \"dateRange\": {\n    \"field\": \"<string>\",\n    \"from\": \"<dateTime>\",\n    \"to\": \"<dateTime>\"\n  },\n  \"metrics\": [\n    {\n      \"aggregation\": \"<string>\",\n      \"field\": \"<string>\",\n      \"alias\": \"<string>\"\n    }\n  ],\n  \"orderBy\": {\n    \"key\": \"<string>\",\n    \"direction\": \"<string>\"\n  },\n  \"limit\": 100\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"050c74c1-1fc7-428d-9f0d-3bd719c4a1d2","name":"Query result rows","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"data\": [\n    {\n      \"adipisicing9d\": \"ex id Ut pariatur\"\n    },\n    {\n      \"magna_4dd\": \"non Ut\",\n      \"quisc\": \"cupidatat occaecat elit\",\n      \"elitf34\": \"in\"\n    }\n  ],\n  \"meta\": {\n    \"resource\": \"transactions\",\n    \"environment\": \"live\",\n    \"rowCount\": -55724636,\n    \"truncated\": false\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1fe6edc2-d1fe-488b-8eb9-53c1ce7d0314","name":"Validation error, or a filter/groupBy/metric value that fails its field type (`validation_error` / `invalid_field`)","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5b2964ba-59d8-49b6-97ca-c8a013c8e35a","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"49f54a3a-271a-4006-8473-17866fcd45dd","name":"API key is missing `metrics:read` and the matching `metrics:{resource}:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"49630744-d867-49d8-b23b-3c41ac9df9d4","name":"The requested `environment` doesn't match this API key's own environment (`environment_mismatch`)","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"01a25c3f-292f-4153-b797-94c405241492","name":"Rate limited — max 60 requests/min on /v1/metrics/* (`rate_limited`)","originalRequest":{"url":{"path":["metrics","query"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"resource\": \"charges\",\n  \"environment\": \"live\",\n  \"dateRange\": {\n    \"field\": \"createdAt\",\n    \"from\": \"2026-07-01T00:00:00.000Z\",\n    \"to\": \"2026-08-01T00:00:00.000Z\"\n  },\n  \"groupBy\": [\n    {\n      \"type\": \"date_bucket\",\n      \"field\": \"createdAt\",\n      \"granularity\": \"day\"\n    }\n  ],\n  \"metrics\": [\n    {\n      \"aggregation\": \"sum\",\n      \"field\": \"amount\",\n      \"alias\": \"volume\"\n    },\n    {\n      \"aggregation\": \"count\"\n    }\n  ],\n  \"filters\": [\n    {\n      \"field\": \"status\",\n      \"operator\": \"eq\",\n      \"value\": \"confirmed\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"33b22f53-ac61-4038-9c7a-a76e982f188d","name":"recipients","item":[{"id":"7592ea0f-c618-4161-966c-397095f28718","name":"Register a trusted split recipient","request":{"name":"Register a trusted split recipient","description":{"content":"Registers an address as eligible to be *referenced* (by `recipientId`) inside a `splitRecipients` entry on `POST /v1/charges`. Idempotent — registering an address already known to your organization/environment updates its `label` (and revives it if previously revoked) instead of creating a duplicate. Does **not** make this address eligible to become an API key's own `payoutAddress` — that requires the separate `recipients:manage_payout` scope on `PATCH /v1/recipients/{id}`. Every call through this scope, including re-registering an address that already has `payout: true`, resets it back to `false` — `recipients:write` can never grant or preserve payout eligibility, only `recipients:manage_payout` can, and only by calling `PATCH` again afterward.","type":"text/plain"},"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"address\": \"<string>\",\n  \"label\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c97554ab-f296-451b-a3fa-8d3b6d65a3a0","name":"Recipient registered (or revived/updated, if it already existed)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"address\": \"<string>\",\n  \"label\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"fugiat occaecat amet elit\",\n  \"environment\": \"test\",\n  \"address\": \"esse sed non reprehenderit\",\n  \"label\": \"velit voluptate quis\",\n  \"payout\": false,\n  \"createdAt\": \"1963-07-05T14:22:11.020Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b3698f68-ad46-48a7-a8d1-7cc9af60ac79","name":"Validation error (`validation_error`)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"address\": \"<string>\",\n  \"label\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53ab3656-2595-430d-acfd-45fd852efaa3","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"address\": \"<string>\",\n  \"label\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4bb5eda3-9c17-4fc2-a304-a8c0bc87362c","name":"API key is missing the `recipients:write` scope, or holds it together with `charges:split_write` (never allowed together) (`insufficient_scope` / `conflicting_api_key_scopes`)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"address\": \"<string>\",\n  \"label\": \"<string>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a1da340b-aab8-4589-bc6f-e678b008e45e","name":"List registered recipients","request":{"name":"List registered recipients","description":{"content":"Lists your tenant's non-revoked recipients for the calling key's environment, newest first.","type":"text/plain"},"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"5f72f66f-dfc1-44fa-99fe-f420aaec4baa","name":"Recipients","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": \"commodo id labore magna\",\n    \"environment\": \"live\",\n    \"address\": \"qui voluptate\",\n    \"label\": \"amet enim deserunt nulla\",\n    \"payout\": true,\n    \"createdAt\": \"2018-12-15T12:34:42.500Z\"\n  },\n  {\n    \"id\": \"cillum pariatur mollit dolor\",\n    \"environment\": \"test\",\n    \"address\": \"ea dolor proident amet\",\n    \"label\": \"quis do mollit nulla minim\",\n    \"payout\": false,\n    \"createdAt\": \"2025-10-20T03:45:23.314Z\"\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"966905a9-5bca-4d11-a357-1496b06e7240","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b5bd124f-4afc-4357-9401-e89c3a608789","name":"API key is missing the `recipients:read` scope (`insufficient_scope`)","originalRequest":{"url":{"path":["recipients"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"381dc5a8-30eb-42e5-9817-d0c73c957d00","name":"{id}","item":[{"id":"bc7c4826-7ef8-4784-8660-8ae6b1e25dfb","name":"Set a recipient's payout eligibility","request":{"name":"Set a recipient's payout eligibility","description":{"content":"Sets whether this recipient is eligible to become an API key's own `payoutAddress` (in addition to being referenceable in a split, which any non-revoked recipient already is). Requires `recipients:manage_payout` — a scope deliberately separate and stricter than `recipients:write`, meant to be held only by a key that already went through its own out-of-band approval for this action (e.g. Dashboard's own internal key, after session + owner + email confirmation on its side) — never a merchant-facing or third-party integration key.","type":"text/plain"},"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]},"body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a32ce55a-200b-4104-aff9-e5b051a0164e","name":"Recipient with updated payout eligibility","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"fugiat occaecat amet elit\",\n  \"environment\": \"test\",\n  \"address\": \"esse sed non reprehenderit\",\n  \"label\": \"velit voluptate quis\",\n  \"payout\": false,\n  \"createdAt\": \"1963-07-05T14:22:11.020Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bd0020e9-42e1-4559-9dce-f4be7e7e5f78","name":"Validation error (`validation_error`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7f9c988d-bbc7-4780-a043-12dacfeaf239","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7199cb4e-f733-46d8-8aca-cfc8959ea893","name":"API key is missing the `recipients:manage_payout` scope, or holds it together with `charges:split_write` (never allowed together) (`insufficient_scope` / `conflicting_api_key_scopes`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"10b9c178-78b8-49a5-a279-bc9031a06e5c","name":"Recipient not found (`recipient_not_found`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payout\": \"<boolean>\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8d585cf9-addf-4856-8ce0-62e9126eed70","name":"Revoke a recipient","request":{"name":"Revoke a recipient","description":{"content":"Revokes a recipient — it can no longer be referenced in a new `splitRecipients` entry. Past charges that already referenced it are unaffected. If this recipient currently has `payout: true`, revoking it requires the `recipients:manage_payout` scope, not just `recipients:write` — a `recipients:write`-only key gets `404 recipient_not_found` (identical to a genuinely nonexistent id, never a distinct error that would confirm a payout-eligible recipient exists). This is deliberate: `payoutAddress` is public (the first entry in the on-chain split), so if a plain `recipients:write` key could revoke a `payout: true` recipient, it could disable any other API key in the org whose `payoutAddress` matches it — revoking one *does* immediately reject every future request from a matching key (`401 payout_address_revoked`), so only a key that already holds the stricter scope can trigger that.","type":"text/plain"},"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","auth":{"type":"bearer","bearer":[{"key":"token","value":"{{bearerToken}}"}]}},"response":[{"id":"32005281-c3d3-4619-a276-ac4ebddc36f1","name":"Recipient revoked","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"}],"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"bfd5fbcb-eb3d-473c-97d6-ecf2f791373b","name":"Missing or invalid API key — including a key whose payoutAddress has since been revoked as a recipient (`missing_api_key` / `invalid_api_key` / `payout_address_revoked`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unauthorized","code":401,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5fdbfc0d-b38d-46c4-a20e-fb7102cd4d7c","name":"API key is missing the `recipients:write` scope, or holds it together with `charges:split_write` (never allowed together) (`insufficient_scope` / `conflicting_api_key_scopes`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"77da8bb7-86d0-40eb-983b-82931341c433","name":"Recipient not found, or exists but is payout-eligible and this key lacks `recipients:manage_payout` to revoke it (`recipient_not_found`)","originalRequest":{"url":{"path":["recipients",":id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"<string>","key":"id","description":"(Required) "}]},"header":[{"description":{"content":"Added as a part of security scheme: bearer","type":"text/plain"},"key":"Authorization","value":"Bearer <token>"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"error\": {\n    \"code\": \"Lorem\",\n    \"message\": \"ut mollit\",\n    \"param\": \"Ut fugiat pariatur\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]}],"event":[]}],"event":[],"variable":[{"type":"string","value":"https://api.klappay.com/v1","key":"baseUrl"}],"info":{"_postman_id":"ff389a0e-3f10-4f19-a734-1f26d9670d3f","name":"Klappay Core API","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json","description":{"content":"Klappay — Keep Liquidity Always Permissionless.\n\nA non-custodial REST API for accepting and distributing on-chain payments. Funds never pass through Klappay — each charge gets a predicted, immutable on-chain address, and payments are detected and settled directly to the merchant.\n\nAn MIT-licensed npm package, `@klappay/types` (TypeScript types and Zod schemas for every request/response shape below), makes integrating easier — it wraps this exact API, so nothing here is duplicated by hand. Full guides and every schema explained: **[/types](/types)**. Official SDKs (multiple languages) and a CLI (`@klappay/cli`) are also available — see [github.com/klappay](https://github.com/klappay).\n\nPrefer Postman? [Download a ready-to-import collection](/postman/core.postman_collection.json) — generated fresh from this exact OpenAPI spec, always in sync with what you see here.\n\n**Quick reference:**\n- **Timestamps** — ISO 8601, UTC (e.g. `2026-01-15T10:30:00.000Z`).\n- **Amounts** — decimal, major unit (dollars, never cents), up to 6 fractional digits; anything more precise is silently truncated.\n- **Durations** (`expiresIn`, etc.) — whole seconds.\n- **Percentages** (`feePercent`, etc.) — plain numbers, `1.5` means 1.5% (never a 0–1 fraction).\n- **Environments** — one base URL; `live` vs `test` is selected entirely by which API key you present (`klap_live_...` vs `klap_test_...`), not by which URL you call. `test` keys never touch the blockchain and unlock `POST /v1/sandbox/*`.\n- **Versioning** — `/v1/` fields and behavior won't change or disappear without a new version prefix; new optional fields/endpoints may be added over time.\n- **Rate limits** — `100` req/min per API key or IP on `/v1/*`. A `429` response includes a `Retry-After` header.","type":"text/plain"}}}