{"info":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","description":"<html><head></head><body><h1 id=\"getting-started\">Getting Started</h1>\n<p>Liberpay is a self-custody payment platform. Buyers pay in crypto (for example, USDC on Polygon) or in fiat (card, Pix). The money goes to the seller's wallet or account. Liberpay does not hold it.</p>\n<p>To use the API, you need a Liberpay account. Go to <a href=\"https://liberpay.com\">https://liberpay.com</a> to create one.</p>\n<h1 id=\"base-url\">Base URL</h1>\n<p>All API calls use this base URL:</p>\n<p><code>https://api.liberpay.com</code></p>\n<p>In this collection, the <code>https://api.liberpay.com</code> variable holds the base URL. Every path starts with <code>/api</code>.</p>\n<h1 id=\"authentication\">Authentication</h1>\n<h2 id=\"create-an-api-key\">Create an API key</h2>\n<ol>\n<li>Sign in at <a href=\"https://app.liberpay.com\">https://app.liberpay.com</a>.</li>\n<li>Open your profile page.</li>\n<li>In the <strong>API Keys</strong> section, create a new key.</li>\n<li>Copy the key and keep it in a safe place. Liberpay shows the key only one time.</li>\n</ol>\n<p>An API key does not expire. It stays valid until you revoke it. You can also manage keys with the endpoints in the <strong>auth</strong> folder.</p>\n<h2 id=\"send-the-key\">Send the key</h2>\n<p>Send the key in the <code>Authorization</code> header of each request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer &lt;your API key&gt;\n</code></pre><p>In this collection, put your key in the <code></code> variable. The collection sends it on every request.</p>\n<p>An API key acts as the user who created it. It can do all the things that the user can do. Keep your keys secret. Do not put them in browser or mobile app code.</p>\n<p>Some endpoints are public and do not need a key. The description of each endpoint tells you if it needs a key.</p>\n<h1 id=\"requests-and-responses\">Requests and Responses</h1>\n<ul>\n<li>Send request bodies as JSON, with the header <code>Content-Type: application/json</code>. File uploads use <code>multipart/form-data</code>.</li>\n<li>Most successful responses put the result in a <code>data</code> key: <code>{\"data\": {...}}</code> or <code>{\"data\": [...]}</code>.</li>\n<li>Amounts in fiat are decimal strings, for example <code>\"102.00\"</code>. Amounts in crypto are integer strings in the smallest unit of the token (for example, USDC has 6 decimals, so <code>\"1000000\"</code> is 1 USDC).</li>\n<li>Timestamps use ISO 8601 in UTC. Some fields do not include the <code>Z</code> suffix.</li>\n</ul>\n<h2 id=\"optional-headers-and-parameters\">Optional headers and parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Where</th>\n<th>Use</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>X-Liberpay-Locale</code></td>\n<td>header</td>\n<td>The language of messages in the response. Values: <code>en-US</code>, <code>pt-BR</code>. Without it, Liberpay uses the user's language.</td>\n</tr>\n<tr>\n<td><code>X-Liberpay-Country</code></td>\n<td>header</td>\n<td>A country code (<code>BR</code>, <code>US</code>) for anonymous calls. It sets default language and currency. It never changes the country of a signed-in user.</td>\n</tr>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>query</td>\n<td>A fiat currency symbol, for example <code>USD</code>. Responses that show charges then also convert prices to this currency.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"errors\">Errors</h1>\n<p>Liberpay uses standard HTTP status codes. Error bodies use these shapes:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n<th>Body</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>A parameter is missing or not valid.</td>\n<td><code>{\"status\": \"error\", \"message\": \"...\"}</code></td>\n</tr>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n<td><code>{\"status\": \"error\", \"message\": \"Unauthorized!\"}</code></td>\n</tr>\n<tr>\n<td>403</td>\n<td>The token is valid, but the user cannot do this action.</td>\n<td><code>{\"status\": \"error\", \"message\": \"...\"}</code></td>\n</tr>\n<tr>\n<td>404</td>\n<td>The resource does not exist, or you cannot see it.</td>\n<td><code>{\"status\": \"error\", \"message\": \"...\"}</code> or <code>{\"errors\": {\"detail\": \"Not Found\"}}</code></td>\n</tr>\n<tr>\n<td>409</td>\n<td>The account must complete a step first. For example, a user with no country can only read.</td>\n<td><code>{\"status\": \"error\", \"code\": \"country_required\", \"message\": \"...\"}</code></td>\n</tr>\n<tr>\n<td>422</td>\n<td>The data is not valid. <code>errors</code> lists the fields.</td>\n<td><code>{\"status\": \"error\", \"errors\": {\"field\": [\"message\"]}}</code></td>\n</tr>\n<tr>\n<td>429</td>\n<td>Too many requests. Some public endpoints have a rate limit.</td>\n<td><code>{\"status\": \"error\", \"message\": \"...\"}</code></td>\n</tr>\n</tbody>\n</table>\n</div><p>The <code>message</code> text uses the language of the request.</p>\n<p>Some business rules return 500 with a <code>message</code> today, for example \"charge must have created status\". Read the <code>message</code> text, not only the status code.</p>\n<h1 id=\"the-charge-lifecycle\">The Charge Lifecycle</h1>\n<p>To accept a payment, you, the seller, first create a <strong>charge</strong> with the <strong>charges › create</strong> endpoint.</p>\n<p>A charge has one of 10 statuses:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td><code>created</code></td>\n<td>The default for a new charge. The charge waits for payment.</td>\n</tr>\n<tr>\n<td>2</td>\n<td><code>pending</code></td>\n<td>A payment was reported. Liberpay has not confirmed it yet.</td>\n</tr>\n<tr>\n<td>3</td>\n<td><code>confirmed</code></td>\n<td>Liberpay verified the payment.</td>\n</tr>\n<tr>\n<td>4</td>\n<td><code>expired</code></td>\n<td>The price quote expired before payment.</td>\n</tr>\n<tr>\n<td>5</td>\n<td><code>failed</code></td>\n<td>A payment was reported, but it failed.</td>\n</tr>\n<tr>\n<td>6</td>\n<td><code>underpaid</code></td>\n<td>A payment was reported, but it was less than the price.</td>\n</tr>\n<tr>\n<td>7</td>\n<td><code>refund_pending</code></td>\n<td>A refund is in progress.</td>\n</tr>\n<tr>\n<td>8</td>\n<td><code>refunded</code></td>\n<td>The refund was sent and verified.</td>\n</tr>\n<tr>\n<td>9</td>\n<td><code>refund_failed</code></td>\n<td>The refund failed or was not valid.</td>\n</tr>\n<tr>\n<td>10</td>\n<td><code>canceled</code></td>\n<td>The charge was canceled.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Important rules:</p>\n<ul>\n<li><strong>Payment link.</strong> Every charge has a payment link: <code>https://app.liberpay.com/charges/:shortcode/pay</code>. While a charge is <code>created</code>, anyone with the shortcode can read it. After that, only the parties of the charge can read it.</li>\n<li><strong>Price quote.</strong> When you create a charge, update it, or set its payment currency, Liberpay gets a new price quote and calculates the crypto amount again. The quote has an expiry time (<code>expires_at</code>). After expiry, set the currency again or update the charge to get a new quote.</li>\n<li><strong>Fiat payments</strong> (card, Pix) update the charge status automatically through the payment provider.</li>\n<li><strong>Crypto payments</strong> must be reported after the buyer pays. Use <strong>charges › reportTransaction</strong>. Liberpay then verifies the transaction on the blockchain.</li>\n</ul>\n<h1 id=\"accept-a-payment\">Accept a Payment</h1>\n<h2 id=\"hosted-payment-page-recommended\">Hosted payment page (recommended)</h2>\n<p>This is the easiest integration:</p>\n<ol>\n<li>Create the charge with the API.</li>\n<li>Send the buyer to the payment link.</li>\n</ol>\n<p>Liberpay hosts the payment page. It handles currency selection, the charge nonce and hash, wallet connection, fiat checkout, and the report of blockchain transactions.</p>\n<h2 id=\"your-own-payment-page\">Your own payment page</h2>\n<p>You can build your own payment page. This takes more work. At a high level, you must:</p>\n<ol>\n<li>Get the gateways of the charge's store.</li>\n<li>Get the currencies that those gateways accept.</li>\n<li>Set the charge currency each time the buyer selects a currency.</li>\n<li>For ERC-20 tokens, ask the buyer to approve the token, then send the payment.</li>\n<li>For fiat, create a fiat link (see the <strong>fiat links</strong> folder) and send the buyer to it.</li>\n<li>Get the charge nonce and hash from the <code>generateCommitment</code> method of the <code>NFTiPayReceipt</code> contract.</li>\n<li>Report the transaction after the buyer pays.</li>\n</ol>\n<p>We can help you with your integration. Write to <a href=\"mailto:support@liberpay.com\">support@liberpay.com</a>.</p>\n<h1 id=\"webhooks\">Webhooks</h1>\n<p>Liberpay does not send webhooks to your server yet. To know when a charge changes status, read the charge with <strong>charges › get</strong> at regular intervals. Stop when the status is final (for example <code>confirmed</code>, <code>expired</code>, <code>failed</code> or <code>canceled</code>).</p>\n<p>The <strong>events</strong> folder is not a webhook system. It records activity on an invoice, for example when a buyer views it.</p>\n<h1 id=\"smart-contracts-and-addresses\">Smart Contracts and Addresses</h1>\n<p>NFT receipts from Liberpay come only from this contract:</p>\n<p><strong>Polygon Mainnet (NFTiPayReceipt):</strong> <code>0x714256086AC8636E95FE28D1b010a0083A684c6d</code></p>\n<p>Gateway fees and other platform fees on the blockchain are paid only in official USDC to this address:</p>\n<p><strong>Main fee wallet:</strong> <code>0xB00a8eb1e0774401208F9507d0d69360F42B9B97</code></p>\n<h1 id=\"support\">Support</h1>\n<p>Write to <a href=\"mailto:support@liberpay.com\">support@liberpay.com</a> for help.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Getting Started","slug":"getting-started"},{"content":"Base URL","slug":"base-url"},{"content":"Authentication","slug":"authentication"},{"content":"Requests and Responses","slug":"requests-and-responses"},{"content":"Errors","slug":"errors"},{"content":"The Charge Lifecycle","slug":"the-charge-lifecycle"},{"content":"Accept a Payment","slug":"accept-a-payment"},{"content":"Webhooks","slug":"webhooks"},{"content":"Smart Contracts and Addresses","slug":"smart-contracts-and-addresses"},{"content":"Support","slug":"support"}],"owner":"47943201","collectionId":"fb7d9328-d944-41b5-8605-d459ea859701","publishedId":"2sBYHVvJcU","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"20a5f3"},"publishDate":"2026-10-27T16:39:37.000Z"},"item":[{"name":"auth","item":[{"name":"verify","id":"0f19b9a3-caf6-4db5-be96-cfd9e4b58089","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/auth/verify","description":"<p>Checks the token in the <code>Authorization</code> header and returns the user that owns it. Use this call to test a new API key.</p>\n<p>The response also gives the identity verification (KYC) status of the user and the P2P account of the user. <code>p2p_account</code> is <code>null</code> when the user has no P2P account.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.user.id</code></td>\n<td><code>integer</code></td>\n<td>The user ID.</td>\n</tr>\n<tr>\n<td><code>data.user.address</code></td>\n<td><code>string|null</code></td>\n<td>The primary wallet address of the user. It is <code>null</code> for an email-only user.</td>\n</tr>\n<tr>\n<td><code>data.user.email</code></td>\n<td><code>string|null</code></td>\n<td>The email of the user.</td>\n</tr>\n<tr>\n<td><code>data.user.username</code></td>\n<td><code>string|null</code></td>\n<td>The username of the user.</td>\n</tr>\n<tr>\n<td><code>data.user.masked_government_id</code></td>\n<td><code>string|null</code></td>\n<td>The government ID (for example CPF) with most digits hidden. The API never returns the full ID.</td>\n</tr>\n<tr>\n<td><code>data.user.wallet_provider</code></td>\n<td><code>string|null</code></td>\n<td>How the wallet is held: <code>self_custody</code>, <code>dynamic</code> (embedded wallet), or <code>null</code> (email-only user).</td>\n</tr>\n<tr>\n<td><code>data.user.country</code></td>\n<td><code>object|null</code></td>\n<td>The country of the user (<code>id</code>, <code>code</code>, <code>name</code>). It is <code>null</code> until the user selects a country.</td>\n</tr>\n<tr>\n<td><code>data.user.fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The default fiat currency of the user's country.</td>\n</tr>\n<tr>\n<td><code>data.user.locale</code></td>\n<td><code>string|null</code></td>\n<td>The language of the user, for example <code>pt_BR</code> or <code>en_US</code>.</td>\n</tr>\n<tr>\n<td><code>data.verification</code></td>\n<td><code>string</code></td>\n<td>The identity verification status: <code>none</code>, <code>created</code>, <code>pending</code>, <code>completed</code> or <code>failed</code>.</td>\n</tr>\n<tr>\n<td><code>data.p2p_account</code></td>\n<td><code>object|null</code></td>\n<td>The P2P account of the user, with its gateway. It is <code>null</code> when the user has no P2P account.</td>\n</tr>\n<tr>\n<td><code>data.p2p_account.onboarding</code></td>\n<td><code>object|null</code></td>\n<td>The state of automatic P2P setup. <code>step</code> is <code>done</code> when setup is complete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing, not valid, or revoked.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","auth","verify"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"c7cbbe85-b986-4242-92fe-6b631b6f0e9d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/auth/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"user\": {\n            \"id\": 42,\n            \"address\": \"0x1111222233334444555566667777888899990000\",\n            \"email\": \"steve+seller@example.com\",\n            \"username\": \"stevestore\",\n            \"avatar_url\": null,\n            \"legal_name\": \"Steve Example\",\n            \"has_government_id\": true,\n            \"masked_government_id\": \"***.***.***-12\",\n            \"wallet_provider\": \"self_custody\",\n            \"has_dynamic_account\": false,\n            \"preview\": false,\n            \"country\": {\n                \"id\": 1,\n                \"code\": \"BR\",\n                \"name\": \"Brazil\"\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"locale\": \"pt_BR\",\n            \"user_kyc_enabled\": true\n        },\n        \"verification\": \"completed\",\n        \"p2p_account\": {\n            \"id\": 7,\n            \"name\": \"steve\",\n            \"user_id\": 42,\n            \"business_id\": 15,\n            \"store_id\": 21,\n            \"gateway_id\": 73,\n            \"onboarding\": {\n                \"step\": \"done\"\n            },\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"P2P\",\n                \"address\": \"0xaaaabbbbccccddddeeeeffff0000111122223333\",\n                \"licensed\": false,\n                \"type_id\": 1,\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"is_system\": false,\n                \"gateway_version_id\": 1,\n                \"version\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon-v1\",\n                    \"label\": \"Polygon Gateway v1\",\n                    \"number\": 1,\n                    \"contract_artifact\": \"NFTiPayGateway\",\n                    \"default\": true\n                }\n            }\n        }\n    }\n}"},{"id":"70535ca3-d7fd-40c3-8ca0-90e00189c58d","name":"401 Unauthorized","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/auth/verify"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Unauthorized!\"\n}"}],"_postman_id":"0f19b9a3-caf6-4db5-be96-cfd9e4b58089"},{"name":"list","id":"d2c7defe-3177-48c9-8a53-ec976de3e9c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/auth_tokens","description":"<p>Lists the API keys of the current user. The list does not include the key value. The API shows the key value only one time, in the <code>create</code> response.</p>\n<p>Use the <code>id</code> to revoke a key with <code>delete</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The API key ID.</td>\n</tr>\n<tr>\n<td><code>data[].context</code></td>\n<td><code>string</code></td>\n<td>The scope of the key. It is always <code>api:*</code> (full access to the account).</td>\n</tr>\n<tr>\n<td><code>data[].hash</code></td>\n<td><code>string</code></td>\n<td>The SHA-256 hash of the key. You cannot use the hash as a token.</td>\n</tr>\n<tr>\n<td><code>data[].inserted_at</code></td>\n<td><code>string</code></td>\n<td>The date and time (UTC) of creation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing, not valid, or revoked.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","auth_tokens"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"5285c61b-a46c-4579-b702-e83f857e9488","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/auth_tokens"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 5,\n            \"context\": \"api:*\",\n            \"hash\": \"3f7a9c0e1b2d4f6a8c0e2b4d6f8a0c2e4b6d8f0a2c4e6b8d0f2a4c6e8b0d2f4a\",\n            \"inserted_at\": \"2026-10-20T14:03:11\"\n        }\n    ]\n}"}],"_postman_id":"d2c7defe-3177-48c9-8a53-ec976de3e9c0"},{"name":"create","id":"485b6c44-c61c-439d-8682-9eafb31c0bcc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/auth_tokens","description":"<p>Creates a new API key for the current user. The key does not expire. The key has full access to the account.</p>\n<p>The <code>token</code> field holds the key value. The API shows it only in this response. Copy the key and keep it in a safe place. If you lose the key, revoke it and create a new key.</p>\n<p>You can also create keys on the <strong>My Profile</strong> page of the Liberpay app.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The API key ID. Use it to revoke the key.</td>\n</tr>\n<tr>\n<td><code>data.token</code></td>\n<td><code>string</code></td>\n<td>The key value. Send it as <code>Authorization: Bearer &lt;token&gt;</code>. The API shows it only one time.</td>\n</tr>\n<tr>\n<td><code>data.context</code></td>\n<td><code>string</code></td>\n<td>The scope of the key. It is always <code>api:*</code>.</td>\n</tr>\n<tr>\n<td><code>data.inserted_at</code></td>\n<td><code>string</code></td>\n<td>The date and time (UTC) of creation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing, not valid, or revoked.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","auth_tokens"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"a6ebb7bb-c92d-4d2d-a8a9-2e10f4c809e9","name":"201 Created","originalRequest":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/auth_tokens"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 6,\n        \"context\": \"api:*\",\n        \"hash\": \"9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"inserted_at\": \"2026-10-27T09:15:42\",\n        \"token\": \"SFMyNTY.EXAMPLE-API-KEY-NOT-REAL.abc123\"\n    }\n}"}],"_postman_id":"485b6c44-c61c-439d-8682-9eafb31c0bcc"},{"name":"delete","id":"8dc33fa0-62e6-47f9-bc1d-de2fce7fbab9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/auth_tokens/:id","description":"<p>Revokes an API key. The key stops working immediately. You cannot undo this action.</p>\n<p>You can revoke only your own keys.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The API key ID, from <code>list</code> or <code>create</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing, not valid, or revoked.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The key belongs to a different user (<code>{\"status\":\"error\",\"message\":\"not found\"}</code>), or no key has this ID (<code>{\"errors\":{\"detail\":\"Not Found\"}}</code>).</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The ID is not a number.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","auth_tokens",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"97bd94aa-25e0-4902-b303-636bc357e1b0","description":{"content":"<p>The API key ID, from <code>list</code> or <code>create</code>.</p>\n","type":"text/plain"},"type":"any","value":"6","key":"id"}]}},"response":[{"id":"966d58dc-9933-4ef8-a012-fc1ef5446948","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/auth_tokens/:id","host":["https://api.liberpay.com"],"path":["api","auth_tokens",":id"],"variable":[{"key":"id","value":"6","description":"The API key ID, from `list` or `create`."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"1a0006c8-4542-4f82-9dab-28f1eae83e12","name":"404 Not Found","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/auth_tokens/:id","host":["https://api.liberpay.com"],"path":["api","auth_tokens",":id"],"variable":[{"key":"id","value":"6","description":"The API key ID, from `list` or `create`."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"8dc33fa0-62e6-47f9-bc1d-de2fce7fbab9"}],"id":"a1e5c2cb-dd84-4990-a995-32faaf765b93","description":"<p>Check your token and manage your API keys. An API key is a bearer token that does not expire. You can revoke it at any time. Use an API key for server-to-server calls to all endpoints that need a token.</p>\n","_postman_id":"a1e5c2cb-dd84-4990-a995-32faaf765b93","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"charges","item":[{"name":"list","id":"649efe26-9669-47e4-b106-dde1142d33de","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/charges","description":"<p>Lists the charges that the caller created, newest first. The list has 25 charges per page.</p>\n<p>The items in this list do not include the <code>invoice</code>, <code>p2p_request</code> and <code>requested_buyer</code> blocks. To see them, use <code>get</code> or the store list.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The first page is 1. The default is 1.</td>\n</tr>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>no</td>\n<td>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of charges.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True when there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The next page number, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The charges, newest first. Each item is a charge object (see <code>get</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The first page is 1. The default is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</p>\n","type":"text/plain"},"key":"viewer_currency","value":"USD"}],"variable":[]}},"response":[{"id":"e873e966-24ae-4d9c-ab6f-e2fc09920d96","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges","host":["https://api.liberpay.com"],"path":["api","charges"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. The default is 1.","disabled":true},{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 25,\n    \"data\": [\n        {\n            \"id\": 231,\n            \"shortcode\": \"73cJltPHglQdnVH\",\n            \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 3,\n                        \"name\": \"Espresso\",\n                        \"description\": \"Double shot\",\n                        \"images\": [\n                            {\n                                \"url\": \"https://example.com/images/espresso.png\"\n                            }\n                        ],\n                        \"is_physical\": true,\n                        \"taxable\": true,\n                        \"tax_rate\": \"0.10\",\n                        \"quantity\": 2,\n                        \"price\": {\n                            \"amount\": \"1.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0.10\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"2.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"2.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"178600\",\n                        \"unit_tax_currency\": \"17860\",\n                        \"subtotal_currency\": \"357200\",\n                        \"tax_currency\": \"35720\",\n                        \"total_currency\": \"392920\"\n                    },\n                    {\n                        \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                        \"name\": \"Catering service\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.10\",\n                        \"metadata\": {},\n                        \"quantity\": 1.0,\n                        \"price\": {\n                            \"amount\": \"100.0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"17860000\",\n                        \"unit_tax_currency\": \"0\",\n                        \"subtotal_currency\": \"17860000\",\n                        \"tax_currency\": \"0\",\n                        \"total_currency\": \"17860000\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"102.20\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"18252920\",\n            \"exchange_rate\": \"0.1786\",\n            \"expires_at\": \"2026-10-27T14:15:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Main Gateway\",\n                \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 12,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Main Store\",\n                \"logo\": \"https://example.com/images/store-logo.png\",\n                \"business\": {\n                    \"id\": 4,\n                    \"name\": \"Steve Coffee\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 12,\n                \"username\": \"steveseller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n            },\n            \"buyer\": {\n                \"id\": 34,\n                \"username\": \"stevebuyer\",\n                \"email\": \"steve+buyer@example.com\",\n                \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\"\n            },\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [\n                {\n                    \"id\": 88,\n                    \"amount\": \"18252920\",\n                    \"currency\": {\n                        \"id\": 3,\n                        \"name\": \"USD Coin\",\n                        \"symbol\": \"USDC\",\n                        \"decimals\": 6,\n                        \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                        \"supported\": true\n                    },\n                    \"reference\": null,\n                    \"transaction\": {\n                        \"id\": 140,\n                        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\",\n                        \"from\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n                        \"to\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                        \"confirmations\": 12,\n                        \"inserted_at\": \"2026-10-27T14:06:10\"\n                    }\n                }\n            ],\n            \"refunds\": [],\n            \"tokens\": [\n                {\n                    \"id\": 51,\n                    \"token_id\": 1024\n                }\n            ],\n            \"type\": {\n                \"id\": 1,\n                \"label\": \"Point of Sale\"\n            },\n            \"status\": {\n                \"id\": 3,\n                \"label\": \"confirmed\"\n            },\n            \"inserted_at\": \"2026-10-27T14:00:00\",\n            \"updated_at\": \"2026-10-27T14:06:30\"\n        }\n    ]\n}"}],"_postman_id":"649efe26-9669-47e4-b106-dde1142d33de"},{"name":"listStore","id":"80ecb962-ef36-4f13-a7b4-8327a37bc3a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/charges","description":"<p>Lists all charges of a store (all types), newest first. The caller must be a member of the business that owns the store.</p>\n<p>With <code>page</code>, the response is a page of 25 charges. Without <code>page</code>, the response is <code>{\"data\": [...]}</code> with the newest 250 charges and no page fields. Send <code>page</code> in new code.</p>\n<p>For one type only, use <code>GET /api/stores/:store_id/sales</code> (point of sale) or <code>GET /api/stores/:store_id/invoices</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The id of the store.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The first page is 1. The default is 1.</td>\n</tr>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>no</td>\n<td>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of charges.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True when there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The next page number, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The charges, newest first. Each item is a charge object (see <code>get</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, or the caller is not a member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","charges"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The first page is 1. The default is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</p>\n","type":"text/plain"},"key":"viewer_currency","value":"USD"}],"variable":[{"id":"99898488-77db-4ca4-b144-a0415f385676","description":{"content":"<p>The id of the store.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"c5e8cacc-94d7-4afc-afd0-912be5467825","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/charges","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","charges"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. The default is 1.","disabled":true},{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The id of the store."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 25,\n    \"data\": [\n        {\n            \"id\": 233,\n            \"shortcode\": \"73cOkdcBqtCYlxk\",\n            \"hash\": null,\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                        \"name\": \"Catering service\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.10\",\n                        \"metadata\": {},\n                        \"quantity\": 1.0,\n                        \"price\": {\n                            \"amount\": \"100.0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"17860000\",\n                        \"unit_tax_currency\": \"0\",\n                        \"subtotal_currency\": \"17860000\",\n                        \"tax_currency\": \"0\",\n                        \"total_currency\": \"17860000\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"100.00\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"17860000\",\n            \"exchange_rate\": \"0.1786\",\n            \"expires_at\": \"2026-10-27T14:15:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Main Gateway\",\n                \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 12,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Main Store\",\n                \"logo\": \"https://example.com/images/store-logo.png\",\n                \"business\": {\n                    \"id\": 4,\n                    \"name\": \"Steve Coffee\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 12,\n                \"username\": \"steveseller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n            },\n            \"buyer\": null,\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 2,\n                \"label\": \"Invoice\"\n            },\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"created\"\n            },\n            \"inserted_at\": \"2026-10-27T14:00:00\",\n            \"updated_at\": \"2026-10-27T14:00:00\",\n            \"invoice\": {\n                \"id\": 94,\n                \"number\": 1001,\n                \"title\": \"October services\",\n                \"date\": \"2026-10-27\",\n                \"due_date\": \"2026-11-10\",\n                \"notes\": \"Pay by Pix or USDC.\",\n                \"approved\": false,\n                \"customer\": {\n                    \"id\": 8,\n                    \"name\": \"Steve Customer\",\n                    \"email\": \"steve+customer@example.com\",\n                    \"address\": {\n                        \"street1\": \"Rua Exemplo 100\",\n                        \"street2\": \"Sala 2\",\n                        \"city\": \"São Paulo\",\n                        \"region\": \"SP\",\n                        \"code\": \"01000-000\"\n                    },\n                    \"business_id\": 4\n                }\n            }\n        }\n    ]\n}"},{"id":"cb91ff7f-f83e-48ab-a6b2-a471ec1255c1","name":"404 Not a member","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/charges","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","charges"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. The default is 1.","disabled":true},{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The id of the store."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"80ecb962-ef36-4f13-a7b4-8327a37bc3a7"},{"name":"listGateway","id":"b408a04f-26d6-4673-a14d-68e11a15b45c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateways/:gateway_id/charges","description":"<p>Lists the charges of a gateway (all stores and types), newest first, 25 per page. The caller must be a member of the business that owns the gateway.</p>\n<p>For one type only, use <code>GET /api/gateways/:gateway_id/sales</code> or <code>GET /api/gateways/:gateway_id/invoices</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway_id</code></td>\n<td>The id of the gateway.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The first page is 1. The default is 1.</td>\n</tr>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>no</td>\n<td>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of charges.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True when there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The next page number, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The charges, newest first. Each item is a charge object (see <code>get</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The gateway does not exist, or the caller is not a member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":gateway_id","charges"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The first page is 1. The default is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</p>\n","type":"text/plain"},"key":"viewer_currency","value":"USD"}],"variable":[{"id":"6a5ee2fb-71de-469a-b6fd-715beb921f51","description":{"content":"<p>The id of the gateway.</p>\n","type":"text/plain"},"type":"any","value":"73","key":"gateway_id"}]}},"response":[{"id":"7222580a-639f-4496-84f1-d09e9068d563","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:gateway_id/charges","host":["https://api.liberpay.com"],"path":["api","gateways",":gateway_id","charges"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. The default is 1.","disabled":true},{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}],"variable":[{"key":"gateway_id","value":"73","description":"The id of the gateway."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 25,\n    \"data\": [\n        {\n            \"id\": 231,\n            \"shortcode\": \"73cJltPHglQdnVH\",\n            \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 3,\n                        \"name\": \"Espresso\",\n                        \"description\": \"Double shot\",\n                        \"images\": [\n                            {\n                                \"url\": \"https://example.com/images/espresso.png\"\n                            }\n                        ],\n                        \"is_physical\": true,\n                        \"taxable\": true,\n                        \"tax_rate\": \"0.10\",\n                        \"quantity\": 2,\n                        \"price\": {\n                            \"amount\": \"1.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0.10\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"2.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"2.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"178600\",\n                        \"unit_tax_currency\": \"17860\",\n                        \"subtotal_currency\": \"357200\",\n                        \"tax_currency\": \"35720\",\n                        \"total_currency\": \"392920\"\n                    },\n                    {\n                        \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                        \"name\": \"Catering service\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.10\",\n                        \"metadata\": {},\n                        \"quantity\": 1.0,\n                        \"price\": {\n                            \"amount\": \"100.0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"17860000\",\n                        \"unit_tax_currency\": \"0\",\n                        \"subtotal_currency\": \"17860000\",\n                        \"tax_currency\": \"0\",\n                        \"total_currency\": \"17860000\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"102.20\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"18252920\",\n            \"exchange_rate\": \"0.1786\",\n            \"expires_at\": \"2026-10-27T14:15:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Main Gateway\",\n                \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 12,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Main Store\",\n                \"logo\": \"https://example.com/images/store-logo.png\",\n                \"business\": {\n                    \"id\": 4,\n                    \"name\": \"Steve Coffee\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 12,\n                \"username\": \"steveseller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n            },\n            \"buyer\": {\n                \"id\": 34,\n                \"username\": \"stevebuyer\",\n                \"email\": \"steve+buyer@example.com\",\n                \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\"\n            },\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [\n                {\n                    \"id\": 88,\n                    \"amount\": \"18252920\",\n                    \"currency\": {\n                        \"id\": 3,\n                        \"name\": \"USD Coin\",\n                        \"symbol\": \"USDC\",\n                        \"decimals\": 6,\n                        \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                        \"supported\": true\n                    },\n                    \"reference\": null,\n                    \"transaction\": {\n                        \"id\": 140,\n                        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\",\n                        \"from\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n                        \"to\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                        \"confirmations\": 12,\n                        \"inserted_at\": \"2026-10-27T14:06:10\"\n                    }\n                }\n            ],\n            \"refunds\": [],\n            \"tokens\": [\n                {\n                    \"id\": 51,\n                    \"token_id\": 1024\n                }\n            ],\n            \"type\": {\n                \"id\": 1,\n                \"label\": \"Point of Sale\"\n            },\n            \"status\": {\n                \"id\": 3,\n                \"label\": \"confirmed\"\n            },\n            \"inserted_at\": \"2026-10-27T14:00:00\",\n            \"updated_at\": \"2026-10-27T14:06:30\"\n        }\n    ]\n}"}],"_postman_id":"b408a04f-26d6-4673-a14d-68e11a15b45c"},{"name":"listOrders","id":"a4e28aa9-7449-41d6-8f2f-1fb53923fc1e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/orders","description":"<p>Lists the point of sale charges (type 1) that the caller created, newest first. The response is one page of up to 250 charges.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>no</td>\n<td>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of charges.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True when there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The next page number, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The charges, newest first. Each item is a charge object (see <code>get</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","orders"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</p>\n","type":"text/plain"},"key":"viewer_currency","value":"USD"}],"variable":[]}},"response":[{"id":"0bfc61cb-3aa1-4851-915e-5204a7a759b3","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/orders","host":["https://api.liberpay.com"],"path":["api","orders"],"query":[{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 231,\n            \"shortcode\": \"73cJltPHglQdnVH\",\n            \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 3,\n                        \"name\": \"Espresso\",\n                        \"description\": \"Double shot\",\n                        \"images\": [\n                            {\n                                \"url\": \"https://example.com/images/espresso.png\"\n                            }\n                        ],\n                        \"is_physical\": true,\n                        \"taxable\": true,\n                        \"tax_rate\": \"0.10\",\n                        \"quantity\": 2,\n                        \"price\": {\n                            \"amount\": \"1.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0.10\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"2.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"2.20\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"178600\",\n                        \"unit_tax_currency\": \"17860\",\n                        \"subtotal_currency\": \"357200\",\n                        \"tax_currency\": \"35720\",\n                        \"total_currency\": \"392920\"\n                    },\n                    {\n                        \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                        \"name\": \"Catering service\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.10\",\n                        \"metadata\": {},\n                        \"quantity\": 1.0,\n                        \"price\": {\n                            \"amount\": \"100.0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"100.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"17860000\",\n                        \"unit_tax_currency\": \"0\",\n                        \"subtotal_currency\": \"17860000\",\n                        \"tax_currency\": \"0\",\n                        \"total_currency\": \"17860000\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"102.20\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"18252920\",\n            \"exchange_rate\": \"0.1786\",\n            \"expires_at\": \"2026-10-27T14:15:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Main Gateway\",\n                \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 12,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Main Store\",\n                \"logo\": \"https://example.com/images/store-logo.png\",\n                \"business\": {\n                    \"id\": 4,\n                    \"name\": \"Steve Coffee\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 12,\n                \"username\": \"steveseller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n            },\n            \"buyer\": {\n                \"id\": 34,\n                \"username\": \"stevebuyer\",\n                \"email\": \"steve+buyer@example.com\",\n                \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\"\n            },\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [\n                {\n                    \"id\": 88,\n                    \"amount\": \"18252920\",\n                    \"currency\": {\n                        \"id\": 3,\n                        \"name\": \"USD Coin\",\n                        \"symbol\": \"USDC\",\n                        \"decimals\": 6,\n                        \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n                        \"supported\": true\n                    },\n                    \"reference\": null,\n                    \"transaction\": {\n                        \"id\": 140,\n                        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\",\n                        \"from\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n                        \"to\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n                        \"confirmations\": 12,\n                        \"inserted_at\": \"2026-10-27T14:06:10\"\n                    }\n                }\n            ],\n            \"refunds\": [],\n            \"tokens\": [\n                {\n                    \"id\": 51,\n                    \"token_id\": 1024\n                }\n            ],\n            \"type\": {\n                \"id\": 1,\n                \"label\": \"Point of Sale\"\n            },\n            \"status\": {\n                \"id\": 3,\n                \"label\": \"confirmed\"\n            },\n            \"inserted_at\": \"2026-10-27T14:00:00\",\n            \"updated_at\": \"2026-10-27T14:06:30\"\n        }\n    ]\n}"}],"_postman_id":"a4e28aa9-7449-41d6-8f2f-1fb53923fc1e"},{"name":"get","id":"2c60d2ba-4ce5-47ca-b823-765d6878c754","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/charges/:id","description":"<p>Returns one charge by its <strong>shortcode</strong>. The path parameter has the name <code>:id</code>, but it takes the shortcode only.</p>\n<p>Anyone can read a charge in status <code>created</code>, also without a token. The shortcode is long and random, and it works as the access key for the payment page. After the status changes, only the creator, the buyer, or a member of the store's business can read the charge. Other callers get 404.</p>\n<p>The response is the charge object itself. It is <strong>not</strong> wrapped in <code>data</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The shortcode of the charge (not the numeric id).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>viewer_currency</code></td>\n<td>no</td>\n<td>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>integer</code></td>\n<td>The numeric id. Use it in the <code>/api/charges/:id/...</code> routes.</td>\n</tr>\n<tr>\n<td><code>shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The payment page is <code>https://app.liberpay.com/charges/&lt;shortcode&gt;/pay</code>.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td><code>object</code></td>\n<td>The charge type: <code>{id, label}</code>. 1 Point of Sale, 2 Invoice, 3 Peer to Peer.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td><code>object</code></td>\n<td>The charge status: <code>{id, label}</code>. See the intro for the list.</td>\n</tr>\n<tr>\n<td><code>price</code></td>\n<td><code>object</code></td>\n<td>The total in the charge fiat currency, tax included: <code>{amount, currency}</code>.</td>\n</tr>\n<tr>\n<td><code>fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge. It is locked when the charge is created.</td>\n</tr>\n<tr>\n<td><code>currency</code></td>\n<td><code>object</code></td>\n<td>The currency the buyer pays in (token or fiat rail): <code>{id, name, symbol, decimals, address, supported}</code>.</td>\n</tr>\n<tr>\n<td><code>currency_price</code></td>\n<td><code>string</code></td>\n<td>The total in <code>currency</code>, as an integer string in the smallest unit (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>exchange_rate</code></td>\n<td><code>string</code></td>\n<td>Units of <code>currency</code> for one unit of the fiat currency, at quote time.</td>\n</tr>\n<tr>\n<td><code>expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the price quote (UTC). See the folder description.</td>\n</tr>\n<tr>\n<td><code>metadata.items[]</code></td>\n<td><code>array</code></td>\n<td>The line items with fiat amounts (<code>price</code>, <code>unit_tax</code>, <code>subtotal</code>, <code>tax</code>, <code>total</code>) and the same amounts in <code>currency</code> (<code>*_currency</code>). Catalog items keep the product <code>id</code>. Amount items get a UUID <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>hash</code></td>\n<td><code>string|null</code></td>\n<td>The on-chain commitment from <code>generateCommitment</code>. Null until the charge is updated or a currency is set.</td>\n</tr>\n<tr>\n<td><code>gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the money, with <code>type</code>, <code>license_status</code> and <code>config</code>.</td>\n</tr>\n<tr>\n<td><code>store</code></td>\n<td><code>object|null</code></td>\n<td>The store and its business: <code>{id, name, logo, business: {id, name}}</code>.</td>\n</tr>\n<tr>\n<td><code>seller_address</code></td>\n<td><code>string|null</code></td>\n<td>The seller wallet address, if set.</td>\n</tr>\n<tr>\n<td><code>creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge: <code>{id, username, email, address}</code>.</td>\n</tr>\n<tr>\n<td><code>buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who claimed the charge with <code>setCurrency</code>. Null before that.</td>\n</tr>\n<tr>\n<td><code>buyer_fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The fiat currency of the other party, frozen when that party picks a currency. Null when the charge is not cross-border.</td>\n</tr>\n<tr>\n<td><code>buyer_price</code></td>\n<td><code>object|null</code></td>\n<td>The total in <code>buyer_fiat_currency</code>.</td>\n</tr>\n<tr>\n<td><code>buyer_exchange_rate</code></td>\n<td><code>string|null</code></td>\n<td>Units of <code>buyer_fiat_currency</code> for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same amounts in the fiat currency of the caller. Information only. See the folder description.</td>\n</tr>\n<tr>\n<td><code>business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same shape as <code>viewer_fiat</code>, in the default fiat currency of the business. Null for P2P and for charges already in that currency.</td>\n</tr>\n<tr>\n<td><code>payments[]</code></td>\n<td><code>array</code></td>\n<td>The recorded payments: <code>{id, amount, currency, transaction, reference}</code>. <code>amount</code> is in the smallest unit of <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>refunds[]</code></td>\n<td><code>array</code></td>\n<td>The refunds: <code>{id, amount, exchange_rate, currency, transaction, expires_at, metadata}</code>.</td>\n</tr>\n<tr>\n<td><code>tokens[]</code></td>\n<td><code>array</code></td>\n<td>The receipt NFTs minted for the charge: <code>{id, token_id}</code>.</td>\n</tr>\n<tr>\n<td><code>requested_buyer</code></td>\n<td><code>object</code></td>\n<td>Only present when the charge was sent to a user: <code>{id, username}</code>.</td>\n</tr>\n<tr>\n<td><code>invoice</code></td>\n<td><code>object</code></td>\n<td>Only on invoice charges (type 2): <code>{id, number, title, date, due_date, notes, approved, customer}</code>.</td>\n</tr>\n<tr>\n<td><code>p2p_request</code></td>\n<td><code>object</code></td>\n<td>Only on P2P charges (type 3): <code>{id, memo, sender_account, recipient_account, canceled, canceled_by_account_id, canceled_by_role}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode (body <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>), or the charge is no longer <code>created</code> and the caller is not the creator, the buyer, or a business member (body <code>{\"status\":\"error\",\"message\":\"not found\"}</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. A fiat symbol from <code>GET /api/fiat_currencies</code>. It overrides the viewer currency for the <code>viewer_fiat</code> block. An unknown symbol gives 422.</p>\n","type":"text/plain"},"key":"viewer_currency","value":"USD"}],"variable":[{"id":"05e91267-8928-477b-9303-0ffc5db56d29","description":{"content":"<p>The shortcode of the charge (not the numeric id).</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"id"}]}},"response":[{"id":"fd9d954d-bb65-4afc-8f4f-d3359a06664d","name":"200 OK (cross-border buyer)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"query":[{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}],"variable":[{"key":"id","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (not the numeric id)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 231,\n    \"shortcode\": \"73cJltPHglQdnVH\",\n    \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n    \"metadata\": {\n        \"items\": [\n            {\n                \"id\": 3,\n                \"name\": \"Espresso\",\n                \"description\": \"Double shot\",\n                \"images\": [\n                    {\n                        \"url\": \"https://example.com/images/espresso.png\"\n                    }\n                ],\n                \"is_physical\": true,\n                \"taxable\": true,\n                \"tax_rate\": \"0.10\",\n                \"quantity\": 2,\n                \"price\": {\n                    \"amount\": \"1.00\",\n                    \"currency\": \"BRL\"\n                },\n                \"unit_tax\": {\n                    \"amount\": \"0.10\",\n                    \"currency\": \"BRL\"\n                },\n                \"subtotal\": {\n                    \"amount\": \"2.00\",\n                    \"currency\": \"BRL\"\n                },\n                \"tax\": {\n                    \"amount\": \"0.20\",\n                    \"currency\": \"BRL\"\n                },\n                \"total\": {\n                    \"amount\": \"2.20\",\n                    \"currency\": \"BRL\"\n                },\n                \"price_currency\": \"178600\",\n                \"unit_tax_currency\": \"17860\",\n                \"subtotal_currency\": \"357200\",\n                \"tax_currency\": \"35720\",\n                \"total_currency\": \"392920\"\n            },\n            {\n                \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                \"name\": \"Catering service\",\n                \"description\": \"\",\n                \"is_physical\": false,\n                \"taxable\": false,\n                \"tax_rate\": \"0.10\",\n                \"metadata\": {},\n                \"quantity\": 1.0,\n                \"price\": {\n                    \"amount\": \"100.0\",\n                    \"currency\": \"BRL\"\n                },\n                \"unit_tax\": {\n                    \"amount\": \"0\",\n                    \"currency\": \"BRL\"\n                },\n                \"subtotal\": {\n                    \"amount\": \"100.00\",\n                    \"currency\": \"BRL\"\n                },\n                \"tax\": {\n                    \"amount\": \"0.00\",\n                    \"currency\": \"BRL\"\n                },\n                \"total\": {\n                    \"amount\": \"100.00\",\n                    \"currency\": \"BRL\"\n                },\n                \"price_currency\": \"17860000\",\n                \"unit_tax_currency\": \"0\",\n                \"subtotal_currency\": \"17860000\",\n                \"tax_currency\": \"0\",\n                \"total_currency\": \"17860000\"\n            }\n        ]\n    },\n    \"price\": {\n        \"amount\": \"102.20\",\n        \"currency\": \"BRL\"\n    },\n    \"currency_price\": \"18252920\",\n    \"exchange_rate\": \"0.1786\",\n    \"expires_at\": \"2026-10-27T14:20:00Z\",\n    \"gateway\": {\n        \"id\": 73,\n        \"name\": \"Main Gateway\",\n        \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n        \"licensed\": true,\n        \"license_status\": \"valid\",\n        \"creator_id\": 12,\n        \"is_system\": false,\n        \"version\": {\n            \"identifier\": \"polygon-v1\",\n            \"number\": 1\n        },\n        \"type\": {\n            \"id\": 1,\n            \"identifier\": \"polygon\",\n            \"label\": \"Polygon\",\n            \"platform\": {\n                \"id\": 1,\n                \"identifier\": \"evm\",\n                \"label\": \"Ethereum Virtual Machine\"\n            }\n        },\n        \"config\": {\n            \"configured\": false\n        }\n    },\n    \"store\": {\n        \"id\": 5,\n        \"name\": \"Main Store\",\n        \"logo\": \"https://example.com/images/store-logo.png\",\n        \"business\": {\n            \"id\": 4,\n            \"name\": \"Steve Coffee\"\n        }\n    },\n    \"seller_address\": null,\n    \"creator\": {\n        \"id\": 12,\n        \"username\": \"steveseller\",\n        \"email\": \"steve+seller@example.com\",\n        \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n    },\n    \"buyer\": {\n        \"id\": 34,\n        \"username\": \"stevebuyer\",\n        \"email\": \"steve+buyer@example.com\",\n        \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\"\n    },\n    \"currency\": {\n        \"id\": 3,\n        \"name\": \"USD Coin\",\n        \"symbol\": \"USDC\",\n        \"decimals\": 6,\n        \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"supported\": true\n    },\n    \"fiat_currency\": {\n        \"id\": 2,\n        \"name\": \"Brazilian Real\",\n        \"symbol\": \"BRL\",\n        \"sign\": \"R$\"\n    },\n    \"buyer_fiat_currency\": {\n        \"id\": 1,\n        \"name\": \"US Dollar\",\n        \"symbol\": \"USD\",\n        \"sign\": \"$\"\n    },\n    \"buyer_price\": {\n        \"amount\": \"18.25\",\n        \"currency\": \"USD\"\n    },\n    \"buyer_exchange_rate\": \"0.1786\",\n    \"viewer_fiat\": {\n        \"fiat_currency\": {\n            \"id\": 1,\n            \"name\": \"US Dollar\",\n            \"symbol\": \"USD\",\n            \"sign\": \"$\"\n        },\n        \"rate\": 0.1786,\n        \"indicative\": true,\n        \"locked\": false,\n        \"locked_at\": null,\n        \"price\": {\n            \"amount\": \"18.25\",\n            \"currency\": \"USD\"\n        },\n        \"items\": [\n            {\n                \"id\": 3,\n                \"price\": \"0.18\",\n                \"subtotal\": \"0.36\",\n                \"tax\": \"0.04\",\n                \"unit_tax\": \"0.02\",\n                \"total\": \"0.39\"\n            },\n            {\n                \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                \"price\": \"17.86\",\n                \"subtotal\": \"17.86\",\n                \"tax\": \"0.00\",\n                \"unit_tax\": \"0.00\",\n                \"total\": \"17.86\"\n            }\n        ],\n        \"payments\": {},\n        \"refunds\": {}\n    },\n    \"business_fiat\": null,\n    \"payments\": [],\n    \"refunds\": [],\n    \"tokens\": [],\n    \"type\": {\n        \"id\": 1,\n        \"label\": \"Point of Sale\"\n    },\n    \"status\": {\n        \"id\": 1,\n        \"label\": \"created\"\n    },\n    \"inserted_at\": \"2026-10-27T14:00:00\",\n    \"updated_at\": \"2026-10-27T14:05:00\"\n}"},{"id":"dd3dc5f5-05f4-4a97-aca6-ca92ed226aba","name":"404 Not visible","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"query":[{"key":"viewer_currency","value":"USD","description":"Optional. A fiat symbol from `GET /api/fiat_currencies`. It overrides the viewer currency for the `viewer_fiat` block. An unknown symbol gives 422.","disabled":true}],"variable":[{"key":"id","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (not the numeric id)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"2c60d2ba-4ce5-47ca-b823-765d6878c754"},{"name":"create","id":"6b342cfd-ebb1-4ede-b971-b64358c7f43b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"charge_type_id\": 1,\n        \"gateway_id\": 73,\n        \"store_id\": 5,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"fiat_currency_id\": 2,\n        \"seller_address\": null,\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 2\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"is_physical\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges","description":"<p>Creates a charge in status <code>created</code> and returns it with 201. The API prices every line item in the charge fiat currency, adds the store tax to taxable items, and converts the total to <code>currency</code> at the current rate. The quote is good for 15 minutes.</p>\n<p>The gateway and the store must belong to a business of the caller. A system gateway is not allowed, except for P2P. The business must be verified or still under its limit of unverified transactions. The total must not exceed the country limit, and a fiat-gateway charge must reach the country minimum.</p>\n<p><strong>Line items</strong> (<code>products</code>). Each item is one of two kinds. The API decides the kind from <code>id</code>; the <code>type</code> key is optional and only for your own reading.</p>\n<ul>\n<li><code>product</code>: a published catalog product of the store. Send <code>id</code> (integer) and <code>quantity</code>. The API takes the name, price, tax flag and images from the catalog.</li>\n<li><code>amount</code>: a free amount. Leave out <code>id</code> (or send <code>null</code>). Send <code>name</code>, <code>quantity</code>, <code>taxable</code> and <code>price: {amount, currency}</code>. If <code>price.currency</code> is not the charge fiat currency, the API converts it.</li>\n</ul>\n<p><strong>Invoices.</strong> Set <code>charge_type_id</code> to 2 and send an <code>invoice</code> object. The customer must belong to the business of the store. With <code>approved: true</code>, the API emails the invoice to the customer at once. Otherwise approve and send it later with the <code>invoices</code> endpoints.</p>\n<p>Invoice body example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"charge\": {\n    \"charge_type_id\": 2,\n    \"gateway_id\": 73,\n    \"store_id\": 5,\n    \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n    \"fiat_currency_id\": 2,\n    \"products\": [\n      {\n        \"type\": \"amount\",\n        \"name\": \"Catering service\",\n        \"quantity\": 1,\n        \"taxable\": false,\n        \"price\": {\n          \"amount\": 100,\n          \"currency\": \"BRL\"\n        }\n      }\n    ],\n    \"invoice\": {\n      \"title\": \"October services\",\n      \"number\": 1001,\n      \"date\": \"2026-10-27\",\n      \"due_date\": \"2026-11-10\",\n      \"notes\": \"Pay by Pix or USDC.\",\n      \"customer_id\": 8,\n      \"approved\": false\n    }\n  }\n}\n</code></pre>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>charge.charge_type_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>1 Point of Sale, 2 Invoice, 3 Peer to Peer.</td>\n</tr>\n<tr>\n<td><code>charge.gateway_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The gateway that receives the payment. It must belong to your business. From <code>GET /api/businesses/:business_id/gateways</code>.</td>\n</tr>\n<tr>\n<td><code>charge.store_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The store of the charge. The store tax rate applies to taxable items.</td>\n</tr>\n<tr>\n<td><code>charge.currency_address</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The address of the currency to quote in, exactly as <code>GET /api/currencies</code> returns it. It must belong to the gateway type.</td>\n</tr>\n<tr>\n<td><code>charge.fiat_currency_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The fiat currency of the charge. It must be one of the currencies the business enabled. The default is the country currency of the business. Ignored for P2P.</td>\n</tr>\n<tr>\n<td><code>charge.seller_address</code></td>\n<td><code>string|null</code></td>\n<td>no</td>\n<td>The seller wallet address. You can read it with <code>gatewayAddressSellerAddress</code> on the receipt contract.</td>\n</tr>\n<tr>\n<td><code>charge.products</code></td>\n<td><code>array</code></td>\n<td>yes</td>\n<td>The line items. Send at least one item. The total must be more than zero.</td>\n</tr>\n<tr>\n<td><code>charge.products[].type</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td><code>product</code> or <code>amount</code>. The API ignores it.</td>\n</tr>\n<tr>\n<td><code>charge.products[].id</code></td>\n<td><code>integer|null</code></td>\n<td>no</td>\n<td>Product items: the catalog product id (integer). Amount items: leave it out or send null. Do not send the string \"null\".</td>\n</tr>\n<tr>\n<td><code>charge.products[].quantity</code></td>\n<td><code>number</code></td>\n<td>yes</td>\n<td>The quantity. Amount items accept decimals (5 places).</td>\n</tr>\n<tr>\n<td><code>charge.products[].name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Amount items: required. The line name.</td>\n</tr>\n<tr>\n<td><code>charge.products[].taxable</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Amount items: required. True adds the store tax.</td>\n</tr>\n<tr>\n<td><code>charge.products[].price.amount</code></td>\n<td><code>number|string</code></td>\n<td>no</td>\n<td>Amount items: required. The unit price.</td>\n</tr>\n<tr>\n<td><code>charge.products[].price.currency</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Amount items: required. A fiat symbol, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>charge.products[].description</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Amount items: optional text.</td>\n</tr>\n<tr>\n<td><code>charge.products[].is_physical</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Amount items: optional. The default is true.</td>\n</tr>\n<tr>\n<td><code>charge.products[].metadata</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Amount items: optional free data, stored with the item.</td>\n</tr>\n<tr>\n<td><code>charge.invoice</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Required when <code>charge_type_id</code> is 2. See the fields below.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.title</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Invoice: required. The title.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.number</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Invoice: required. Your invoice number. <code>GET /api/stores/:store_id/invoice_number</code> suggests the next one.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.date</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Invoice: required. The issue date, <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.due_date</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Invoice: required. The due date, <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.customer_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Invoice: required. A customer of the store's business.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.notes</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Invoice: optional notes for the customer.</td>\n</tr>\n<tr>\n<td><code>charge.invoice.approved</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Invoice: optional. The default is false. True emails the invoice to the customer now.</td>\n</tr>\n<tr>\n<td><code>charge.p2p_request</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>P2P only (type 3): <code>{memo, sender_account_id}</code> to request money, or <code>{memo, recipient_account_id}</code> (and no <code>gateway_id</code>) to send money. <code>memo</code> is required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The numeric id. Use it in the <code>/api/charges/:id/...</code> routes.</td>\n</tr>\n<tr>\n<td><code>data.shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The payment page is <code>https://app.liberpay.com/charges/&lt;shortcode&gt;/pay</code>.</td>\n</tr>\n<tr>\n<td><code>data.type</code></td>\n<td><code>object</code></td>\n<td>The charge type: <code>{id, label}</code>. 1 Point of Sale, 2 Invoice, 3 Peer to Peer.</td>\n</tr>\n<tr>\n<td><code>data.status</code></td>\n<td><code>object</code></td>\n<td>The charge status: <code>{id, label}</code>. See the intro for the list.</td>\n</tr>\n<tr>\n<td><code>data.price</code></td>\n<td><code>object</code></td>\n<td>The total in the charge fiat currency, tax included: <code>{amount, currency}</code>.</td>\n</tr>\n<tr>\n<td><code>data.fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge. It is locked when the charge is created.</td>\n</tr>\n<tr>\n<td><code>data.currency</code></td>\n<td><code>object</code></td>\n<td>The currency the buyer pays in (token or fiat rail): <code>{id, name, symbol, decimals, address, supported}</code>.</td>\n</tr>\n<tr>\n<td><code>data.currency_price</code></td>\n<td><code>string</code></td>\n<td>The total in <code>currency</code>, as an integer string in the smallest unit (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>data.exchange_rate</code></td>\n<td><code>string</code></td>\n<td>Units of <code>currency</code> for one unit of the fiat currency, at quote time.</td>\n</tr>\n<tr>\n<td><code>data.expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the price quote (UTC). See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.metadata.items[]</code></td>\n<td><code>array</code></td>\n<td>The line items with fiat amounts (<code>price</code>, <code>unit_tax</code>, <code>subtotal</code>, <code>tax</code>, <code>total</code>) and the same amounts in <code>currency</code> (<code>*_currency</code>). Catalog items keep the product <code>id</code>. Amount items get a UUID <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>data.hash</code></td>\n<td><code>string|null</code></td>\n<td>The on-chain commitment from <code>generateCommitment</code>. Null until the charge is updated or a currency is set.</td>\n</tr>\n<tr>\n<td><code>data.gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the money, with <code>type</code>, <code>license_status</code> and <code>config</code>.</td>\n</tr>\n<tr>\n<td><code>data.store</code></td>\n<td><code>object|null</code></td>\n<td>The store and its business: <code>{id, name, logo, business: {id, name}}</code>.</td>\n</tr>\n<tr>\n<td><code>data.seller_address</code></td>\n<td><code>string|null</code></td>\n<td>The seller wallet address, if set.</td>\n</tr>\n<tr>\n<td><code>data.creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge: <code>{id, username, email, address}</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who claimed the charge with <code>setCurrency</code>. Null before that.</td>\n</tr>\n<tr>\n<td><code>data.buyer_fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The fiat currency of the other party, frozen when that party picks a currency. Null when the charge is not cross-border.</td>\n</tr>\n<tr>\n<td><code>data.buyer_price</code></td>\n<td><code>object|null</code></td>\n<td>The total in <code>buyer_fiat_currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer_exchange_rate</code></td>\n<td><code>string|null</code></td>\n<td>Units of <code>buyer_fiat_currency</code> for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>data.viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same amounts in the fiat currency of the caller. Information only. See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same shape as <code>viewer_fiat</code>, in the default fiat currency of the business. Null for P2P and for charges already in that currency.</td>\n</tr>\n<tr>\n<td><code>data.payments[]</code></td>\n<td><code>array</code></td>\n<td>The recorded payments: <code>{id, amount, currency, transaction, reference}</code>. <code>amount</code> is in the smallest unit of <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.refunds[]</code></td>\n<td><code>array</code></td>\n<td>The refunds: <code>{id, amount, exchange_rate, currency, transaction, expires_at, metadata}</code>.</td>\n</tr>\n<tr>\n<td><code>data.tokens[]</code></td>\n<td><code>array</code></td>\n<td>The receipt NFTs minted for the charge: <code>{id, token_id}</code>.</td>\n</tr>\n<tr>\n<td><code>data.requested_buyer</code></td>\n<td><code>object</code></td>\n<td>Only present when the charge was sent to a user: <code>{id, username}</code>.</td>\n</tr>\n<tr>\n<td><code>data.invoice</code></td>\n<td><code>object</code></td>\n<td>Only on invoice charges (type 2): <code>{id, number, title, date, due_date, notes, approved, customer}</code>.</td>\n</tr>\n<tr>\n<td><code>data.p2p_request</code></td>\n<td><code>object</code></td>\n<td>Only on P2P charges (type 3): <code>{id, memo, sender_account, recipient_account, canceled, canceled_by_account_id, canceled_by_role}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The caller is not a member of the business of the gateway or the store, the gateway is a system gateway, or (P2P) the gateway is not the caller's P2P gateway. Body <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The gateway, the store or the currency address does not exist. Body <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>{message, data}</code>: <code>currency_address</code> is missing, <code>products</code> is not a list, an item is not valid, a product is not in the store catalog (<code>missing_product_ids</code>), the fiat currency is not enabled, the business is not verified, or the total is above the limit or below the minimum.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>invalid customer</code>: the invoice customer is not a customer of the store's business.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Changeset error <code>{\"status\":\"error\",\"type\":\"charge\"|\"meta\",\"errors\":{...}}</code>, for example a zero total or a missing invoice field (<code>type: meta</code>).</td>\n</tr>\n<tr>\n<td>422</td>\n<td>P2P: the caller names itself as the other party.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: country_required</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"21232503-9aed-4844-85cf-79db6922af79","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"charge_type_id\": 1,\n        \"gateway_id\": 73,\n        \"store_id\": 5,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"fiat_currency_id\": 2,\n        \"seller_address\": null,\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 2\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"is_physical\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 231,\n        \"shortcode\": \"73cJltPHglQdnVH\",\n        \"hash\": null,\n        \"metadata\": {\n            \"items\": [\n                {\n                    \"id\": 3,\n                    \"name\": \"Espresso\",\n                    \"description\": \"Double shot\",\n                    \"images\": [\n                        {\n                            \"url\": \"https://example.com/images/espresso.png\"\n                        }\n                    ],\n                    \"is_physical\": true,\n                    \"taxable\": true,\n                    \"tax_rate\": \"0.10\",\n                    \"quantity\": 2,\n                    \"price\": {\n                        \"amount\": \"1.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0.10\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"2.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"2.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"178600\",\n                    \"unit_tax_currency\": \"17860\",\n                    \"subtotal_currency\": \"357200\",\n                    \"tax_currency\": \"35720\",\n                    \"total_currency\": \"392920\"\n                },\n                {\n                    \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                    \"name\": \"Catering service\",\n                    \"description\": \"\",\n                    \"is_physical\": false,\n                    \"taxable\": false,\n                    \"tax_rate\": \"0.10\",\n                    \"metadata\": {},\n                    \"quantity\": 1.0,\n                    \"price\": {\n                        \"amount\": \"100.0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"17860000\",\n                    \"unit_tax_currency\": \"0\",\n                    \"subtotal_currency\": \"17860000\",\n                    \"tax_currency\": \"0\",\n                    \"total_currency\": \"17860000\"\n                }\n            ]\n        },\n        \"price\": {\n            \"amount\": \"102.20\",\n            \"currency\": \"BRL\"\n        },\n        \"currency_price\": \"18252920\",\n        \"exchange_rate\": \"0.1786\",\n        \"expires_at\": \"2026-10-27T14:15:00Z\",\n        \"gateway\": {\n            \"id\": 73,\n            \"name\": \"Main Gateway\",\n            \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            }\n        },\n        \"store\": {\n            \"id\": 5,\n            \"name\": \"Main Store\",\n            \"logo\": \"https://example.com/images/store-logo.png\",\n            \"business\": {\n                \"id\": 4,\n                \"name\": \"Steve Coffee\"\n            }\n        },\n        \"seller_address\": null,\n        \"creator\": {\n            \"id\": 12,\n            \"username\": \"steveseller\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n        },\n        \"buyer\": null,\n        \"currency\": {\n            \"id\": 3,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n            \"supported\": true\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"buyer_fiat_currency\": null,\n        \"buyer_price\": null,\n        \"buyer_exchange_rate\": null,\n        \"viewer_fiat\": null,\n        \"business_fiat\": null,\n        \"payments\": [],\n        \"refunds\": [],\n        \"tokens\": [],\n        \"type\": {\n            \"id\": 1,\n            \"label\": \"Point of Sale\"\n        },\n        \"status\": {\n            \"id\": 1,\n            \"label\": \"created\"\n        },\n        \"inserted_at\": \"2026-10-27T14:00:00\",\n        \"updated_at\": \"2026-10-27T14:00:00\"\n    }\n}"},{"id":"2b1f9662-d31b-4e44-b643-9455843cf41f","name":"201 Created (invoice)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"charge_type_id\": 1,\n        \"gateway_id\": 73,\n        \"store_id\": 5,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"fiat_currency_id\": 2,\n        \"seller_address\": null,\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 2\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"is_physical\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 233,\n        \"shortcode\": \"73cOkdcBqtCYlxk\",\n        \"hash\": null,\n        \"metadata\": {\n            \"items\": [\n                {\n                    \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                    \"name\": \"Catering service\",\n                    \"description\": \"\",\n                    \"is_physical\": false,\n                    \"taxable\": false,\n                    \"tax_rate\": \"0.10\",\n                    \"metadata\": {},\n                    \"quantity\": 1.0,\n                    \"price\": {\n                        \"amount\": \"100.0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"17860000\",\n                    \"unit_tax_currency\": \"0\",\n                    \"subtotal_currency\": \"17860000\",\n                    \"tax_currency\": \"0\",\n                    \"total_currency\": \"17860000\"\n                }\n            ]\n        },\n        \"price\": {\n            \"amount\": \"100.00\",\n            \"currency\": \"BRL\"\n        },\n        \"currency_price\": \"17860000\",\n        \"exchange_rate\": \"0.1786\",\n        \"expires_at\": \"2026-10-27T14:15:00Z\",\n        \"gateway\": {\n            \"id\": 73,\n            \"name\": \"Main Gateway\",\n            \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            }\n        },\n        \"store\": {\n            \"id\": 5,\n            \"name\": \"Main Store\",\n            \"logo\": \"https://example.com/images/store-logo.png\",\n            \"business\": {\n                \"id\": 4,\n                \"name\": \"Steve Coffee\"\n            }\n        },\n        \"seller_address\": null,\n        \"creator\": {\n            \"id\": 12,\n            \"username\": \"steveseller\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n        },\n        \"buyer\": null,\n        \"currency\": {\n            \"id\": 3,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n            \"supported\": true\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"buyer_fiat_currency\": null,\n        \"buyer_price\": null,\n        \"buyer_exchange_rate\": null,\n        \"viewer_fiat\": null,\n        \"business_fiat\": null,\n        \"payments\": [],\n        \"refunds\": [],\n        \"tokens\": [],\n        \"type\": {\n            \"id\": 2,\n            \"label\": \"Invoice\"\n        },\n        \"status\": {\n            \"id\": 1,\n            \"label\": \"created\"\n        },\n        \"inserted_at\": \"2026-10-27T14:00:00\",\n        \"updated_at\": \"2026-10-27T14:00:00\",\n        \"invoice\": {\n            \"id\": 94,\n            \"number\": 1001,\n            \"title\": \"October services\",\n            \"date\": \"2026-10-27\",\n            \"due_date\": \"2026-11-10\",\n            \"notes\": \"Pay by Pix or USDC.\",\n            \"approved\": false,\n            \"customer\": {\n                \"id\": 8,\n                \"name\": \"Steve Customer\",\n                \"email\": \"steve+customer@example.com\",\n                \"address\": {\n                    \"street1\": \"Rua Exemplo 100\",\n                    \"street2\": \"Sala 2\",\n                    \"city\": \"São Paulo\",\n                    \"region\": \"SP\",\n                    \"code\": \"01000-000\"\n                },\n                \"business_id\": 4\n            }\n        }\n    }\n}"},{"id":"3b8bd7b7-7d9f-4b2c-a107-15b8d940e319","name":"422 Bad line item","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"charge_type_id\": 1,\n        \"gateway_id\": 73,\n        \"store_id\": 5,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"fiat_currency_id\": 2,\n        \"seller_address\": null,\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 2\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"is_physical\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"invalid item(s): each item needs a name, quantity, taxable flag, and a price with amount and currency\",\n    \"data\": {\n        \"items\": [\n            {\n                \"type\": \"amount\",\n                \"quantity\": 1,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"6b342cfd-ebb1-4ede-b971-b64358c7f43b"},{"name":"update","id":"92e95c65-fec9-4a67-96de-42ff0f156df8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"buyer_id\": 12,\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 3\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id","description":"<p>Changes a charge in status <code>created</code>: its items, gateway, currency or invoice fields. The API prices the charge again, sets a new quote, and moves <code>expires_at</code> to 15 minutes from now.</p>\n<p>Any member of the store's business can update the charge. The creator stays the same. The fiat currency, the store and the charge type do not change.</p>\n<p>The saved charge must have <code>hash</code>, <code>nonce</code> and <code>buyer_id</code>. If the charge does not have them yet, send them in this call, or the API returns 422. Compute <code>hash</code> with <code>generateCommitment(nonce, shortcode, buyerAddress, sellerAddress)</code> on the receipt contract. The web app sends the caller as a placeholder <code>buyer_id</code>; <code>setCurrency</code> replaces it later with the real buyer.</p>\n<p>If you leave out <code>products</code>, the API keeps the current items. For the buyer side, use <code>setCurrency</code> instead.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>charge.nonce</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>A random integer for the commitment. Required if the charge has none.</td>\n</tr>\n<tr>\n<td><code>charge.hash</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The result of <code>generateCommitment</code>. Required if the charge has none.</td>\n</tr>\n<tr>\n<td><code>charge.buyer_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>A user id. Required if the charge has no buyer yet.</td>\n</tr>\n<tr>\n<td><code>charge.gateway_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>A new gateway. The default is the current one.</td>\n</tr>\n<tr>\n<td><code>charge.currency_address</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>A new quote currency. The default is the current one.</td>\n</tr>\n<tr>\n<td><code>charge.products</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The new line items, same format as <code>create</code>. The default is the current items.</td>\n</tr>\n<tr>\n<td><code>charge.invoice</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Invoices: <code>title</code>, <code>number</code>, <code>date</code>, <code>due_date</code>, <code>notes</code>, <code>customer_id</code> to change.</td>\n</tr>\n<tr>\n<td><code>charge.fiat_currency_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Ignored. The fiat currency is locked.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The numeric id. Use it in the <code>/api/charges/:id/...</code> routes.</td>\n</tr>\n<tr>\n<td><code>data.shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The payment page is <code>https://app.liberpay.com/charges/&lt;shortcode&gt;/pay</code>.</td>\n</tr>\n<tr>\n<td><code>data.type</code></td>\n<td><code>object</code></td>\n<td>The charge type: <code>{id, label}</code>. 1 Point of Sale, 2 Invoice, 3 Peer to Peer.</td>\n</tr>\n<tr>\n<td><code>data.status</code></td>\n<td><code>object</code></td>\n<td>The charge status: <code>{id, label}</code>. See the intro for the list.</td>\n</tr>\n<tr>\n<td><code>data.price</code></td>\n<td><code>object</code></td>\n<td>The total in the charge fiat currency, tax included: <code>{amount, currency}</code>.</td>\n</tr>\n<tr>\n<td><code>data.fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge. It is locked when the charge is created.</td>\n</tr>\n<tr>\n<td><code>data.currency</code></td>\n<td><code>object</code></td>\n<td>The currency the buyer pays in (token or fiat rail): <code>{id, name, symbol, decimals, address, supported}</code>.</td>\n</tr>\n<tr>\n<td><code>data.currency_price</code></td>\n<td><code>string</code></td>\n<td>The total in <code>currency</code>, as an integer string in the smallest unit (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>data.exchange_rate</code></td>\n<td><code>string</code></td>\n<td>Units of <code>currency</code> for one unit of the fiat currency, at quote time.</td>\n</tr>\n<tr>\n<td><code>data.expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the price quote (UTC). See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.metadata.items[]</code></td>\n<td><code>array</code></td>\n<td>The line items with fiat amounts (<code>price</code>, <code>unit_tax</code>, <code>subtotal</code>, <code>tax</code>, <code>total</code>) and the same amounts in <code>currency</code> (<code>*_currency</code>). Catalog items keep the product <code>id</code>. Amount items get a UUID <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>data.hash</code></td>\n<td><code>string|null</code></td>\n<td>The on-chain commitment from <code>generateCommitment</code>. Null until the charge is updated or a currency is set.</td>\n</tr>\n<tr>\n<td><code>data.gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the money, with <code>type</code>, <code>license_status</code> and <code>config</code>.</td>\n</tr>\n<tr>\n<td><code>data.store</code></td>\n<td><code>object|null</code></td>\n<td>The store and its business: <code>{id, name, logo, business: {id, name}}</code>.</td>\n</tr>\n<tr>\n<td><code>data.seller_address</code></td>\n<td><code>string|null</code></td>\n<td>The seller wallet address, if set.</td>\n</tr>\n<tr>\n<td><code>data.creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge: <code>{id, username, email, address}</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who claimed the charge with <code>setCurrency</code>. Null before that.</td>\n</tr>\n<tr>\n<td><code>data.buyer_fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The fiat currency of the other party, frozen when that party picks a currency. Null when the charge is not cross-border.</td>\n</tr>\n<tr>\n<td><code>data.buyer_price</code></td>\n<td><code>object|null</code></td>\n<td>The total in <code>buyer_fiat_currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer_exchange_rate</code></td>\n<td><code>string|null</code></td>\n<td>Units of <code>buyer_fiat_currency</code> for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>data.viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same amounts in the fiat currency of the caller. Information only. See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same shape as <code>viewer_fiat</code>, in the default fiat currency of the business. Null for P2P and for charges already in that currency.</td>\n</tr>\n<tr>\n<td><code>data.payments[]</code></td>\n<td><code>array</code></td>\n<td>The recorded payments: <code>{id, amount, currency, transaction, reference}</code>. <code>amount</code> is in the smallest unit of <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.refunds[]</code></td>\n<td><code>array</code></td>\n<td>The refunds: <code>{id, amount, exchange_rate, currency, transaction, expires_at, metadata}</code>.</td>\n</tr>\n<tr>\n<td><code>data.tokens[]</code></td>\n<td><code>array</code></td>\n<td>The receipt NFTs minted for the charge: <code>{id, token_id}</code>.</td>\n</tr>\n<tr>\n<td><code>data.requested_buyer</code></td>\n<td><code>object</code></td>\n<td>Only present when the charge was sent to a user: <code>{id, username}</code>.</td>\n</tr>\n<tr>\n<td><code>data.invoice</code></td>\n<td><code>object</code></td>\n<td>Only on invoice charges (type 2): <code>{id, number, title, date, due_date, notes, approved, customer}</code>.</td>\n</tr>\n<tr>\n<td><code>data.p2p_request</code></td>\n<td><code>object</code></td>\n<td>Only on P2P charges (type 3): <code>{id, memo, sender_account, recipient_account, canceled, canceled_by_account_id, canceled_by_role}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist, or the caller is not a member of the store's business or of the gateway's business.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid (<code>{message, data}</code> from pricing, or a changeset error such as a blank <code>hash</code>).</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The charge is not in status <code>created</code> (<code>charge must have created status</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"21c1cdc3-aa20-45c9-ab49-82825f5e95d4","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"39ce6319-6b9a-4e4e-b202-b7e79db68995","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"buyer_id\": 12,\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 3\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 231,\n        \"shortcode\": \"73cJltPHglQdnVH\",\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"metadata\": {\n            \"items\": [\n                {\n                    \"id\": 3,\n                    \"name\": \"Espresso\",\n                    \"description\": \"Double shot\",\n                    \"images\": [\n                        {\n                            \"url\": \"https://example.com/images/espresso.png\"\n                        }\n                    ],\n                    \"is_physical\": true,\n                    \"taxable\": true,\n                    \"tax_rate\": \"0.10\",\n                    \"quantity\": 2,\n                    \"price\": {\n                        \"amount\": \"1.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0.10\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"2.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"2.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"178600\",\n                    \"unit_tax_currency\": \"17860\",\n                    \"subtotal_currency\": \"357200\",\n                    \"tax_currency\": \"35720\",\n                    \"total_currency\": \"392920\"\n                },\n                {\n                    \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                    \"name\": \"Catering service\",\n                    \"description\": \"\",\n                    \"is_physical\": false,\n                    \"taxable\": false,\n                    \"tax_rate\": \"0.10\",\n                    \"metadata\": {},\n                    \"quantity\": 1.0,\n                    \"price\": {\n                        \"amount\": \"100.0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"17860000\",\n                    \"unit_tax_currency\": \"0\",\n                    \"subtotal_currency\": \"17860000\",\n                    \"tax_currency\": \"0\",\n                    \"total_currency\": \"17860000\"\n                }\n            ]\n        },\n        \"price\": {\n            \"amount\": \"102.20\",\n            \"currency\": \"BRL\"\n        },\n        \"currency_price\": \"18252920\",\n        \"exchange_rate\": \"0.1786\",\n        \"expires_at\": \"2026-10-27T14:25:00Z\",\n        \"gateway\": {\n            \"id\": 73,\n            \"name\": \"Main Gateway\",\n            \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            }\n        },\n        \"store\": {\n            \"id\": 5,\n            \"name\": \"Main Store\",\n            \"logo\": \"https://example.com/images/store-logo.png\",\n            \"business\": {\n                \"id\": 4,\n                \"name\": \"Steve Coffee\"\n            }\n        },\n        \"seller_address\": null,\n        \"creator\": {\n            \"id\": 12,\n            \"username\": \"steveseller\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n        },\n        \"buyer\": {\n            \"id\": 12,\n            \"username\": \"steveseller\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n        },\n        \"currency\": {\n            \"id\": 3,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n            \"supported\": true\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"buyer_fiat_currency\": null,\n        \"buyer_price\": null,\n        \"buyer_exchange_rate\": null,\n        \"viewer_fiat\": null,\n        \"business_fiat\": null,\n        \"payments\": [],\n        \"refunds\": [],\n        \"tokens\": [],\n        \"type\": {\n            \"id\": 1,\n            \"label\": \"Point of Sale\"\n        },\n        \"status\": {\n            \"id\": 1,\n            \"label\": \"created\"\n        },\n        \"inserted_at\": \"2026-10-27T14:00:00\",\n        \"updated_at\": \"2026-10-27T14:10:00\"\n    }\n}"},{"id":"3be53a58-c7c2-46fa-9122-559ab6be53fa","name":"422 Missing commitment","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"buyer_id\": 12,\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 3\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"hash\": [\n            \"can't be blank\"\n        ],\n        \"nonce\": [\n            \"can't be blank\"\n        ],\n        \"buyer_id\": [\n            \"can't be blank\"\n        ]\n    }\n}"},{"id":"fefb4aa5-008f-4c82-a6ae-d0c657b52005","name":"500 Not created","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"buyer_id\": 12,\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n        \"products\": [\n            {\n                \"type\": \"product\",\n                \"id\": 3,\n                \"quantity\": 3\n            },\n            {\n                \"type\": \"amount\",\n                \"name\": \"Catering service\",\n                \"quantity\": 1,\n                \"taxable\": false,\n                \"price\": {\n                    \"amount\": 100,\n                    \"currency\": \"BRL\"\n                }\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"charge must have created status\"\n}"}],"_postman_id":"92e95c65-fec9-4a67-96de-42ff0f156df8"},{"name":"delete","id":"f7110a32-b3ac-48e3-a1f2-3625797a9e9f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/charges/:id","description":"<p>Deletes a charge in status <code>created</code>. A member of the store's business can do this. The response is 204 with no body. You cannot delete a charge after a payment starts.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The charge is not in status <code>created</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"84df9b0c-766d-4a1c-96a3-2c056e5c6200","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"952af936-a6dc-4cda-925d-40bd49d1bc2e","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"f5b0c793-cb30-4b37-9a71-62fe203025d4","name":"500 Not created","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id","host":["https://api.liberpay.com"],"path":["api","charges",":id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"charge must have created status to be deleted\"\n}"}],"_postman_id":"f7110a32-b3ac-48e3-a1f2-3625797a9e9f"},{"name":"setCurrency","id":"0b563908-6ad8-463a-83c3-6dad6aff04d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:shortcode/set_currency","description":"<p>The buyer calls this before payment to pick the currency and the gateway. The API makes the caller the <strong>buyer</strong> (<code>buyer_id</code>), sets a new quote, and moves <code>expires_at</code> to 15 minutes from now. The creator does not change. If the buyer lives in a different fiat currency, the API also freezes <code>buyer_fiat_currency</code>, <code>buyer_price</code> and <code>buyer_exchange_rate</code>.</p>\n<p>The charge must be in status <code>created</code>. If the charge was sent to a user (P2P, or <code>request</code>), only that user can call this. The party who receives the money cannot claim its own P2P charge. Unverified buyers have a per-transaction limit.</p>\n<p><code>gateway_id</code> can be the charge's gateway or another gateway of the same store. The currency must be on the same platform as the gateway. The API keeps only <code>currency_address</code>, <code>nonce</code>, <code>hash</code> and <code>gateway_id</code> from the body.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>charge.currency_address</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The currency to pay in. The default is the current one.</td>\n</tr>\n<tr>\n<td><code>charge.gateway_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The charge gateway or another gateway of the same store.</td>\n</tr>\n<tr>\n<td><code>charge.nonce</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>A random integer for the commitment.</td>\n</tr>\n<tr>\n<td><code>charge.hash</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td><code>generateCommitment(nonce, shortcode, buyerAddress, sellerAddress)</code> from the receipt contract. Get <code>sellerAddress</code> with <code>gatewayAddressSellerAddress(gateway.address)</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The numeric id. Use it in the <code>/api/charges/:id/...</code> routes.</td>\n</tr>\n<tr>\n<td><code>data.shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The payment page is <code>https://app.liberpay.com/charges/&lt;shortcode&gt;/pay</code>.</td>\n</tr>\n<tr>\n<td><code>data.type</code></td>\n<td><code>object</code></td>\n<td>The charge type: <code>{id, label}</code>. 1 Point of Sale, 2 Invoice, 3 Peer to Peer.</td>\n</tr>\n<tr>\n<td><code>data.status</code></td>\n<td><code>object</code></td>\n<td>The charge status: <code>{id, label}</code>. See the intro for the list.</td>\n</tr>\n<tr>\n<td><code>data.price</code></td>\n<td><code>object</code></td>\n<td>The total in the charge fiat currency, tax included: <code>{amount, currency}</code>.</td>\n</tr>\n<tr>\n<td><code>data.fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge. It is locked when the charge is created.</td>\n</tr>\n<tr>\n<td><code>data.currency</code></td>\n<td><code>object</code></td>\n<td>The currency the buyer pays in (token or fiat rail): <code>{id, name, symbol, decimals, address, supported}</code>.</td>\n</tr>\n<tr>\n<td><code>data.currency_price</code></td>\n<td><code>string</code></td>\n<td>The total in <code>currency</code>, as an integer string in the smallest unit (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>data.exchange_rate</code></td>\n<td><code>string</code></td>\n<td>Units of <code>currency</code> for one unit of the fiat currency, at quote time.</td>\n</tr>\n<tr>\n<td><code>data.expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the price quote (UTC). See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.metadata.items[]</code></td>\n<td><code>array</code></td>\n<td>The line items with fiat amounts (<code>price</code>, <code>unit_tax</code>, <code>subtotal</code>, <code>tax</code>, <code>total</code>) and the same amounts in <code>currency</code> (<code>*_currency</code>). Catalog items keep the product <code>id</code>. Amount items get a UUID <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>data.hash</code></td>\n<td><code>string|null</code></td>\n<td>The on-chain commitment from <code>generateCommitment</code>. Null until the charge is updated or a currency is set.</td>\n</tr>\n<tr>\n<td><code>data.gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the money, with <code>type</code>, <code>license_status</code> and <code>config</code>.</td>\n</tr>\n<tr>\n<td><code>data.store</code></td>\n<td><code>object|null</code></td>\n<td>The store and its business: <code>{id, name, logo, business: {id, name}}</code>.</td>\n</tr>\n<tr>\n<td><code>data.seller_address</code></td>\n<td><code>string|null</code></td>\n<td>The seller wallet address, if set.</td>\n</tr>\n<tr>\n<td><code>data.creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge: <code>{id, username, email, address}</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who claimed the charge with <code>setCurrency</code>. Null before that.</td>\n</tr>\n<tr>\n<td><code>data.buyer_fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The fiat currency of the other party, frozen when that party picks a currency. Null when the charge is not cross-border.</td>\n</tr>\n<tr>\n<td><code>data.buyer_price</code></td>\n<td><code>object|null</code></td>\n<td>The total in <code>buyer_fiat_currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.buyer_exchange_rate</code></td>\n<td><code>string|null</code></td>\n<td>Units of <code>buyer_fiat_currency</code> for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>data.viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same amounts in the fiat currency of the caller. Information only. See the folder description.</td>\n</tr>\n<tr>\n<td><code>data.business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same shape as <code>viewer_fiat</code>, in the default fiat currency of the business. Null for P2P and for charges already in that currency.</td>\n</tr>\n<tr>\n<td><code>data.payments[]</code></td>\n<td><code>array</code></td>\n<td>The recorded payments: <code>{id, amount, currency, transaction, reference}</code>. <code>amount</code> is in the smallest unit of <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>data.refunds[]</code></td>\n<td><code>array</code></td>\n<td>The refunds: <code>{id, amount, exchange_rate, currency, transaction, expires_at, metadata}</code>.</td>\n</tr>\n<tr>\n<td><code>data.tokens[]</code></td>\n<td><code>array</code></td>\n<td>The receipt NFTs minted for the charge: <code>{id, token_id}</code>.</td>\n</tr>\n<tr>\n<td><code>data.requested_buyer</code></td>\n<td><code>object</code></td>\n<td>Only present when the charge was sent to a user: <code>{id, username}</code>.</td>\n</tr>\n<tr>\n<td><code>data.invoice</code></td>\n<td><code>object</code></td>\n<td>Only on invoice charges (type 2): <code>{id, number, title, date, due_date, notes, approved, customer}</code>.</td>\n</tr>\n<tr>\n<td><code>data.p2p_request</code></td>\n<td><code>object</code></td>\n<td>Only on P2P charges (type 3): <code>{id, memo, sender_account, recipient_account, canceled, canceled_by_account_id, canceled_by_role}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode, or the currency address does not exist for the gateway type.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>gateway not available for this charge</code>: the gateway is not a gateway of the store.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Pricing or changeset error, for example a blank <code>hash</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>{status, message}</code>: <code>business not verified</code>, <code>charge must be created</code>, <code>You can't pay yourself</code>, <code>This payment was sent to someone else</code>, or an unverified-account limit message.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>currency and gateway must be on the same platform</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":shortcode","set_currency"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"986f53d6-4953-43b5-80a6-a2e2f7856ebd","description":{"content":"<p>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"}]}},"response":[{"id":"d7d8a501-b9da-4e37-8698-05b50c413407","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/set_currency","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","set_currency"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 231,\n        \"shortcode\": \"73cJltPHglQdnVH\",\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"metadata\": {\n            \"items\": [\n                {\n                    \"id\": 3,\n                    \"name\": \"Espresso\",\n                    \"description\": \"Double shot\",\n                    \"images\": [\n                        {\n                            \"url\": \"https://example.com/images/espresso.png\"\n                        }\n                    ],\n                    \"is_physical\": true,\n                    \"taxable\": true,\n                    \"tax_rate\": \"0.10\",\n                    \"quantity\": 2,\n                    \"price\": {\n                        \"amount\": \"1.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0.10\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"2.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"2.20\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"178600\",\n                    \"unit_tax_currency\": \"17860\",\n                    \"subtotal_currency\": \"357200\",\n                    \"tax_currency\": \"35720\",\n                    \"total_currency\": \"392920\"\n                },\n                {\n                    \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                    \"name\": \"Catering service\",\n                    \"description\": \"\",\n                    \"is_physical\": false,\n                    \"taxable\": false,\n                    \"tax_rate\": \"0.10\",\n                    \"metadata\": {},\n                    \"quantity\": 1.0,\n                    \"price\": {\n                        \"amount\": \"100.0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"unit_tax\": {\n                        \"amount\": \"0\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"subtotal\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"tax\": {\n                        \"amount\": \"0.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"total\": {\n                        \"amount\": \"100.00\",\n                        \"currency\": \"BRL\"\n                    },\n                    \"price_currency\": \"17860000\",\n                    \"unit_tax_currency\": \"0\",\n                    \"subtotal_currency\": \"17860000\",\n                    \"tax_currency\": \"0\",\n                    \"total_currency\": \"17860000\"\n                }\n            ]\n        },\n        \"price\": {\n            \"amount\": \"102.20\",\n            \"currency\": \"BRL\"\n        },\n        \"currency_price\": \"18252920\",\n        \"exchange_rate\": \"0.1786\",\n        \"expires_at\": \"2026-10-27T14:20:00Z\",\n        \"gateway\": {\n            \"id\": 73,\n            \"name\": \"Main Gateway\",\n            \"address\": \"0x7f3a9c2e5b1d4f6a8c0e2b4d6f8a1c3e5b7d9f0a\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            }\n        },\n        \"store\": {\n            \"id\": 5,\n            \"name\": \"Main Store\",\n            \"logo\": \"https://example.com/images/store-logo.png\",\n            \"business\": {\n                \"id\": 4,\n                \"name\": \"Steve Coffee\"\n            }\n        },\n        \"seller_address\": null,\n        \"creator\": {\n            \"id\": 12,\n            \"username\": \"steveseller\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\"\n        },\n        \"buyer\": {\n            \"id\": 34,\n            \"username\": \"stevebuyer\",\n            \"email\": \"steve+buyer@example.com\",\n            \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\"\n        },\n        \"currency\": {\n            \"id\": 3,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\",\n            \"supported\": true\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"buyer_fiat_currency\": {\n            \"id\": 1,\n            \"name\": \"US Dollar\",\n            \"symbol\": \"USD\",\n            \"sign\": \"$\"\n        },\n        \"buyer_price\": {\n            \"amount\": \"18.25\",\n            \"currency\": \"USD\"\n        },\n        \"buyer_exchange_rate\": \"0.1786\",\n        \"viewer_fiat\": {\n            \"fiat_currency\": {\n                \"id\": 1,\n                \"name\": \"US Dollar\",\n                \"symbol\": \"USD\",\n                \"sign\": \"$\"\n            },\n            \"rate\": 0.1786,\n            \"indicative\": true,\n            \"locked\": false,\n            \"locked_at\": null,\n            \"price\": {\n                \"amount\": \"18.25\",\n                \"currency\": \"USD\"\n            },\n            \"items\": [\n                {\n                    \"id\": 3,\n                    \"price\": \"0.18\",\n                    \"subtotal\": \"0.36\",\n                    \"tax\": \"0.04\",\n                    \"unit_tax\": \"0.02\",\n                    \"total\": \"0.39\"\n                },\n                {\n                    \"id\": \"f543912d-d957-4bb2-a9a8-182c01f2f932\",\n                    \"price\": \"17.86\",\n                    \"subtotal\": \"17.86\",\n                    \"tax\": \"0.00\",\n                    \"unit_tax\": \"0.00\",\n                    \"total\": \"17.86\"\n                }\n            ],\n            \"payments\": {},\n            \"refunds\": {}\n        },\n        \"business_fiat\": null,\n        \"payments\": [],\n        \"refunds\": [],\n        \"tokens\": [],\n        \"type\": {\n            \"id\": 1,\n            \"label\": \"Point of Sale\"\n        },\n        \"status\": {\n            \"id\": 1,\n            \"label\": \"created\"\n        },\n        \"inserted_at\": \"2026-10-27T14:00:00\",\n        \"updated_at\": \"2026-10-27T14:05:00\"\n    }\n}"},{"id":"0d16bcbe-b6d7-4da2-abf9-45507da1e233","name":"500 Sent to someone else","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"nonce\": 4821937,\n        \"hash\": \"0x9b2c4e6a8d0f1b3c5e7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d\",\n        \"gateway_id\": 73,\n        \"currency_address\": \"0x5a1e5c0ffee000000000000000000000000c0ffe\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/set_currency","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","set_currency"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"This payment was sent to someone else\"\n}"}],"_postman_id":"0b563908-6ad8-463a-83c3-6dad6aff04d8"},{"name":"reportTransaction","id":"21e35347-d6ae-484a-9377-96163ec7b1fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n        \"nonce\": 15,\n        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id/transactions","description":"<p>Reports a crypto payment that the buyer sent on chain. The API sets the charge to <code>pending</code> and starts a background job 15 seconds later. The job reads the chain for up to about 30 minutes and then sets <code>confirmed</code>, <code>underpaid</code>, <code>expired</code> or <code>failed</code>. Poll <code>get</code> or <code>jobs</code> to follow it.</p>\n<p>The charge must be in status <code>created</code>. For P2P charges, only the buyer who claimed the charge with <code>setCurrency</code> can report. For point of sale and invoice charges, any signed-in user can report.</p>\n<p>The API checks the expiry against the on-chain confirmation time, not the time of this call.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>transaction.address</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The wallet address that sent the transaction.</td>\n</tr>\n<tr>\n<td><code>transaction.nonce</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The nonce of that address for the transaction.</td>\n</tr>\n<tr>\n<td><code>transaction.identifier</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The transaction hash. The hash can change if the wallet speeds up or replaces the transaction. For this reason the API also needs the address and the nonce.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td><code>job created</code> when the API queued the check.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id, or the <code>transaction</code> object is missing a key.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must have created status</code>, <code>only the buyer who claimed this charge can report its payment</code> (P2P), <code>business not verified</code>, <code>failed to update status</code>, or <code>job failed to queue</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","transactions"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"22294950-825e-47ba-90ac-871e4102e382","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"b95caab1-3820-48ef-a36d-23101751c3b6","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n        \"nonce\": 15,\n        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/transactions","host":["https://api.liberpay.com"],"path":["api","charges",":id","transactions"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"job created\"\n}"},{"id":"9dfd1989-b469-444a-9741-7178fc1e34c8","name":"500 Not created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x6666ffff7777aaaa8888bbbb9999cccc0000dddd\",\n        \"nonce\": 15,\n        \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/transactions","host":["https://api.liberpay.com"],"path":["api","charges",":id","transactions"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"charge must have created status\"\n}"}],"_postman_id":"21e35347-d6ae-484a-9377-96163ec7b1fa"},{"name":"jobs","id":"3e910ced-eb81-4349-8710-2e8817a16e0e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/charges/:shortcode/jobs","description":"<p>Returns the background jobs of a charge, oldest first: the payment check (<code>transaction</code>) and the receipt mint (<code>mint</code>, <code>mint_transaction</code>). Use it to show progress after <code>reportTransaction</code>.</p>\n<p>While the charge is <code>created</code>, any signed-in user can read it. After that, only the creator, the buyer or a member of the store's business can.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].stage</code></td>\n<td><code>string</code></td>\n<td><code>transaction</code>, <code>mint</code> or <code>mint_transaction</code>.</td>\n</tr>\n<tr>\n<td><code>data[].state</code></td>\n<td><code>string</code></td>\n<td>The job state: <code>available</code>, <code>scheduled</code>, <code>executing</code>, <code>retryable</code>, <code>completed</code>, <code>discarded</code> or <code>cancelled</code>.</td>\n</tr>\n<tr>\n<td><code>data[].attempt</code></td>\n<td><code>integer</code></td>\n<td>The attempts so far.</td>\n</tr>\n<tr>\n<td><code>data[].identifier</code></td>\n<td><code>string|null</code></td>\n<td>The transaction hash, when the job has one.</td>\n</tr>\n<tr>\n<td><code>data[].for</code></td>\n<td><code>string|null</code></td>\n<td>Mint jobs: who gets the receipt.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode, or the caller may not see it.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":shortcode","jobs"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"7ae2a87b-c046-44a4-b8ab-ae9105d85d27","description":{"content":"<p>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"}]}},"response":[{"id":"be004a34-4fe0-48b1-a5cd-c6fdef181fd1","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/jobs","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","jobs"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 5012,\n            \"stage\": \"transaction\",\n            \"state\": \"completed\",\n            \"attempt\": 3,\n            \"max_attempts\": 32,\n            \"for\": null,\n            \"identifier\": \"0x1486c2a6724154211d2501f8f0de24067b61a716404b8359b533478bfb8bb067\",\n            \"nonce\": 15,\n            \"inserted_at\": \"2026-10-27T14:06:00.000000\",\n            \"scheduled_at\": \"2026-10-27T14:06:15.000000\",\n            \"attempted_at\": \"2026-10-27T14:06:45.000000\",\n            \"completed_at\": \"2026-10-27T14:06:46.000000\",\n            \"cancelled_at\": null,\n            \"discarded_at\": null\n        }\n    ]\n}"}],"_postman_id":"3e910ced-eb81-4349-8710-2e8817a16e0e"},{"name":"retry","id":"7759a503-8bc4-4135-a5cc-00377eae639c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/charges/:shortcode/retry","description":"<p>Runs the payment check again when the last check stopped (for example <code>discarded</code>). The API reads the chain again for the transaction that was already reported. It never sends a new transaction. Access rules are the same as <code>jobs</code>.</p>\n<p>The call is safe to repeat. If a check is already waiting or running, the API returns <code>in_progress</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td><code>retrying</code> or <code>in_progress</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode, or the caller may not see it.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>already_confirmed</code> (a payment is recorded) or <code>no_confirmation_job</code> (no payment was reported).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":shortcode","retry"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"d48ca918-92cb-49d0-9d3b-2369a984c1e2","description":{"content":"<p>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"}]}},"response":[{"id":"4e965f83-17df-45b3-9882-e99449153e61","name":"200 OK","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/retry","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","retry"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"message\": \"retrying\"\n}"},{"id":"9cc22af8-1e71-4a03-b779-4c58ee1b9a9d","name":"422 Already paid","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/retry","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","retry"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"already_confirmed\"\n}"}],"_postman_id":"7759a503-8bc4-4135-a5cc-00377eae639c"},{"name":"sendToUser","id":"a514ff95-1bdd-42b1-a0e0-9419de84bc89","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"username\": \"@stevebuyer\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:shortcode/request","description":"<p>Sends an unpaid point of sale charge to a Liberpay user by <code>@username</code>. The charge appears in that user's \"To do\" list, and only that user can pay it until the request is cleared. The API also emails the user when the user has a real email address.</p>\n<p>The caller must be a member of the store's business. The charge must be type 1 (point of sale) and in status <code>created</code>. You cannot send a charge to a member of your own business.</p>\n<p>The <code>username</code> key is at the top level of the body, not inside <code>charge</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The username of the payer. A leading <code>@</code> is optional. The match ignores case.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.requested_buyer</code></td>\n<td><code>object</code></td>\n<td>The user who must pay: <code>{id, username}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>The body has no <code>username</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>This charge can't be sent</code>: not a point of sale charge, or not <code>created</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>You can't send this payment to that user</code>: no user has this username, or the user is a member of the business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":shortcode","request"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"be0deb56-565c-49dc-ba05-1c7cbc1faf37","description":{"content":"<p>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"}]}},"response":[{"id":"d527e70b-4b8c-43e9-8075-125440149105","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"username\": \"@stevebuyer\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/request","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","request"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"requested_buyer\": {\n            \"id\": 34,\n            \"username\": \"stevebuyer\"\n        }\n    }\n}"},{"id":"4dc15a5e-6132-49ef-824f-0352ba288e9a","name":"422 Bad user","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"username\": \"@stevebuyer\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/request","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","request"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"You can't send this payment to that user\"\n}"}],"_postman_id":"a514ff95-1bdd-42b1-a0e0-9419de84bc89"},{"name":"clearRequest","id":"326760ec-cc89-4423-b291-fbe58e7568eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/charges/:shortcode/request","description":"<p>Removes the user that a point of sale charge was sent to. A member of the store's business can cancel the request, and the user it was sent to can decline it. After this, anyone with the link can pay the charge again. The response is 204 with no body.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode, the charge is not a point of sale charge, or the caller is neither a business member nor the requested user.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":shortcode","request"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"5f187eba-fbac-494e-8425-2d13d7d99e3c","description":{"content":"<p>The shortcode of the charge (<code>data.shortcode</code>). A numeric id does not work here.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"}]}},"response":[{"id":"04c12a14-50f0-447b-83c6-d9fe07d7a9bc","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:shortcode/request","host":["https://api.liberpay.com"],"path":["api","charges",":shortcode","request"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge (`data.shortcode`). A numeric id does not work here."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"326760ec-cc89-4423-b291-fbe58e7568eb"}],"id":"09a12468-fdd2-4009-8d0c-1c7890d98046","description":"<p>A charge is a request for payment. A store creates it, and a buyer pays it in crypto (USDC and other tokens on Polygon) or through a fiat gateway (Stripe, PayPal, Woovi/Pix). Each charge belongs to one store and one gateway. Invoices (<code>invoices</code>) and P2P payments are charges too.</p>\n<p><strong>Charge types</strong> (<code>type.id</code> → <code>type.label</code>):</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>id</th>\n<th>label</th>\n<th>use</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>Point of Sale</td>\n<td>A sale at a store or a payment link.</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Invoice</td>\n<td>A charge with an <code>invoice</code> object and a customer.</td>\n</tr>\n<tr>\n<td>3</td>\n<td>Peer to Peer</td>\n<td>A payment between two Liberpay users (consumer app).</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Lifecycle.</strong> You create a charge in status <code>created</code> (1). The buyer opens the payment page and picks a currency (<code>setCurrency</code>). The buyer pays and reports the transaction, and the charge goes to <code>pending</code> (2). A background job reads the chain and sets <code>confirmed</code> (3), <code>underpaid</code> (6), <code>expired</code> (4) or <code>failed</code> (5). Fiat gateways confirm through their own flow (<code>fiat links</code>).</p>\n<p><strong>Price quote and expiry.</strong> A charge locks its price in <code>currency</code> for 15 minutes. <code>expires_at</code> is 15 minutes after creation. Each <code>update</code> and each <code>setCurrency</code> sets a new quote and moves <code>expires_at</code> to 15 minutes from that call. A status change does not move it. The API accepts a crypto payment when the chain confirms it before <code>expires_at</code>, even if the report comes later. A refund quote lasts 30 minutes.</p>\n<p><strong>The fiat currency is locked.</strong> <code>fiat_currency</code> is set at creation and never changes. To change it, delete the charge and create a new one.</p>\n<p><strong>Cross-border amounts.</strong> Three fields freeze the amount for the other party when that party lives in a different currency: <code>buyer_fiat_currency</code>, <code>buyer_price</code> and <code>buyer_exchange_rate</code>. The API sets them each time that party picks a currency, and clears them when the currencies are the same. After payment they do not change. \"Other party\" means the buyer, except on a P2P send, where it is the recipient.</p>\n<p><strong><code>viewer_fiat</code> block.</strong> Each charge response includes the amounts in the fiat currency of the caller. The API uses the country of the signed-in user, or the <code>?viewer_currency=USD</code> query parameter. The value is null for anonymous callers, when the charge is already in that currency, or when no rate is available. The block has <code>fiat_currency</code>, <code>rate</code>, <code>indicative</code>, <code>locked</code>, <code>locked_at</code>, <code>price</code>, <code>items[]</code> (same order and <code>id</code> as <code>metadata.items</code>), and <code>payments</code> / <code>refunds</code> (maps from payment or refund id to <code>{amount}</code>). When the caller's currency is the frozen <code>buyer_fiat_currency</code>, the block uses the frozen rate, and it is <code>locked: true</code> after payment. Otherwise it uses a live rate with <code>indicative: true</code>. These numbers are for display only. The amount due is always <code>price</code>. <code>business_fiat</code> has the same shape, in the default currency of the business.</p>\n<p><strong><code>:id</code> or <code>:shortcode</code>.</strong> Use the right identifier for each route:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Route</th>\n<th>Identifier</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>GET /api/charges/:id</code></td>\n<td>shortcode only</td>\n</tr>\n<tr>\n<td><code>PUT</code> and <code>DELETE /api/charges/:id</code></td>\n<td>numeric id only</td>\n</tr>\n<tr>\n<td><code>/api/charges/:id/transactions</code>, <code>/fiat_links</code>, <code>/fiat_link</code>, <code>/refund</code>, <code>/refunds</code></td>\n<td>numeric id only</td>\n</tr>\n<tr>\n<td><code>/api/charges/:shortcode/set_currency</code>, <code>/jobs</code>, <code>/retry</code>, <code>/request</code></td>\n<td>shortcode only</td>\n</tr>\n</tbody>\n</table>\n</div><p>A shortcode on a numeric-id route gives 400. A numeric id on a shortcode route gives 404.</p>\n<p><strong>Errors.</strong> Many business rules in this controller return HTTP 500 with <code>{\"message\": \"...\"}</code> (for example \"charge must have created status\"). Read the <code>message</code> text, not only the status code.</p>\n","_postman_id":"09a12468-fdd2-4009-8d0c-1c7890d98046","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"fiat links","item":[{"name":"create","id":"8b2edc44-37b8-41fc-acf0-0a6d4e62c156","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"stripe\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id/fiat_links","description":"<p>Creates a payment session at the fiat provider for the charge total and returns the provider response as <code>data</code>. The API stores the response with the charge. A second call for the same provider replaces the stored session; for Woovi it returns the existing Pix charge.</p>\n<p>Any signed-in user can call this; in practice the buyer calls it from the payment page. The provider must match the gateway type of the charge.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>platform</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td><code>stripe</code>, <code>paypal</code> or <code>woovi</code>. Use the <code>gateway.type.identifier</code> of the charge.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The raw provider object: a Stripe Checkout Session, a PayPal order, or the Woovi charge response.</td>\n</tr>\n<tr>\n<td><code>data.url</code></td>\n<td><code>string</code></td>\n<td>Stripe: the checkout page for the buyer.</td>\n</tr>\n<tr>\n<td><code>data.links[]</code></td>\n<td><code>array</code></td>\n<td>PayPal: the link with <code>rel: payer-action</code> is the approval page.</td>\n</tr>\n<tr>\n<td><code>data.charge.paymentLinkUrl</code></td>\n<td><code>string</code></td>\n<td>Woovi: the Pix payment page.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id, or <code>platform</code> is missing or not one of the three values.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must be created</code>, <code>business not verified</code>, or the provider failed (<code>failed to create stripe checkout session</code>, <code>failed to create paypal order</code>, <code>failed to create woovi payment request</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","fiat_links"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"7113adb5-75f7-43aa-8d26-60b12c5d0cfb","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"fbbb39e8-ded7-4fb6-9a51-787d7e1ac062","name":"201 Created (Stripe)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"stripe\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": \"cs_test_a1B2c3D4e5F6\",\n        \"object\": \"checkout.session\",\n        \"url\": \"https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6\",\n        \"client_reference_id\": \"73cJltPHglQdnVH\",\n        \"amount_total\": 10220,\n        \"currency\": \"brl\",\n        \"status\": \"open\",\n        \"payment_status\": \"unpaid\",\n        \"payment_intent\": null\n    }\n}"},{"id":"56b22467-6d81-4760-bb78-bdf13a34b9af","name":"201 Created (PayPal)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"stripe\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": \"5O190127TN364715T\",\n        \"status\": \"PAYER_ACTION_REQUIRED\",\n        \"links\": [\n            {\n                \"href\": \"https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T\",\n                \"rel\": \"self\",\n                \"method\": \"GET\"\n            },\n            {\n                \"href\": \"https://www.paypal.com/checkoutnow?token=5O190127TN364715T\",\n                \"rel\": \"payer-action\",\n                \"method\": \"GET\"\n            }\n        ]\n    }\n}"},{"id":"7791dcae-1578-4031-87d7-48b842eec5da","name":"201 Created (Woovi)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"stripe\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"correlationID\": \"73cJltPHglQdnVH\",\n        \"brCode\": \"00020101021226990014br.gov.bcb.pix...6304ABCD\",\n        \"charge\": {\n            \"correlationID\": \"73cJltPHglQdnVH\",\n            \"value\": 10220,\n            \"status\": \"ACTIVE\",\n            \"globalID\": \"Q2hhcmdlOjEyMzQ1\",\n            \"paymentLinkUrl\": \"https://woovi.com/pay/abc123\",\n            \"brCode\": \"00020101021226990014br.gov.bcb.pix...6304ABCD\",\n            \"expiresDate\": \"2026-10-27T14:20:00.000Z\"\n        }\n    }\n}"},{"id":"905495ef-dae2-4785-8a7a-24310225097d","name":"500 Not created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"stripe\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"charge must be created\"\n}"}],"_postman_id":"8b2edc44-37b8-41fc-acf0-0a6d4e62c156"},{"name":"capture","id":"ba18b75a-d873-45b1-a0aa-d63307ac05c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"paypal\",\n    \"data\": {\n        \"PayerID\": \"FSMVU44LF3YUS\",\n        \"token\": \"5O190127TN364715T\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id/fiat_links/capture","description":"<p><strong>PayPal only.</strong> Captures the PayPal order after the buyer approves it and returns to <code>/charges/:shortcode/paypal/return</code>. On success the API sets the charge to <code>confirmed</code>, sends the receipt email, and returns the PayPal order with 201.</p>\n<p>The charge must still be in status <code>created</code>. Stripe and Woovi do not use this endpoint: their webhooks confirm the charge.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>platform</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>Must be <code>paypal</code>.</td>\n</tr>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>yes</td>\n<td>The query values PayPal adds to the return URL: <code>PayerID</code> and <code>token</code>. The API forwards this object to PayPal.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.status</code></td>\n<td><code>string</code></td>\n<td><code>COMPLETED</code> on success.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>platform</code> is not <code>paypal</code>, or <code>data</code> is missing.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must be created</code>, <code>business not verified</code>, or <code>failed to capture order</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","fiat_links","capture"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"0e8a211b-5494-42ac-92f9-1b47c1ccdfa1","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"9a2043a1-297e-4f48-9bf2-b458a32ddc3d","name":"201 Captured","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"paypal\",\n    \"data\": {\n        \"PayerID\": \"FSMVU44LF3YUS\",\n        \"token\": \"5O190127TN364715T\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links/capture","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links","capture"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": \"5O190127TN364715T\",\n        \"status\": \"COMPLETED\"\n    }\n}"},{"id":"fa4a82d7-af3f-4376-9e63-9005bfe73c11","name":"500 Not created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"platform\": \"paypal\",\n    \"data\": {\n        \"PayerID\": \"FSMVU44LF3YUS\",\n        \"token\": \"5O190127TN364715T\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_links/capture","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_links","capture"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"charge must be created\"\n}"}],"_postman_id":"ba18b75a-d873-45b1-a0aa-d63307ac05c3"},{"name":"get","id":"f7758577-1b53-4836-beac-2cf0e44facf3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/charges/:id/fiat_link","description":"<p>Returns the receipt link and the provider dashboard link for a charge that a fiat gateway paid. A member of the store's business can call this. It supports Stripe and Woovi. PayPal and crypto gateways return 500.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.receipt_url</code></td>\n<td><code>string</code></td>\n<td>Stripe: the Stripe receipt. Woovi: the Pix payment page.</td>\n</tr>\n<tr>\n<td><code>data.dashboard_url</code></td>\n<td><code>string</code></td>\n<td>The payment in the provider dashboard.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The gateway is not Stripe or Woovi, or the charge has no stored fiat link.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","fiat_link"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"2a024792-2edb-4f54-9601-508df2217220","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"17fa1cf9-ba7c-4dfc-a040-94aa5e04c532","name":"200 OK (Stripe)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_link","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_link"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"receipt_url\": \"https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF9leGFtcGxl\",\n        \"dashboard_url\": \"https://dashboard.stripe.com/payments/pi_3Example0000000001\"\n    }\n}"},{"id":"05d8d26c-a956-426a-9a89-2fdcece301a2","name":"500 Not supported","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/fiat_link","host":["https://api.liberpay.com"],"path":["api","charges",":id","fiat_link"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"gateway does not support fiat links\"\n}"}],"_postman_id":"f7758577-1b53-4836-beac-2cf0e44facf3"}],"id":"b70f00ed-5947-43ae-9a35-09b41c426824","description":"<p>A fiat link lets the buyer pay a charge with a fiat gateway instead of a crypto wallet. The charge gateway decides the provider:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Provider</th>\n<th><code>platform</code></th>\n<th>Create (<code>fiat_links</code>)</th>\n<th>Capture (<code>fiat_links/capture</code>)</th>\n<th>Receipt (<code>fiat_link</code>)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Stripe</td>\n<td><code>stripe</code></td>\n<td>Checkout session. Send the buyer to <code>data.url</code>.</td>\n<td>Not here. A Stripe webhook and a background job confirm the charge.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>PayPal</td>\n<td><code>paypal</code></td>\n<td>PayPal order. Send the buyer to the <code>payer-action</code> link.</td>\n<td>Yes, after the buyer returns from PayPal.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>Woovi (Pix)</td>\n<td><code>woovi</code></td>\n<td>Pix charge. Show <code>data.charge.paymentLinkUrl</code> or the Pix code.</td>\n<td>Not here. The Woovi webhook confirms the charge.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><p>The charge must be in status <code>created</code>. Call <code>setCurrency</code> first with the fiat gateway and its fiat currency, so the charge has a buyer and a quote. The business of the store must be verified or under its limit of unverified transactions.</p>\n","_postman_id":"b70f00ed-5947-43ae-9a35-09b41c426824","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"refunds","item":[{"name":"get","id":"ad005de1-e5f4-4a69-8c19-87bda1113a7a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/charges/:id/refund","description":"<p>Returns the open refund of the charge (created but not reported), or <code>data: null</code> when there is none. Reported refunds are in the <code>refunds</code> list of the charge object.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The refund id. Use it as <code>:refund_id</code>.</td>\n</tr>\n<tr>\n<td><code>data.amount</code></td>\n<td><code>string</code></td>\n<td>The refund amount in the smallest unit of the charge currency (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>data.currency_id</code></td>\n<td><code>integer</code></td>\n<td>The currency of the refund (the charge <code>currency</code>).</td>\n</tr>\n<tr>\n<td><code>data.exchange_rate</code></td>\n<td><code>string</code></td>\n<td>The rate used: units of the currency for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>data.expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the refund quote (30 minutes). Report the transaction before this time.</td>\n</tr>\n<tr>\n<td><code>data.metadata.items</code></td>\n<td><code>object</code></td>\n<td>Map from item id (as in <code>metadata.items[].id</code>) to <code>{quantity}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","refund"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"68ea90dc-b511-46fc-8f56-0d8e989dc66a","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"bd2ec9fb-38bf-4215-a0bd-5d311151fb2b","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/refund","host":["https://api.liberpay.com"],"path":["api","charges",":id","refund"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 17,\n        \"charge_id\": 231,\n        \"currency_id\": 3,\n        \"amount\": \"392920\",\n        \"exchange_rate\": \"0.1790\",\n        \"metadata\": {\n            \"type\": \"items\",\n            \"items\": {\n                \"3\": {\n                    \"quantity\": 2\n                }\n            }\n        },\n        \"expires_at\": \"2026-10-28T10:30:00Z\"\n    }\n}"},{"id":"ccd6e7bd-7521-47b4-88a2-2739e6b495ee","name":"200 None open","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/refund","host":["https://api.liberpay.com"],"path":["api","charges",":id","refund"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": null\n}"}],"_postman_id":"ad005de1-e5f4-4a69-8c19-87bda1113a7a"},{"name":"create","id":"79e8095f-640c-41f1-8f48-eb7a51627c60","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refund\": {\n        \"type\": \"items\",\n        \"items\": {\n            \"3\": {\n                \"quantity\": 2\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id/refunds","description":"<p>Creates a refund quote for a <code>confirmed</code> charge and returns it with 201. Use <code>type: full</code> to return all items, or <code>type: items</code> with a map of item ids and quantities. The API prices each item (price plus tax) in the charge currency at the <strong>current</strong> rate, so the token amount can differ from the amount paid.</p>\n<p>The charge status does not change here. Send the amount on chain, then call <code>report</code> before <code>expires_at</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>refund.type</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td><code>full</code> (all remaining items) or <code>items</code>.</td>\n</tr>\n<tr>\n<td><code>refund.items</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Required for <code>items</code>. Keys are item ids as strings (<code>\"3\"</code> for a catalog product, the UUID for an amount item). Values are <code>{\"quantity\": n}</code> with a whole number from 1 to the quantity still available.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The refund id. Use it as <code>:refund_id</code>.</td>\n</tr>\n<tr>\n<td><code>data.amount</code></td>\n<td><code>string</code></td>\n<td>The refund amount in the smallest unit of the charge currency (for USDC, 6 decimals).</td>\n</tr>\n<tr>\n<td><code>data.currency_id</code></td>\n<td><code>integer</code></td>\n<td>The currency of the refund (the charge <code>currency</code>).</td>\n</tr>\n<tr>\n<td><code>data.exchange_rate</code></td>\n<td><code>string</code></td>\n<td>The rate used: units of the currency for one unit of the charge fiat currency.</td>\n</tr>\n<tr>\n<td><code>data.expires_at</code></td>\n<td><code>string</code></td>\n<td>The end of the refund quote (30 minutes). Report the transaction before this time.</td>\n</tr>\n<tr>\n<td><code>data.metadata.items</code></td>\n<td><code>object</code></td>\n<td>Map from item id (as in <code>metadata.items[].id</code>) to <code>{quantity}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id, or <code>refund.type</code> is not <code>full</code> or <code>items</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>The charge has no recorded payment, or an item id or quantity is not valid.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must be confirmed</code>, <code>business not verified</code>, or another refund is open.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","refunds"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"3472509e-73b0-4057-833a-bc9c6969d0cb","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"}]}},"response":[{"id":"5de7c9a8-e176-4ea9-898d-ce96b9d8334f","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refund\": {\n        \"type\": \"items\",\n        \"items\": {\n            \"3\": {\n                \"quantity\": 2\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 17,\n        \"charge_id\": 231,\n        \"currency_id\": 3,\n        \"amount\": \"392920\",\n        \"exchange_rate\": \"0.1790\",\n        \"metadata\": {\n            \"type\": \"items\",\n            \"items\": {\n                \"3\": {\n                    \"quantity\": 2\n                }\n            }\n        },\n        \"expires_at\": \"2026-10-28T10:30:00Z\"\n    }\n}"},{"id":"67095730-c079-4c63-9679-3e9e35b77492","name":"422 Bad quantity","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refund\": {\n        \"type\": \"items\",\n        \"items\": {\n            \"3\": {\n                \"quantity\": 2\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Item quantity must be positive and still have available quantity\",\n    \"data\": {\n        \"id\": \"3\",\n        \"quantity\": 5,\n        \"available\": 2\n    }\n}"},{"id":"b1f7e0c4-9546-46be-a22e-65f4082d7171","name":"500 Refund open","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"refund\": {\n        \"type\": \"items\",\n        \"items\": {\n            \"3\": {\n                \"quantity\": 2\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Return in progress. Complete current refund or cancel to start over.\"\n}"}],"_postman_id":"79e8095f-640c-41f1-8f48-eb7a51627c60"},{"name":"cancel","id":"d7819774-45c2-4790-a544-620d52e3bbe8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id","description":"<p>Deletes an open refund that you did not report yet. The charge stays <code>confirmed</code>. The response is 204 with no body. After this you can create a new refund.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n<tr>\n<td><code>refund_id</code></td>\n<td>The id of the refund (<code>data.id</code> from <code>create</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The charge or the refund does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must be confirmed</code>, <code>refund does not match charge</code>, or <code>refund already reported</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","refunds",":refund_id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"e8d01577-a933-4b91-a5b5-fa716dbb187c","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"},{"id":"b8a9d59e-f258-4b49-bc86-cf574d22b385","description":{"content":"<p>The id of the refund (<code>data.id</code> from <code>create</code>).</p>\n","type":"text/plain"},"type":"any","value":"17","key":"refund_id"}]}},"response":[{"id":"6a33ad24-1a53-43c8-bee4-22dc2c7458e5","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds",":refund_id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."},{"key":"refund_id","value":"17","description":"The id of the refund (`data.id` from `create`)."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"2def8ddd-e2ec-4e7b-a7d7-09d0792bff20","name":"500 Already reported","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds",":refund_id"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."},{"key":"refund_id","value":"17","description":"The id of the refund (`data.id` from `create`)."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"refund already reported\"\n}"}],"_postman_id":"d7819774-45c2-4790-a544-620d52e3bbe8"},{"name":"report","id":"867ecb9e-91e6-4537-96d0-2c10905dbd99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\",\n        \"nonce\": 42,\n        \"identifier\": \"0x7a3e5c9b1d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id/report","description":"<p>Reports the on-chain transaction that paid the refund. The API sets the charge to <code>refund_pending</code> and starts a background job 15 seconds later. The job checks the sender, the recipient, the currency and the amount. If they are correct, it records the transaction on the refund and sets the charge back to <code>confirmed</code>.</p>\n<p>The charge must be <code>confirmed</code>, the refund must belong to the charge, it must not be reported yet, and its quote must not be expired.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</td>\n</tr>\n<tr>\n<td><code>refund_id</code></td>\n<td>The id of the refund.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>transaction.address</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The merchant wallet that sent the refund.</td>\n</tr>\n<tr>\n<td><code>transaction.nonce</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The nonce of that address for the transaction.</td>\n</tr>\n<tr>\n<td><code>transaction.identifier</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The transaction hash.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td><code>job created</code> when the API queued the check.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td><code>:id</code> is not a numeric id, or the <code>transaction</code> object is missing a key.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge or the refund does not exist, or the caller is not a member of the store's business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>charge must be confirmed</code>, <code>refund does not match charge</code>, <code>refund already reported</code>, <code>refund expired</code>, <code>failed to update status</code>, or <code>job failed to queue</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","charges",":id","refunds",":refund_id","report"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"46297e5b-0dfc-4439-9e56-8ebea660862f","description":{"content":"<p>The numeric id of the charge (<code>data.id</code>). A shortcode does not work here: the API returns 400.</p>\n","type":"text/plain"},"type":"any","value":"231","key":"id"},{"id":"8c0815b4-a9b9-43f0-83d4-847097381df8","description":{"content":"<p>The id of the refund.</p>\n","type":"text/plain"},"type":"any","value":"17","key":"refund_id"}]}},"response":[{"id":"a54e1e96-e746-4fcb-8623-c8db1fbe7123","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\",\n        \"nonce\": 42,\n        \"identifier\": \"0x7a3e5c9b1d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id/report","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds",":refund_id","report"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."},{"key":"refund_id","value":"17","description":"The id of the refund."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"job created\"\n}"},{"id":"39e24cc6-5943-42b3-b995-b4cbeca86341","name":"500 Expired","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"address\": \"0x1111aaaa2222bbbb3333cccc4444dddd5555eeee\",\n        \"nonce\": 42,\n        \"identifier\": \"0x7a3e5c9b1d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/charges/:id/refunds/:refund_id/report","host":["https://api.liberpay.com"],"path":["api","charges",":id","refunds",":refund_id","report"],"variable":[{"key":"id","value":"231","description":"The numeric id of the charge (`data.id`). A shortcode does not work here: the API returns 400."},{"key":"refund_id","value":"17","description":"The id of the refund."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"refund expired\"\n}"}],"_postman_id":"867ecb9e-91e6-4537-96d0-2c10905dbd99"}],"id":"eff6ac82-ec22-4de1-bd6a-08dbfa39a97f","description":"<p>A refund returns money for a <code>confirmed</code> crypto charge. The flow has three steps:</p>\n<ol>\n<li>Create the refund (<code>create</code>). The API computes the amount in the charge <code>currency</code> at the current rate. The refund quote is good for 30 minutes (<code>expires_at</code>).</li>\n<li>Send the amount on chain from the merchant wallet to the buyer.</li>\n<li>Report the transaction (<code>report</code>). The charge goes to <code>refund_pending</code> (7). A background job reads the chain. When the refund transaction is correct, the job records it and sets the charge back to <code>confirmed</code> (3). The charge stays <code>confirmed</code> also after a full refund. To see what was refunded, read the <code>refunds</code> list of the charge.</li>\n</ol>\n<p>A charge can have only one open (not reported) refund at a time. To start again, cancel the open refund. You can refund some items now and other items later, until no quantity is left.</p>\n<p>Only members of the store's business can use these endpoints. A charge with no recorded payment (for example an invoice marked as paid in cash) cannot be refunded. Here <code>:id</code> is the numeric charge id.</p>\n","_postman_id":"eff6ac82-ec22-4de1-bd6a-08dbfa39a97f","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"invoices","item":[{"name":"list","id":"b08ccfcc-151f-456d-806d-942cc076a5e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/invoices","description":"<p>Returns the invoices of a store, newest first, in pages of 250. Each item is a full charge object with a nested <code>invoice</code>.</p>\n<p>You must be the creator or a member of the business that owns the store. You can filter by customer and by approval.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The first page is 1. Each page has up to 250 items.</td>\n</tr>\n<tr>\n<td><code>customer_id</code></td>\n<td>no</td>\n<td>Return only invoices for this customer.</td>\n</tr>\n<tr>\n<td><code>approved</code></td>\n<td>no</td>\n<td><code>true</code> returns approved invoices. <code>false</code> returns drafts.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of items in all pages.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size. It is always 250 here.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True if there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the next page, or null.</td>\n</tr>\n<tr>\n<td><code>prev_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the previous page, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>first</code></td>\n<td><code>integer</code></td>\n<td>The position of the first item on this page.</td>\n</tr>\n<tr>\n<td><code>last</code></td>\n<td><code>integer</code></td>\n<td>The position of the last item on this page.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The pay page uses it.</td>\n</tr>\n<tr>\n<td><code>data[].price</code></td>\n<td><code>object</code></td>\n<td>The charge total in fiat: <code>amount</code> (decimal string) and <code>currency</code> (ISO code).</td>\n</tr>\n<tr>\n<td><code>data[].metadata.items</code></td>\n<td><code>array</code></td>\n<td>The line items of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].currency</code></td>\n<td><code>object|null</code></td>\n<td>The crypto currency that the buyer selected. It is null until the buyer selects one.</td>\n</tr>\n<tr>\n<td><code>data[].fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the payment.</td>\n</tr>\n<tr>\n<td><code>data[].store</code></td>\n<td><code>object</code></td>\n<td>The store and its business.</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge.</td>\n</tr>\n<tr>\n<td><code>data[].buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who pays the charge, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payments</code></td>\n<td><code>array</code></td>\n<td>The payments of the charge, each with its blockchain transaction.</td>\n</tr>\n<tr>\n<td><code>data[].refunds</code></td>\n<td><code>array</code></td>\n<td>The refunds of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The charge type: 1 Point of Sale, 2 Invoice, 3 P2P.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>).</td>\n</tr>\n<tr>\n<td><code>data[].viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the caller, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the business, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].invoice</code></td>\n<td><code>object</code></td>\n<td>The invoice of the charge, with its customer. See <code>GET /api/invoices/:id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the store. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>page</code> is not a number.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","invoices"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The first page is 1. Each page has up to 250 items.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Return only invoices for this customer.</p>\n","type":"text/plain"},"key":"customer_id","value":"8"},{"disabled":true,"description":{"content":"<p><code>true</code> returns approved invoices. <code>false</code> returns drafts.</p>\n","type":"text/plain"},"key":"approved","value":"true"}],"variable":[{"id":"fa681bdd-d54d-4fcf-a11d-057531377999","description":{"content":"<p>The store id.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"897ea7ca-5a4c-41e3-9602-b832a21c1bc9","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/invoices","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","invoices"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. Each page has up to 250 items.","disabled":true},{"key":"customer_id","value":"8","description":"Return only invoices for this customer.","disabled":true},{"key":"approved","value":"true","description":"`true` returns approved invoices. `false` returns drafts.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 231,\n            \"shortcode\": \"k3Hq9ZxT2mPbLwA\",\n            \"hash\": null,\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 41,\n                        \"name\": \"Vela aromática\",\n                        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n                        \"quantity\": 2,\n                        \"is_physical\": true,\n                        \"taxable\": false,\n                        \"price\": {\n                            \"amount\": \"39.90\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        }\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"79.80\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": null,\n            \"exchange_rate\": null,\n            \"expires_at\": null,\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Loja Centro USDC\",\n                \"address\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 17,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Loja Centro\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 3,\n                    \"name\": \"Velas da Ana\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 17,\n                \"username\": \"seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x2b5ad5c4795c026514f8317c7a215e218dccd6cf\"\n            },\n            \"buyer\": null,\n            \"currency\": null,\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 2,\n                \"label\": \"Invoice\"\n            },\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"created\"\n            },\n            \"inserted_at\": \"2026-10-20T14:02:11\",\n            \"updated_at\": \"2026-10-20T14:05:40\",\n            \"invoice\": {\n                \"id\": 94,\n                \"number\": 12,\n                \"title\": \"Velas para o evento\",\n                \"date\": \"2026-10-20\",\n                \"due_date\": \"2026-11-03\",\n                \"notes\": \"Pagamento por Pix ou USDC.\",\n                \"approved\": true,\n                \"customer\": {\n                    \"id\": 8,\n                    \"name\": \"Maria Souza\",\n                    \"email\": \"steve+customer@example.com\",\n                    \"address\": null,\n                    \"business_id\": 3\n                }\n            }\n        }\n    ]\n}"},{"id":"30c11762-2057-4a11-8e5f-b7ad1d56c56f","name":"404 Not a member","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/invoices","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","invoices"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. Each page has up to 250 items.","disabled":true},{"key":"customer_id","value":"8","description":"Return only invoices for this customer.","disabled":true},{"key":"approved","value":"true","description":"`true` returns approved invoices. `false` returns drafts.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"b08ccfcc-151f-456d-806d-942cc076a5e5"},{"name":"listGateway","id":"902d0761-c090-4977-844c-30f26fa2b28c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateways/:gateway_id/invoices","description":"<p>Returns the invoices paid to a gateway, newest first. Each item is a full charge object with a nested <code>invoice</code>.</p>\n<p>You must be the creator or a member of the business that owns the gateway. This endpoint returns only the first page of 250 items. It has no <code>page</code> parameter.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway_id</code></td>\n<td>The gateway id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of items in all pages.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size. It is always 250 here.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True if there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the next page, or null.</td>\n</tr>\n<tr>\n<td><code>prev_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the previous page, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>first</code></td>\n<td><code>integer</code></td>\n<td>The position of the first item on this page.</td>\n</tr>\n<tr>\n<td><code>last</code></td>\n<td><code>integer</code></td>\n<td>The position of the last item on this page.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The pay page uses it.</td>\n</tr>\n<tr>\n<td><code>data[].price</code></td>\n<td><code>object</code></td>\n<td>The charge total in fiat: <code>amount</code> (decimal string) and <code>currency</code> (ISO code).</td>\n</tr>\n<tr>\n<td><code>data[].metadata.items</code></td>\n<td><code>array</code></td>\n<td>The line items of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].currency</code></td>\n<td><code>object|null</code></td>\n<td>The crypto currency that the buyer selected. It is null until the buyer selects one.</td>\n</tr>\n<tr>\n<td><code>data[].fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the payment.</td>\n</tr>\n<tr>\n<td><code>data[].store</code></td>\n<td><code>object</code></td>\n<td>The store and its business.</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge.</td>\n</tr>\n<tr>\n<td><code>data[].buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who pays the charge, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payments</code></td>\n<td><code>array</code></td>\n<td>The payments of the charge, each with its blockchain transaction.</td>\n</tr>\n<tr>\n<td><code>data[].refunds</code></td>\n<td><code>array</code></td>\n<td>The refunds of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The charge type: 1 Point of Sale, 2 Invoice, 3 P2P.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>).</td>\n</tr>\n<tr>\n<td><code>data[].viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the caller, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the business, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].invoice</code></td>\n<td><code>object</code></td>\n<td>The invoice of the charge, with its customer. See <code>GET /api/invoices/:id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the gateway. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The gateway does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":gateway_id","invoices"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"2df8c95f-099e-48e6-bb47-dc59d1cc73fd","description":{"content":"<p>The gateway id.</p>\n","type":"text/plain"},"type":"any","value":"73","key":"gateway_id"}]}},"response":[{"id":"d87dfdaa-5ece-4f65-af08-2193932f4e07","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:gateway_id/invoices","host":["https://api.liberpay.com"],"path":["api","gateways",":gateway_id","invoices"],"variable":[{"key":"gateway_id","value":"73","description":"The gateway id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 231,\n            \"shortcode\": \"k3Hq9ZxT2mPbLwA\",\n            \"hash\": null,\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 41,\n                        \"name\": \"Vela aromática\",\n                        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n                        \"quantity\": 2,\n                        \"is_physical\": true,\n                        \"taxable\": false,\n                        \"price\": {\n                            \"amount\": \"39.90\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        }\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"79.80\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": null,\n            \"exchange_rate\": null,\n            \"expires_at\": null,\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Loja Centro USDC\",\n                \"address\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 17,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Loja Centro\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 3,\n                    \"name\": \"Velas da Ana\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 17,\n                \"username\": \"seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x2b5ad5c4795c026514f8317c7a215e218dccd6cf\"\n            },\n            \"buyer\": null,\n            \"currency\": null,\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 2,\n                \"label\": \"Invoice\"\n            },\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"created\"\n            },\n            \"inserted_at\": \"2026-10-20T14:02:11\",\n            \"updated_at\": \"2026-10-20T14:05:40\",\n            \"invoice\": {\n                \"id\": 94,\n                \"number\": 12,\n                \"title\": \"Velas para o evento\",\n                \"date\": \"2026-10-20\",\n                \"due_date\": \"2026-11-03\",\n                \"notes\": \"Pagamento por Pix ou USDC.\",\n                \"approved\": true,\n                \"customer\": {\n                    \"id\": 8,\n                    \"name\": \"Maria Souza\",\n                    \"email\": \"steve+customer@example.com\",\n                    \"address\": null,\n                    \"business_id\": 3\n                }\n            }\n        }\n    ]\n}"}],"_postman_id":"902d0761-c090-4977-844c-30f26fa2b28c"},{"name":"nextNumber","id":"8de2052a-ebdb-4e8b-912d-262fc9bfd870","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/invoice_number","description":"<p>Returns the next free invoice number for a store. The value is the highest invoice number in the store plus 1, or 1 if the store has no invoices.</p>\n<p>The API does not reserve the number. You must be the creator or a member of the business that owns the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.number</code></td>\n<td><code>integer</code></td>\n<td>The next invoice number.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the store. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","invoice_number"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"f292fca4-6616-49ac-bb20-dda5d941a726","description":{"content":"<p>The store id.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"55eeb719-b335-4ef6-9619-d0a3ec6687d6","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/invoice_number","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","invoice_number"],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"number\": 13\n    }\n}"}],"_postman_id":"8de2052a-ebdb-4e8b-912d-262fc9bfd870"},{"name":"get","id":"2e8c1188-4f46-4ef5-9a65-b6ee09694783","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/invoices/:id","description":"<p>Returns one invoice with its customer. The response has only the invoice fields. To get the price, items and payment status, read the charge with <code>GET /api/charges/:id</code>.</p>\n<p>You must be the creator or a member of the business that owns the charge.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The invoice id.</td>\n</tr>\n<tr>\n<td><code>data.number</code></td>\n<td><code>integer</code></td>\n<td>The invoice number.</td>\n</tr>\n<tr>\n<td><code>data.title</code></td>\n<td><code>string</code></td>\n<td>The invoice title.</td>\n</tr>\n<tr>\n<td><code>data.date</code></td>\n<td><code>string</code></td>\n<td>The invoice date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.due_date</code></td>\n<td><code>string</code></td>\n<td>The due date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.notes</code></td>\n<td><code>string|null</code></td>\n<td>Notes for the customer.</td>\n</tr>\n<tr>\n<td><code>data.approved</code></td>\n<td><code>boolean</code></td>\n<td>True after the merchant approves the invoice. False means draft.</td>\n</tr>\n<tr>\n<td><code>data.customer</code></td>\n<td><code>object</code></td>\n<td>The customer: <code>id</code>, <code>name</code>, <code>email</code>, <code>address</code>, <code>business_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the invoice. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The invoice does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","invoices",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"d8e9cc48-140a-4094-8c0f-07db3272ac2f","description":{"content":"<p>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"94","key":"id"}]}},"response":[{"id":"4f4910b9-c342-430c-b4e4-a6a223d6cf2f","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/invoices/:id","host":["https://api.liberpay.com"],"path":["api","invoices",":id"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 94,\n        \"number\": 12,\n        \"title\": \"Velas para o evento\",\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-03\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"approved\": true,\n        \"customer\": {\n            \"id\": 8,\n            \"name\": \"Maria Souza\",\n            \"email\": \"steve+customer@example.com\",\n            \"address\": null,\n            \"business_id\": 3\n        }\n    }\n}"}],"_postman_id":"2e8c1188-4f46-4ef5-9a65-b6ee09694783"},{"name":"update","id":"ee562160-e4e0-4bb9-bb5b-c1e5c09e12f3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"invoice\": {\n        \"title\": \"Velas para o evento de novembro\",\n        \"number\": 12,\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-10\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"customer_id\": 8\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/invoices/:id","description":"<p>Updates the fields of an invoice. Send only the fields that you want to change. You cannot change <code>approved</code> here. Use <code>approve</code>.</p>\n<p>You can update an invoice after approval. The new <code>customer_id</code> must belong to the business. To change the price or the items, update the charge.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>invoice.title</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The invoice title.</td>\n</tr>\n<tr>\n<td><code>invoice.number</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The invoice number.</td>\n</tr>\n<tr>\n<td><code>invoice.date</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The invoice date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>invoice.due_date</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The due date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>invoice.notes</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Notes for the customer.</td>\n</tr>\n<tr>\n<td><code>invoice.customer_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The customer id. The customer must belong to the business.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The invoice id.</td>\n</tr>\n<tr>\n<td><code>data.number</code></td>\n<td><code>integer</code></td>\n<td>The invoice number.</td>\n</tr>\n<tr>\n<td><code>data.title</code></td>\n<td><code>string</code></td>\n<td>The invoice title.</td>\n</tr>\n<tr>\n<td><code>data.date</code></td>\n<td><code>string</code></td>\n<td>The invoice date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.due_date</code></td>\n<td><code>string</code></td>\n<td>The due date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.notes</code></td>\n<td><code>string|null</code></td>\n<td>Notes for the customer.</td>\n</tr>\n<tr>\n<td><code>data.approved</code></td>\n<td><code>boolean</code></td>\n<td>True after the merchant approves the invoice. False means draft.</td>\n</tr>\n<tr>\n<td><code>data.customer</code></td>\n<td><code>object</code></td>\n<td>The customer: <code>id</code>, <code>name</code>, <code>email</code>, <code>address</code>, <code>business_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td><code>customer_id</code> is not a customer of the business, or a field has a bad format.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the invoice. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The invoice does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","invoices",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"756a05f1-df6c-435d-ab97-e619b4cd52d2","description":{"content":"<p>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"94","key":"id"}]}},"response":[{"id":"dc7ff949-ceb6-4ba6-9cb6-cb502ec43ea2","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"invoice\": {\n        \"title\": \"Velas para o evento de novembro\",\n        \"number\": 12,\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-10\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"customer_id\": 8\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/invoices/:id","host":["https://api.liberpay.com"],"path":["api","invoices",":id"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 94,\n        \"number\": 12,\n        \"title\": \"Velas para o evento de novembro\",\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-10\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"approved\": true,\n        \"customer\": {\n            \"id\": 8,\n            \"name\": \"Maria Souza\",\n            \"email\": \"steve+customer@example.com\",\n            \"address\": null,\n            \"business_id\": 3\n        }\n    }\n}"},{"id":"33cfd33a-b966-49ea-8503-7aef382a87ff","name":"422 Invalid customer","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"invoice\": {\n        \"title\": \"Velas para o evento de novembro\",\n        \"number\": 12,\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-10\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"customer_id\": 8\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/invoices/:id","host":["https://api.liberpay.com"],"path":["api","invoices",":id"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"customer_id\": [\n            \"is invalid\"\n        ]\n    }\n}"}],"_postman_id":"ee562160-e4e0-4bb9-bb5b-c1e5c09e12f3"},{"name":"approve","id":"a66ae4e1-40e0-402a-8103-81239aa241f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"url":"https://api.liberpay.com/api/invoices/:id/approve","description":"<p>Approves a draft invoice. The API sets <code>approved</code> to true and records an <code>approved</code> event.</p>\n<p>This call does not send the email. Call <code>send</code> after you approve. You can approve an invoice only one time.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The invoice id.</td>\n</tr>\n<tr>\n<td><code>data.number</code></td>\n<td><code>integer</code></td>\n<td>The invoice number.</td>\n</tr>\n<tr>\n<td><code>data.title</code></td>\n<td><code>string</code></td>\n<td>The invoice title.</td>\n</tr>\n<tr>\n<td><code>data.date</code></td>\n<td><code>string</code></td>\n<td>The invoice date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.due_date</code></td>\n<td><code>string</code></td>\n<td>The due date (<code>YYYY-MM-DD</code>).</td>\n</tr>\n<tr>\n<td><code>data.notes</code></td>\n<td><code>string|null</code></td>\n<td>Notes for the customer.</td>\n</tr>\n<tr>\n<td><code>data.approved</code></td>\n<td><code>boolean</code></td>\n<td>True after the merchant approves the invoice. False means draft.</td>\n</tr>\n<tr>\n<td><code>data.customer</code></td>\n<td><code>object</code></td>\n<td>The customer: <code>id</code>, <code>name</code>, <code>email</code>, <code>address</code>, <code>business_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>The invoice is already approved.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the invoice. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The invoice does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","invoices",":id","approve"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1ed22606-1c4f-412a-bef0-a4733a1a90ed","description":{"content":"<p>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"94","key":"id"}]}},"response":[{"id":"d5d04d29-7420-4614-b590-e189addcd021","name":"200 OK","originalRequest":{"method":"PUT","header":[],"url":{"raw":"https://api.liberpay.com/api/invoices/:id/approve","host":["https://api.liberpay.com"],"path":["api","invoices",":id","approve"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 94,\n        \"number\": 12,\n        \"title\": \"Velas para o evento\",\n        \"date\": \"2026-10-20\",\n        \"due_date\": \"2026-11-03\",\n        \"notes\": \"Pagamento por Pix ou USDC.\",\n        \"approved\": true,\n        \"customer\": {\n            \"id\": 8,\n            \"name\": \"Maria Souza\",\n            \"email\": \"steve+customer@example.com\",\n            \"address\": null,\n            \"business_id\": 3\n        }\n    }\n}"},{"id":"61fcf2c4-5742-49ba-bb96-965b38458e04","name":"422 Already approved","originalRequest":{"method":"PUT","header":[],"url":{"raw":"https://api.liberpay.com/api/invoices/:id/approve","host":["https://api.liberpay.com"],"path":["api","invoices",":id","approve"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"approved\": [\n            \"Invoice already approved\"\n        ]\n    }\n}"}],"_postman_id":"a66ae4e1-40e0-402a-8103-81239aa241f5"},{"name":"send","id":"f92fc3af-aaf3-4caf-af68-d81044e8a266","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"url":"https://api.liberpay.com/api/invoices/:id/send","description":"<p>Sends the invoice to the customer by email and records a <code>sent</code> event. The email has a link to the pay page and a PDF of the invoice. If the business has the email QR option on, the email also has a QR code.</p>\n<p>You can call this endpoint again to send the invoice again. Approve the invoice before you send it.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td>Always <code>ok</code> on success.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the invoice. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The invoice does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The email provider rejects the email.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","invoices",":id","send"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"5a345bac-ead1-4b7e-8c28-8380df00ca4a","description":{"content":"<p>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"94","key":"id"}]}},"response":[{"id":"7f4a2b3f-caba-4647-a553-f8ecccec31cb","name":"200 OK","originalRequest":{"method":"PUT","header":[],"url":{"raw":"https://api.liberpay.com/api/invoices/:id/send","host":["https://api.liberpay.com"],"path":["api","invoices",":id","send"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\"\n}"}],"_postman_id":"f92fc3af-aaf3-4caf-af68-d81044e8a266"},{"name":"markAs","id":"04dc10db-4b5e-4f2d-b51e-ffed21a80408","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"paid\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/invoices/:id/mark_as","description":"<p>Marks an invoice as paid when the customer pays outside Liberpay (for example, in cash). The only allowed <code>status</code> value is <code>paid</code>.</p>\n<p>The invoice must be approved, and the charge must have status 1 (created). The API sets the charge status to 3 (confirmed), records a <code>marked_paid</code> event and sends the receipt email.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>Must be <code>paid</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td>A message in the request language.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The invoice is not approved, or the charge status is not 1 (created). The message is <code>charge must be unpaid and approved</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>status</code> is missing or is not <code>paid</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The charge changed during the call, for example a payment arrived. The message is <code>failed to mark as paid</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the invoice. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The invoice does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","invoices",":id","mark_as"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"9b2ce79d-de23-4cf8-9ed9-88f137cd4b8e","description":{"content":"<p>The invoice id. This is <code>charge.invoice.id</code>, not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"94","key":"id"}]}},"response":[{"id":"92b484a2-704a-42aa-9658-36b46a5fcc48","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"paid\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/invoices/:id/mark_as","host":["https://api.liberpay.com"],"path":["api","invoices",":id","mark_as"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"message\": \"invoice marked as paid\"\n}"},{"id":"bb4863e8-63dd-4996-9e27-5f929fb86a84","name":"404 Not allowed","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"status\": \"paid\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/invoices/:id/mark_as","host":["https://api.liberpay.com"],"path":["api","invoices",":id","mark_as"],"variable":[{"key":"id","value":"94","description":"The invoice id. This is `charge.invoice.id`, not the charge id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"charge must be unpaid and approved\"\n}"}],"_postman_id":"04dc10db-4b5e-4f2d-b51e-ffed21a80408"}],"id":"4d8cb7bb-8797-44d3-937c-65219bf2c4d5","description":"<p>An invoice is a charge with <code>charge_type_id</code> 2. To create one, call <code>POST /api/charges</code> with <code>charge_type_id: 2</code> and an <code>invoice</code> object (<code>title</code>, <code>number</code>, <code>date</code>, <code>due_date</code>, <code>customer_id</code>, and optional <code>notes</code> and <code>approved</code>). The API creates the charge and its invoice in one transaction. The customer must belong to the business of the store.</p>\n<p>The charge holds the price, items, gateway and payment status. The invoice holds the number, title, dates, notes, customer and approval. The list endpoints return charges with a nested <code>invoice</code> object. The other endpoints here use the invoice id (<code>charge.invoice.id</code>), not the charge id.</p>\n<p>Flow: a new invoice is a draft (<code>approved: false</code>). Approve it, then send it to the customer by email. The customer pays on the pay page. If the customer pays outside Liberpay, mark the invoice as paid. If you create the charge with <code>invoice.approved: true</code>, the API sends the email at once.</p>\n","_postman_id":"4d8cb7bb-8797-44d3-937c-65219bf2c4d5","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"products","item":[{"name":"list","id":"e7b38c92-49fd-4805-b6c7-dfd63e5953b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/products","description":"<p>Returns the published products of a store, sorted by name. This is the public list for a storefront. Anyone can call it.</p>\n<p>The items do not include the <code>stores</code> key. Draft products are not in the list.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data[].description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data[].sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data[].price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data[].price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data[].is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data[].taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data[].status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data[].status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data[].user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data[].business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data[].images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data[].images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The store does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","products"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"6496c3fd-b5b4-4a17-bb3e-ec6f4fac7f64","description":{"content":"<p>The store id.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"18180da2-416d-489a-9a0f-b378c842f000","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/products","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","products"],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 41,\n            \"name\": \"Vela aromática\",\n            \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n            \"sku\": \"VELA-001\",\n            \"price\": {\n                \"currency\": \"BRL\",\n                \"amount\": \"39.90\"\n            },\n            \"is_physical\": true,\n            \"taxable\": false,\n            \"status\": {\n                \"id\": 2,\n                \"label\": \"Published\"\n            },\n            \"user_id\": 17,\n            \"business_id\": 3,\n            \"images\": [\n                {\n                    \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                    \"sort\": 1\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"e7b38c92-49fd-4805-b6c7-dfd63e5953b0"},{"name":"listAll","id":"f753dc4e-3a4a-483a-889f-db3bf7af9256","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/all_products","description":"<p>Returns all products of a store in all statuses, sorted by name. Use it to manage the catalog of a store.</p>\n<p>You must be the creator or a member of the business that owns the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data[].description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data[].sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data[].price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data[].price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data[].is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data[].taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data[].status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data[].status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data[].user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data[].business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data[].images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data[].images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n<tr>\n<td><code>data[].stores[]</code></td>\n<td><code>array</code></td>\n<td>The stores that show the product. Each item has <code>id</code> and <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the store. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","all_products"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"afff7f0d-ba32-40ae-9458-2f58fcafbabb","description":{"content":"<p>The store id.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"fba4d47a-7d47-4ba2-af78-4a2e6c0ca07e","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/all_products","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","all_products"],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 41,\n            \"name\": \"Vela aromática\",\n            \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n            \"sku\": \"VELA-001\",\n            \"price\": {\n                \"currency\": \"BRL\",\n                \"amount\": \"39.90\"\n            },\n            \"is_physical\": true,\n            \"taxable\": false,\n            \"status\": {\n                \"id\": 2,\n                \"label\": \"Published\"\n            },\n            \"user_id\": 17,\n            \"business_id\": 3,\n            \"images\": [\n                {\n                    \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                    \"sort\": 1\n                }\n            ],\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Loja Centro\"\n                }\n            ]\n        },\n        {\n            \"id\": 42,\n            \"name\": \"Kit de velas\",\n            \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n            \"sku\": \"VELA-KIT\",\n            \"price\": {\n                \"currency\": \"BRL\",\n                \"amount\": \"99.00\"\n            },\n            \"is_physical\": true,\n            \"taxable\": false,\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"Draft\"\n            },\n            \"user_id\": 17,\n            \"business_id\": 3,\n            \"images\": [\n                {\n                    \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                    \"sort\": 1\n                }\n            ],\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Loja Centro\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"0c34f96a-0b2a-4ea0-8a88-1e3ad7ca9b33","name":"404 Not a member","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/all_products","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","all_products"],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"f753dc4e-3a4a-483a-889f-db3bf7af9256"},{"name":"listBusiness","id":"2f58e0ee-5a81-4239-8f48-ec7d38db2348","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/products","description":"<p>Returns all products of a business in all statuses. The list includes products that are not linked to a store. The order is not fixed.</p>\n<p>You must be the creator or a member of the business.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data[].description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data[].sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data[].price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data[].price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data[].is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data[].taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data[].status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data[].status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data[].user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data[].business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data[].images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data[].images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n<tr>\n<td><code>data[].stores[]</code></td>\n<td><code>array</code></td>\n<td>The stores that show the product. Each item has <code>id</code> and <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","products"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"826cb70c-7962-42d4-9daf-f7d7ce13657c","description":{"content":"<p>The business id.</p>\n","type":"text/plain"},"type":"any","value":"3","key":"business_id"}]}},"response":[{"id":"6f08d720-7fe1-40c8-84f1-450c71b1931a","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/products","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","products"],"variable":[{"key":"business_id","value":"3","description":"The business id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 41,\n            \"name\": \"Vela aromática\",\n            \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n            \"sku\": \"VELA-001\",\n            \"price\": {\n                \"currency\": \"BRL\",\n                \"amount\": \"39.90\"\n            },\n            \"is_physical\": true,\n            \"taxable\": false,\n            \"status\": {\n                \"id\": 2,\n                \"label\": \"Published\"\n            },\n            \"user_id\": 17,\n            \"business_id\": 3,\n            \"images\": [\n                {\n                    \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                    \"sort\": 1\n                }\n            ],\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Loja Centro\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"2f58e0ee-5a81-4239-8f48-ec7d38db2348"},{"name":"get","id":"4e187c11-8f42-4b18-85ba-ce29c7d01f48","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/products/:id","description":"<p>Returns one product with its images, status and stores. Anyone can call it.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The product id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data.description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data.sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data.price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data.price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data.is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data.taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data.status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data.status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data.user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data.images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data.images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n<tr>\n<td><code>data.stores[]</code></td>\n<td><code>array</code></td>\n<td>The stores that show the product. Each item has <code>id</code> and <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The product does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","products",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"784c145a-e9ba-4765-ad22-78c2039757bb","description":{"content":"<p>The product id.</p>\n","type":"text/plain"},"type":"any","value":"41","key":"id"}]}},"response":[{"id":"e731a64f-53fb-4fb1-8cb3-3d2070b74398","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/products/:id","host":["https://api.liberpay.com"],"path":["api","products",":id"],"variable":[{"key":"id","value":"41","description":"The product id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 41,\n        \"name\": \"Vela aromática\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"currency\": \"BRL\",\n            \"amount\": \"39.90\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"status\": {\n            \"id\": 2,\n            \"label\": \"Published\"\n        },\n        \"user_id\": 17,\n        \"business_id\": 3,\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ],\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Loja Centro\"\n            }\n        ]\n    }\n}"}],"_postman_id":"4e187c11-8f42-4b18-85ba-ce29c7d01f48"},{"name":"create","id":"d9f819b0-f844-46b2-89c1-14dee297bb80","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"product\": {\n        \"business_id\": 3,\n        \"name\": \"Vela aromática\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"value\": \"39.90\",\n            \"currency\": \"BRL\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"product_status_id\": 2,\n        \"stores\": [\n            5\n        ],\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/products","description":"<p>Creates a product for a business and links it to stores. You must be the creator or a member of the business in <code>product.business_id</code>.</p>\n<p>To add images, first upload each file with <code>POST /api/products/images</code>. Then put the returned <code>url</code> values in <code>product.images</code>. The response has a <code>Location</code> header with the product URL.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>product.business_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The id of the business that owns the product. You must be its creator or a member.</td>\n</tr>\n<tr>\n<td><code>product.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The product name. 1 to 255 characters.</td>\n</tr>\n<tr>\n<td><code>product.description</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The product description. It cannot be empty.</td>\n</tr>\n<tr>\n<td><code>product.price.value</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>product.price.currency</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The ISO 4217 currency code, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>product.is_physical</code></td>\n<td><code>boolean</code></td>\n<td>yes</td>\n<td>Set to true for a physical item.</td>\n</tr>\n<tr>\n<td><code>product.product_status_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The status. Use 1 for Draft or 2 for Published.</td>\n</tr>\n<tr>\n<td><code>product.taxable</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Set to true if tax applies. The default is false.</td>\n</tr>\n<tr>\n<td><code>product.sku</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The SKU. 1 to 255 characters. It must be unique in the business.</td>\n</tr>\n<tr>\n<td><code>product.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The ids of the stores that show the product, as integers. The API ignores the ids of stores that you cannot manage.</td>\n</tr>\n<tr>\n<td><code>product.images</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The images. Each item has <code>url</code> (from <code>POST /api/products/images</code>) and <code>sort</code> (integer). Each URL must be unique.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data.description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data.sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data.price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data.price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data.is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data.taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data.status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data.status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data.user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data.images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data.images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n<tr>\n<td><code>data.stores[]</code></td>\n<td><code>array</code></td>\n<td>The stores that show the product. Each item has <code>id</code> and <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>A field is missing or not valid, or the SKU is already in use in the business. The body is <code>{\"status\":\"error\",\"type\":\"product\",\"errors\":{...}}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business in <code>product.business_id</code>. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","products"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"70cf0432-3cb6-439d-a552-7111e3a12248","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"product\": {\n        \"business_id\": 3,\n        \"name\": \"Vela aromática\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"value\": \"39.90\",\n            \"currency\": \"BRL\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"product_status_id\": 2,\n        \"stores\": [\n            5\n        ],\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/products"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 41,\n        \"name\": \"Vela aromática\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"currency\": \"BRL\",\n            \"amount\": \"39.90\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"status\": {\n            \"id\": 2,\n            \"label\": \"Published\"\n        },\n        \"user_id\": 17,\n        \"business_id\": 3,\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ],\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Loja Centro\"\n            }\n        ]\n    }\n}"},{"id":"b8b7f3a7-0b98-40fb-a66f-1e598b3b311c","name":"422 SKU in use","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"product\": {\n        \"business_id\": 3,\n        \"name\": \"Vela aromática\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"value\": \"39.90\",\n            \"currency\": \"BRL\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"product_status_id\": 2,\n        \"stores\": [\n            5\n        ],\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/products"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"type\": \"product\",\n    \"errors\": {\n        \"sku\": [\n            \"SKU must be unique per business\"\n        ]\n    }\n}"}],"_postman_id":"d9f819b0-f844-46b2-89c1-14dee297bb80"},{"name":"update","id":"47584aa8-dcf2-4ad3-8f41-653ffe9aba38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"product\": {\n        \"name\": \"Vela aromática grande\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda, 300 g.\",\n        \"price\": {\n            \"value\": \"49.90\",\n            \"currency\": \"BRL\"\n        },\n        \"is_physical\": true,\n        \"product_status_id\": 2,\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/products/:id","description":"<p>Updates a product. You must be the creator or a member of the business that owns the product. You cannot change <code>business_id</code>.</p>\n<p>Always send <code>product.stores</code> with the full list of store ids. If you omit it, the API removes the product from all stores. If you send <code>product.images</code>, the list replaces all current images.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The product id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>product.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The product name. 1 to 255 characters.</td>\n</tr>\n<tr>\n<td><code>product.description</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The product description. It cannot be empty.</td>\n</tr>\n<tr>\n<td><code>product.price.value</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>. If you send <code>price</code>, send both <code>value</code> and <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>product.price.currency</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The ISO 4217 currency code, for example <code>BRL</code>. If you send <code>price</code>, send both <code>value</code> and <code>currency</code>.</td>\n</tr>\n<tr>\n<td><code>product.is_physical</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Set to true for a physical item.</td>\n</tr>\n<tr>\n<td><code>product.product_status_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The status. Use 1 for Draft or 2 for Published.</td>\n</tr>\n<tr>\n<td><code>product.taxable</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Set to true if tax applies. The default is false.</td>\n</tr>\n<tr>\n<td><code>product.sku</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The SKU. 1 to 255 characters. It must be unique in the business.</td>\n</tr>\n<tr>\n<td><code>product.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The ids of the stores that show the product. Always send the full list. If you omit it, the API removes the product from all stores.</td>\n</tr>\n<tr>\n<td><code>product.images</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The images. If you send a list, it replaces all current images. If you omit it or send null, the API keeps the current images.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The product id.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The product name.</td>\n</tr>\n<tr>\n<td><code>data.description</code></td>\n<td><code>string</code></td>\n<td>The product description.</td>\n</tr>\n<tr>\n<td><code>data.sku</code></td>\n<td><code>string|null</code></td>\n<td>The stock keeping unit (SKU). It is unique in the business.</td>\n</tr>\n<tr>\n<td><code>data.price.amount</code></td>\n<td><code>string</code></td>\n<td>The price as a decimal string in the major unit, for example <code>\"39.90\"</code>.</td>\n</tr>\n<tr>\n<td><code>data.price.currency</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code of the price currency, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>data.is_physical</code></td>\n<td><code>boolean</code></td>\n<td>True if the product is a physical item.</td>\n</tr>\n<tr>\n<td><code>data.taxable</code></td>\n<td><code>boolean</code></td>\n<td>True if tax applies to the product.</td>\n</tr>\n<tr>\n<td><code>data.status.id</code></td>\n<td><code>integer</code></td>\n<td>The product status id. 1 is Draft. 2 is Published.</td>\n</tr>\n<tr>\n<td><code>data.status.label</code></td>\n<td><code>string</code></td>\n<td>The product status label.</td>\n</tr>\n<tr>\n<td><code>data.user_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the user who created the product.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The id of the business that owns the product.</td>\n</tr>\n<tr>\n<td><code>data.images[].url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the image.</td>\n</tr>\n<tr>\n<td><code>data.images[].sort</code></td>\n<td><code>integer</code></td>\n<td>The display order of the image.</td>\n</tr>\n<tr>\n<td><code>data.stores[]</code></td>\n<td><code>array</code></td>\n<td>The stores that show the product. Each item has <code>id</code> and <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>A field is not valid, or the SKU is already in use in the business. The body is <code>{\"status\":\"error\",\"errors\":{...}}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the product. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The product does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","products",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"360e800e-e43e-4ead-9eef-a75bd50a6057","description":{"content":"<p>The product id.</p>\n","type":"text/plain"},"type":"any","value":"41","key":"id"}]}},"response":[{"id":"b6669649-bec4-4d5a-ba24-99d605d8ddbb","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"product\": {\n        \"name\": \"Vela aromática grande\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda, 300 g.\",\n        \"price\": {\n            \"value\": \"49.90\",\n            \"currency\": \"BRL\"\n        },\n        \"is_physical\": true,\n        \"product_status_id\": 2,\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/products/:id","host":["https://api.liberpay.com"],"path":["api","products",":id"],"variable":[{"key":"id","value":"41","description":"The product id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 41,\n        \"name\": \"Vela aromática grande\",\n        \"description\": \"Vela de cera de soja com aroma de lavanda, 300 g.\",\n        \"sku\": \"VELA-001\",\n        \"price\": {\n            \"currency\": \"BRL\",\n            \"amount\": \"49.90\"\n        },\n        \"is_physical\": true,\n        \"taxable\": false,\n        \"status\": {\n            \"id\": 2,\n            \"label\": \"Published\"\n        },\n        \"user_id\": 17,\n        \"business_id\": 3,\n        \"images\": [\n            {\n                \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n                \"sort\": 1\n            }\n        ],\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Loja Centro\"\n            }\n        ]\n    }\n}"}],"_postman_id":"47584aa8-dcf2-4ad3-8f41-653ffe9aba38"},{"name":"delete","id":"87ed9e99-b5bd-4d66-963c-0504a7a9b4d3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/products/:id","description":"<p>Deletes a product, its images and its store links. You must be the creator or a member of the business that owns the product.</p>\n<p>Charges that used the product keep their own copy of the item in <code>metadata</code>. The response has no body.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The product id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the product. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The product does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","products",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"774f7975-f139-4bfe-83d5-a435096b23be","description":{"content":"<p>The product id.</p>\n","type":"text/plain"},"type":"any","value":"41","key":"id"}]}},"response":[{"id":"11013fa0-0625-469e-85ff-2a043ffd6229","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/products/:id","host":["https://api.liberpay.com"],"path":["api","products",":id"],"variable":[{"key":"id","value":"41","description":"The product id."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"87ed9e99-b5bd-4d66-963c-0504a7a9b4d3"},{"name":"updateBulk","id":"146a7e0e-c11f-4742-97e7-2757a62125cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"products\": [\n        {\n            \"id\": 41\n        },\n        {\n            \"id\": 42\n        }\n    ],\n    \"params\": {\n        \"product_status_id\": 2\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/update_products","description":"<p>Changes the status of many products in one call. Use it to publish or unpublish a selection. The API applies only <code>params.product_status_id</code> and ignores other keys in <code>params</code>.</p>\n<p>The API skips products that are not in your businesses. If no product is left, the API returns 404. All updates run in one transaction.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>products</code></td>\n<td><code>array</code></td>\n<td>yes</td>\n<td>The products to change. Each item is an object with <code>id</code>.</td>\n</tr>\n<tr>\n<td><code>params.product_status_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The new status. Use 1 for Draft or 2 for Published.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td>Always <code>ok</code> on success.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>None of the products is in your businesses. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The <code>params</code> key is missing.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","update_products"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"d6d3cb36-80a8-457b-bbb2-85985ff54984","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"products\": [\n        {\n            \"id\": 41\n        },\n        {\n            \"id\": 42\n        }\n    ],\n    \"params\": {\n        \"product_status_id\": 2\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/update_products"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\"\n}"}],"_postman_id":"146a7e0e-c11f-4742-97e7-2757a62125cf"},{"name":"deleteBulk","id":"77ad64ed-2464-4bee-afbd-88df7f578aa9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"products\": [\n        {\n            \"id\": 41\n        },\n        {\n            \"id\": 42\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/delete_products","description":"<p>Deletes many products in one call. The API skips products that are not in your businesses. If no product is left, the API returns 404. The response has no body.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>products</code></td>\n<td><code>array</code></td>\n<td>yes</td>\n<td>The products to delete. Each item is an object with <code>id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>None of the products is in your businesses. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","delete_products"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"9288ccb1-41a3-4304-b7b4-53695dfb0add","name":"204 No Content","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"products\": [\n        {\n            \"id\": 41\n        },\n        {\n            \"id\": 42\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/delete_products"},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"77ad64ed-2464-4bee-afbd-88df7f578aa9"},{"name":"uploadImage","id":"3aa7bcd4-87a5-4b5a-952e-d46ef340fef4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","description":"<p>The image file.</p>\n","value":null}]},"url":"https://api.liberpay.com/api/products/images","description":"<p>Uploads one image file to public storage. The response gives the public <code>url</code> of the file. Put this <code>url</code> in <code>product.images</code> when you create or update a product.</p>\n<p>This call does not link the image to a product. Send the file as <code>multipart/form-data</code> in the <code>image</code> field. The maximum request size is 8 MB.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.key</code></td>\n<td><code>string</code></td>\n<td>The storage key of the file (a UUID).</td>\n</tr>\n<tr>\n<td><code>data.url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the file. Use it in <code>product.images[].url</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>The <code>image</code> field is missing.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","products","images"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"71960ad2-fdaa-4aab-8475-e14367cd3a31","name":"201 Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","description":"The image file.","src":[]}]},"url":"https://api.liberpay.com/api/products/images"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"key\": \"0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\",\n        \"url\": \"https://example-product-images.s3-sa-east-1.amazonaws.com/0b6f1c2e-3d4a-4f5b-8c9d-1e2f3a4b5c6d\"\n    }\n}"}],"_postman_id":"3aa7bcd4-87a5-4b5a-952e-d46ef340fef4"}],"id":"ef069c4c-79bf-4dff-a14e-0c84d061f547","description":"<p>A product is an item that a business sells. You create a product at the business level. Then you link it to one or more stores of that business. A product has a status: 1 is Draft and 2 is Published. Only published products show on the public store list. Get all status values from <code>GET /api/product_statuses</code>. Prices use a decimal string and an ISO currency code.</p>\n","_postman_id":"ef069c4c-79bf-4dff-a14e-0c84d061f547","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"stores","item":[{"name":"list","id":"16288b89-d86a-438f-baa0-02d5d5d5bddf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores","description":"<p>Lists all stores of all businesses that the signed-in user created or is a member of. Each store includes its business and its linked gateways.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The store name.</td>\n</tr>\n<tr>\n<td><code>data[].logo</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the store logo.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>object|null</code></td>\n<td>The store address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data[].tax_rate</code></td>\n<td><code>string</code></td>\n<td>The tax rate in percent, as a decimal string. <code>5.00000</code> is 5%.</td>\n</tr>\n<tr>\n<td><code>data[].settings.quick_pay</code></td>\n<td><code>object</code></td>\n<td>The quick pay settings: <code>enabled</code>, <code>show_products</code>, <code>product_ids</code>.</td>\n</tr>\n<tr>\n<td><code>data[].business</code></td>\n<td><code>object</code></td>\n<td>The business of the store: <code>id</code>, <code>name</code>.</td>\n</tr>\n<tr>\n<td><code>data[].gateways</code></td>\n<td><code>array</code></td>\n<td>The gateways linked to the store, with type, version and license state.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"6c2ee491-7531-48c3-a9e1-b267f9e3b784","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 31,\n            \"name\": \"Loja Centro\",\n            \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n            \"address\": {\n                \"street1\": \"Rua das Flores, 120\",\n                \"street2\": \"Sala 4\",\n                \"city\": \"São Paulo\",\n                \"region\": \"SP\",\n                \"code\": \"01310-100\",\n                \"country\": \"BR\"\n            },\n            \"phone\": \"+55 11 5555-0123\",\n            \"email\": \"steve+store@example.com\",\n            \"tax_rate\": \"5.00000\",\n            \"settings\": {\n                \"quick_pay\": {\n                    \"enabled\": true,\n                    \"show_products\": true,\n                    \"product_ids\": []\n                }\n            },\n            \"business\": {\n                \"id\": 12,\n                \"name\": \"Café Aurora\"\n            },\n            \"gateways\": [\n                {\n                    \"id\": 73,\n                    \"name\": \"Café Aurora Polygon\",\n                    \"address\": \"0x5a1f0c3e9b7d2a4c6e8f1b3d5a7c9e0f2b4d6a8c\",\n                    \"licensed\": true,\n                    \"license_status\": \"valid\",\n                    \"creator_id\": 7,\n                    \"is_system\": false,\n                    \"version\": {\n                        \"identifier\": \"polygon-v1\",\n                        \"number\": 1\n                    },\n                    \"type\": {\n                        \"id\": 1,\n                        \"identifier\": \"polygon\",\n                        \"label\": \"Polygon\",\n                        \"platform\": {\n                            \"id\": 1,\n                            \"identifier\": \"evm\",\n                            \"label\": \"Ethereum Virtual Machine\"\n                        }\n                    },\n                    \"config\": {\n                        \"configured\": false\n                    }\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"16288b89-d86a-438f-baa0-02d5d5d5bddf"},{"name":"listBusiness","id":"75c44623-4dd5-4221-8988-0fa01e8bf6c1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/stores","description":"<p>Lists the stores of one business. The list is empty when the business does not exist or the caller is not the creator or a member.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The stores. The fields are the same as in <code>list</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","stores"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"5f90ef2f-78cc-4a09-9db7-2cee21dcef73","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"18f37698-003e-43e0-80ec-0b85fd66bbe2","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/stores","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","stores"],"variable":[{"key":"business_id","value":"12","description":"The business ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 31,\n            \"name\": \"Loja Centro\",\n            \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n            \"address\": {\n                \"street1\": \"Rua das Flores, 120\",\n                \"street2\": \"Sala 4\",\n                \"city\": \"São Paulo\",\n                \"region\": \"SP\",\n                \"code\": \"01310-100\",\n                \"country\": \"BR\"\n            },\n            \"phone\": \"+55 11 5555-0123\",\n            \"email\": \"steve+store@example.com\",\n            \"tax_rate\": \"5.00000\",\n            \"settings\": {\n                \"quick_pay\": {\n                    \"enabled\": true,\n                    \"show_products\": true,\n                    \"product_ids\": []\n                }\n            },\n            \"business\": {\n                \"id\": 12,\n                \"name\": \"Café Aurora\"\n            },\n            \"gateways\": [\n                {\n                    \"id\": 73,\n                    \"name\": \"Café Aurora Polygon\",\n                    \"address\": \"0x5a1f0c3e9b7d2a4c6e8f1b3d5a7c9e0f2b4d6a8c\",\n                    \"licensed\": true,\n                    \"license_status\": \"valid\",\n                    \"creator_id\": 7,\n                    \"is_system\": false,\n                    \"version\": {\n                        \"identifier\": \"polygon-v1\",\n                        \"number\": 1\n                    },\n                    \"type\": {\n                        \"id\": 1,\n                        \"identifier\": \"polygon\",\n                        \"label\": \"Polygon\",\n                        \"platform\": {\n                            \"id\": 1,\n                            \"identifier\": \"evm\",\n                            \"label\": \"Ethereum Virtual Machine\"\n                        }\n                    },\n                    \"config\": {\n                        \"configured\": false\n                    }\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"75c44623-4dd5-4221-8988-0fa01e8bf6c1"},{"name":"get","id":"1ec896ec-bd58-465a-8ba3-7eb0cc083f6c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:id","description":"<p>Gets one store. This endpoint is public: the pay page and the quick pay page use it. No token is necessary.</p>\n<p>The response is the store object itself, not wrapped in <code>data</code>. It includes the business, the linked gateways and the fiat currencies that the business accepts (country default first).</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>integer</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>The store name.</td>\n</tr>\n<tr>\n<td><code>logo</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the store logo.</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td><code>object|null</code></td>\n<td>The store address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>tax_rate</code></td>\n<td><code>string</code></td>\n<td>The tax rate in percent, as a decimal string. <code>5.00000</code> is 5%.</td>\n</tr>\n<tr>\n<td><code>settings.quick_pay</code></td>\n<td><code>object</code></td>\n<td>The quick pay settings: <code>enabled</code>, <code>show_products</code>, <code>product_ids</code>.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td><code>string|null</code></td>\n<td>The store phone number.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td><code>string|null</code></td>\n<td>The store email.</td>\n</tr>\n<tr>\n<td><code>business</code></td>\n<td><code>object</code></td>\n<td>The business of the store: <code>id</code>, <code>name</code>.</td>\n</tr>\n<tr>\n<td><code>gateways</code></td>\n<td><code>array</code></td>\n<td>The gateways linked to the store.</td>\n</tr>\n<tr>\n<td><code>fiat_currencies</code></td>\n<td><code>array</code></td>\n<td>The fiat currencies that the business accepts, country default first.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The store does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"293061cc-3b58-4e3d-bb04-353987376070","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"7ef4ea63-42cb-4cff-a905-76d42fd7174a","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id","host":["https://api.liberpay.com"],"path":["api","stores",":id"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 31,\n    \"name\": \"Loja Centro\",\n    \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n    \"address\": {\n        \"street1\": \"Rua das Flores, 120\",\n        \"street2\": \"Sala 4\",\n        \"city\": \"São Paulo\",\n        \"region\": \"SP\",\n        \"code\": \"01310-100\",\n        \"country\": \"BR\"\n    },\n    \"phone\": \"+55 11 5555-0123\",\n    \"email\": \"steve+store@example.com\",\n    \"tax_rate\": \"5.00000\",\n    \"settings\": {\n        \"quick_pay\": {\n            \"enabled\": true,\n            \"show_products\": true,\n            \"product_ids\": []\n        }\n    },\n    \"business\": {\n        \"id\": 12,\n        \"name\": \"Café Aurora\"\n    },\n    \"gateways\": [\n        {\n            \"id\": 73,\n            \"name\": \"Café Aurora Polygon\",\n            \"address\": \"0x5a1f0c3e9b7d2a4c6e8f1b3d5a7c9e0f2b4d6a8c\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 7,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            }\n        }\n    ],\n    \"fiat_currencies\": [\n        {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        {\n            \"id\": 1,\n            \"name\": \"US Dollar\",\n            \"symbol\": \"USD\",\n            \"sign\": \"$\"\n        }\n    ]\n}"},{"id":"5fb984b3-9336-4c4c-bcd6-b7953706b22e","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id","host":["https://api.liberpay.com"],"path":["api","stores",":id"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": {\n        \"detail\": \"Not Found\"\n    }\n}"}],"_postman_id":"1ec896ec-bd58-465a-8ba3-7eb0cc083f6c"},{"name":"create","id":"55a95423-92e0-4364-b29a-ba2ca96a06f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"store\": {\n        \"business_id\": 12,\n        \"name\": \"Loja Centro\",\n        \"email\": \"steve+store@example.com\",\n        \"phone\": \"+55 11 5555-0123\",\n        \"tax_rate\": 5,\n        \"address\": {\n            \"street1\": \"Rua das Flores, 120\",\n            \"street2\": \"Sala 4\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-100\",\n            \"country\": \"BR\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores","description":"<p>Creates a store in a business. The caller must be the creator or a member of the business in <code>store.business_id</code>.</p>\n<p>The new store has no gateways. Link a gateway to the store before it can take payments.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store.business_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The ID of the business that owns the store.</td>\n</tr>\n<tr>\n<td><code>store.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The store name.</td>\n</tr>\n<tr>\n<td><code>store.logo</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The logo URL. Get a URL from <code>uploadImage</code>.</td>\n</tr>\n<tr>\n<td><code>store.address</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>The address. Allowed keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>. Other keys give an error.</td>\n</tr>\n<tr>\n<td><code>store.phone</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The phone number.</td>\n</tr>\n<tr>\n<td><code>store.email</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The email. It must be a valid email address.</td>\n</tr>\n<tr>\n<td><code>store.tax_rate</code></td>\n<td><code>number</code></td>\n<td>no</td>\n<td>The tax rate in percent. Send <code>5</code> for 5%. The default is 0.</td>\n</tr>\n<tr>\n<td><code>store.settings.quick_pay</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Quick pay settings: <code>enabled</code> (boolean), <code>show_products</code> (boolean, default true), <code>product_ids</code> (array of product IDs; empty means all published products).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The store name.</td>\n</tr>\n<tr>\n<td><code>data.logo</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the store logo.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object|null</code></td>\n<td>The store address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data.tax_rate</code></td>\n<td><code>string</code></td>\n<td>The tax rate in percent, as a decimal string. <code>5.00000</code> is 5%.</td>\n</tr>\n<tr>\n<td><code>data.settings.quick_pay</code></td>\n<td><code>object</code></td>\n<td>The quick pay settings: <code>enabled</code>, <code>show_products</code>, <code>product_ids</code>.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>store</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not the creator or a member.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid, for example a missing <code>name</code> or <code>business_id</code>, a bad email, or an address key that is not allowed.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"78b4c7ba-748d-402c-957b-2df34852dcb6","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"store\": {\n        \"business_id\": 12,\n        \"name\": \"Loja Centro\",\n        \"email\": \"steve+store@example.com\",\n        \"phone\": \"+55 11 5555-0123\",\n        \"tax_rate\": 5,\n        \"address\": {\n            \"street1\": \"Rua das Flores, 120\",\n            \"street2\": \"Sala 4\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-100\",\n            \"country\": \"BR\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 31,\n        \"name\": \"Loja Centro\",\n        \"logo\": null,\n        \"address\": {\n            \"street1\": \"Rua das Flores, 120\",\n            \"street2\": \"Sala 4\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-100\",\n            \"country\": \"BR\"\n        },\n        \"phone\": \"+55 11 5555-0123\",\n        \"email\": \"steve+store@example.com\",\n        \"tax_rate\": \"5\",\n        \"settings\": {\n            \"quick_pay\": {\n                \"enabled\": false,\n                \"show_products\": true,\n                \"product_ids\": []\n            }\n        },\n        \"business_id\": 12\n    }\n}"}],"_postman_id":"55a95423-92e0-4364-b29a-ba2ca96a06f8"},{"name":"update","id":"e9468d4b-6950-401a-9a35-86524cd84107","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"store\": {\n        \"name\": \"Loja Centro\",\n        \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n        \"settings\": {\n            \"quick_pay\": {\n                \"enabled\": true,\n                \"show_products\": true,\n                \"product_ids\": [\n                    101,\n                    102\n                ]\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores/:id","description":"<p>Updates a store. The caller must be the creator or a member of the business of the store. You cannot update a system (P2P) store. <code>PATCH</code> does the same as <code>PUT</code>.</p>\n<p>The fields are the same as in <code>create</code>. When you send <code>settings</code>, the value replaces all store settings. When you send <code>business_id</code>, the caller must also be a member of that business.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The store name. It must not be empty.</td>\n</tr>\n<tr>\n<td><code>store.logo</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The logo URL.</td>\n</tr>\n<tr>\n<td><code>store.address</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>The address. Allowed keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>store.phone</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The phone number.</td>\n</tr>\n<tr>\n<td><code>store.email</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The email.</td>\n</tr>\n<tr>\n<td><code>store.tax_rate</code></td>\n<td><code>number</code></td>\n<td>no</td>\n<td>The tax rate in percent.</td>\n</tr>\n<tr>\n<td><code>store.settings</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>All store settings. Today only <code>quick_pay</code> is used.</td>\n</tr>\n<tr>\n<td><code>store.business_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Moves the store to another business of the caller.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The updated store, with <code>business</code> and <code>gateways</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>store</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, the store is a system store, or the caller is not a member of the new <code>business_id</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"77820723-fe95-4af9-92dc-8b3fda419404","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"d23e645e-7113-442d-834e-ab29a4116519","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"store\": {\n        \"name\": \"Loja Centro\",\n        \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n        \"settings\": {\n            \"quick_pay\": {\n                \"enabled\": true,\n                \"show_products\": true,\n                \"product_ids\": [\n                    101,\n                    102\n                ]\n            }\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id","host":["https://api.liberpay.com"],"path":["api","stores",":id"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 31,\n        \"name\": \"Loja Centro\",\n        \"logo\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n        \"address\": {\n            \"street1\": \"Rua das Flores, 120\",\n            \"street2\": \"Sala 4\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-100\",\n            \"country\": \"BR\"\n        },\n        \"phone\": \"+55 11 5555-0123\",\n        \"email\": \"steve+store@example.com\",\n        \"tax_rate\": \"5.00000\",\n        \"settings\": {\n            \"quick_pay\": {\n                \"enabled\": true,\n                \"show_products\": true,\n                \"product_ids\": [\n                    101,\n                    102\n                ]\n            }\n        },\n        \"business\": {\n            \"id\": 12,\n            \"name\": \"Café Aurora\"\n        },\n        \"gateways\": [\n            {\n                \"id\": 73,\n                \"name\": \"Café Aurora Polygon\",\n                \"address\": \"0x5a1f0c3e9b7d2a4c6e8f1b3d5a7c9e0f2b4d6a8c\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 7,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"e9468d4b-6950-401a-9a35-86524cd84107"},{"name":"delete","id":"a6bd528a-a3ef-494e-b042-495e5790e89e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/stores/:id","description":"<p>Deletes a store. The caller must be the creator or a member of the business of the store. You cannot delete a system (P2P) store. The API also deletes the saved carts of the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, or the store is a system store.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"284d905a-5904-464a-a0c8-ebd2ae828505","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"2b3819ff-fcaf-4e52-a3e9-1d3178ee3fc6","name":"204 No content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id","host":["https://api.liberpay.com"],"path":["api","stores",":id"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"a6bd528a-a3ef-494e-b042-495e5790e89e"},{"name":"uploadImage","id":"0cc66099-08bc-4ff9-a4e3-8a39a0ba969a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","description":"<p>The image file.</p>\n","value":null}]},"url":"https://api.liberpay.com/api/stores/:id/images","description":"<p>Uploads an image file (for example a store logo) to public storage. The response gives the key and the public URL.</p>\n<p>This call does not change the store. To set the logo, send the URL in <code>store.logo</code> with <code>update</code>. The caller must be the creator or a member of the business of the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>image</code></td>\n<td><code>file</code></td>\n<td>yes</td>\n<td>The image file.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.key</code></td>\n<td><code>string</code></td>\n<td>The storage key of the file (a UUID).</td>\n</tr>\n<tr>\n<td><code>data.url</code></td>\n<td><code>string</code></td>\n<td>The public URL of the file.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The form has no <code>image</code> file.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, or the store is a system store.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","images"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"9f8f4ec6-0e26-4d1c-bef3-45cb2cc32311","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"0925bde5-0ac1-447b-a87e-c82d613be517","name":"201 Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"image","type":"file","description":"The image file.","src":[]}]},"url":{"raw":"https://api.liberpay.com/api/stores/:id/images","host":["https://api.liberpay.com"],"path":["api","stores",":id","images"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"key\": \"0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\",\n        \"url\": \"https://example-public-bucket.s3-sa-east-1.amazonaws.com/0b6c7e52-3f1d-4a8e-9c2b-5d7f8a1e4c39\"\n    }\n}"}],"_postman_id":"0cc66099-08bc-4ff9-a4e3-8a39a0ba969a"},{"name":"pay","id":"eec3af80-bd3d-4e93-a382-fe7fc0c3edcf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 2\n            }\n        ],\n        \"custom\": {\n            \"memo\": \"Gorjeta\",\n            \"amount\": \"5.00\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores/:id/pay","description":"<p>Quick pay. A customer who scans the store QR code or a saved-cart QR code calls this endpoint. No token is necessary. The API creates a POS charge for the store and returns its shortcode. The customer then pays the charge on the pay page (<code>/charges/:shortcode/pay</code>).</p>\n<p>Send one of two forms in <code>charge</code>:</p>\n<ul>\n<li><code>cart_id</code>: pays an active saved cart.</li>\n<li><code>items</code> and/or <code>custom</code>: pays published products of the store and/or a custom amount. Quick pay must be on in the store settings.</li>\n</ul>\n<p>The API takes all prices from the product catalog. Only the custom line has a free amount, in the default fiat currency of the business. The API uses the first non-system gateway of the store. The limit is 30 calls per minute for each IP address.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>charge.cart_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>The ID of an active saved cart of the store. When you send it, the API ignores <code>items</code> and <code>custom</code>.</td>\n</tr>\n<tr>\n<td><code>charge.items</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>Product lines: <code>product_id</code> (integer) and <code>quantity</code> (1 to 999, default 1). Maximum 50 lines. The API merges lines with the same product.</td>\n</tr>\n<tr>\n<td><code>charge.custom.memo</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The description of the custom line. Maximum 140 characters. Required with <code>custom.amount</code>.</td>\n</tr>\n<tr>\n<td><code>charge.custom.amount</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The custom amount in the default fiat currency of the business. It must be more than 0.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.shortcode</code></td>\n<td><code>string</code></td>\n<td>The shortcode of the new charge. Use it to show and pay the charge.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The store does not exist.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>The API cannot create the charge. Examples: quick pay is off, the store has no gateway, a product is not published or not allowed, the cart is not active, the custom line has no description or amount, or the body has no items.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>The IP address made more than 30 calls in one minute.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","pay"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"261581c9-b7ab-4514-a796-bd22f93b2189","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"a406ab45-ddb5-4cae-9207-0ec84216441b","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 2\n            }\n        ],\n        \"custom\": {\n            \"memo\": \"Gorjeta\",\n            \"amount\": \"5.00\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/pay","host":["https://api.liberpay.com"],"path":["api","stores",":id","pay"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"shortcode\": \"73cK8f2Qx\"\n    }\n}"},{"id":"f04da51f-4e6e-4ca6-b482-0615f7033203","name":"422 Not available","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 2\n            }\n        ],\n        \"custom\": {\n            \"memo\": \"Gorjeta\",\n            \"amount\": \"5.00\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/pay","host":["https://api.liberpay.com"],"path":["api","stores",":id","pay"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Quick pay isn't available for this store\"\n}"},{"id":"3c4b609a-4d95-4161-a088-a4edf4e54478","name":"429 Rate limit","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"charge\": {\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 2\n            }\n        ],\n        \"custom\": {\n            \"memo\": \"Gorjeta\",\n            \"amount\": \"5.00\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/pay","host":["https://api.liberpay.com"],"path":["api","stores",":id","pay"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Rate limit reached! Try again in one minute.\"\n}"}],"_postman_id":"eec3af80-bd3d-4e93-a382-fe7fc0c3edcf"}],"id":"cde0d45a-0181-4ec3-a55c-cfb5bdfe0785","description":"<p>A store is a point of sale of a business. Charges, products, invoices, saved carts and quick pay belong to a store. A store takes payments through the gateways that are linked to it.</p>\n","_postman_id":"cde0d45a-0181-4ec3-a55c-cfb5bdfe0785","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"carts","item":[{"name":"list","id":"5aa84472-49ed-421d-be5a-28fb3052fac5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:id/carts","description":"<p>Lists all saved carts of a store, active and paused, newest first. The caller must be the creator or a member of the business of the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The saved cart ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The cart name.</td>\n</tr>\n<tr>\n<td><code>data[].active</code></td>\n<td><code>boolean</code></td>\n<td>True when the cart QR code accepts payments.</td>\n</tr>\n<tr>\n<td><code>data[].items</code></td>\n<td><code>array</code></td>\n<td>The cart lines. Each line has <code>product_id</code> and <code>quantity</code>. The cart stores no prices.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, or the store is a system store.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","carts"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"bb32a627-0ecd-466c-b66a-712ca279d7e0","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"5f789d8d-19af-4109-a8fa-385bc19e201c","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 4,\n            \"name\": \"Combo almoço\",\n            \"active\": true,\n            \"items\": [\n                {\n                    \"product_id\": 101,\n                    \"quantity\": 1\n                },\n                {\n                    \"product_id\": 102,\n                    \"quantity\": 2\n                }\n            ]\n        },\n        {\n            \"id\": 3,\n            \"name\": \"Café e pão de queijo\",\n            \"active\": false,\n            \"items\": [\n                {\n                    \"product_id\": 103,\n                    \"quantity\": 1\n                },\n                {\n                    \"product_id\": 104,\n                    \"quantity\": 2\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"5aa84472-49ed-421d-be5a-28fb3052fac5"},{"name":"get","id":"e247e601-97b6-48da-8d8b-96a47efe48b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","description":"<p>Gets one active saved cart. This endpoint is public: the cart QR page uses it to show the cart before the customer pays. No token is necessary. The call creates no charge.</p>\n<p>A paused cart gives 404, also for the store owner. Use <code>list</code> to see paused carts.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>cart_id</code></td>\n<td>The saved cart ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The saved cart ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The cart name.</td>\n</tr>\n<tr>\n<td><code>data.active</code></td>\n<td><code>boolean</code></td>\n<td>True when the cart QR code accepts payments.</td>\n</tr>\n<tr>\n<td><code>data.items</code></td>\n<td><code>array</code></td>\n<td>The cart lines. Each line has <code>product_id</code> and <code>quantity</code>. The cart stores no prices.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The store does not exist, or the cart does not exist, is paused, or belongs to another store.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","carts",":cart_id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"aef720e1-ee97-4a19-9230-95e584746104","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"},{"id":"15c24794-ffcf-4927-9e52-da87924c18a4","description":{"content":"<p>The saved cart ID.</p>\n","type":"text/plain"},"type":"any","value":"4","key":"cart_id"}]}},"response":[{"id":"c5fc3204-b6fa-4c00-9f78-a7408ad4aecb","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts",":cart_id"],"variable":[{"key":"id","value":"31","description":"The store ID."},{"key":"cart_id","value":"4","description":"The saved cart ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"name\": \"Combo almoço\",\n        \"active\": true,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},{"id":"c7a15963-2022-4539-9056-881f83b20cfb","name":"404 Not available","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts",":cart_id"],"variable":[{"key":"id","value":"31","description":"The store ID."},{"key":"cart_id","value":"4","description":"The saved cart ID."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"This cart isn't available\"\n}"}],"_postman_id":"e247e601-97b6-48da-8d8b-96a47efe48b0"},{"name":"create","id":"59448bfd-b9a6-48d2-9330-2edd70b7fea1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cart\": {\n        \"name\": \"Combo almoço\",\n        \"active\": true,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores/:id/carts","description":"<p>Creates a saved cart in a store. The caller must be the creator or a member of the business of the store.</p>\n<p>Use published products of the store. The API does not check the products when you save the cart. The check occurs when a customer pays.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cart.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The cart name. Maximum 120 characters.</td>\n</tr>\n<tr>\n<td><code>cart.active</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>True when the cart QR code accepts payments. The default is true.</td>\n</tr>\n<tr>\n<td><code>cart.items</code></td>\n<td><code>array</code></td>\n<td>yes</td>\n<td>1 to 50 lines. Each line has <code>product_id</code> (integer) and <code>quantity</code> (integer, 1 to 999). Send integers, not strings.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The saved cart ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The cart name.</td>\n</tr>\n<tr>\n<td><code>data.active</code></td>\n<td><code>boolean</code></td>\n<td>True when the cart QR code accepts payments.</td>\n</tr>\n<tr>\n<td><code>data.items</code></td>\n<td><code>array</code></td>\n<td>The cart lines. Each line has <code>product_id</code> and <code>quantity</code>. The cart stores no prices.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>cart</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, or the store is a system store.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid: no name, no items, more than 50 items, or a line that is not <code>product_id</code> + <code>quantity</code> (1 to 999).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","carts"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"32a7d628-d562-4589-af8f-b97cc294c092","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"}]}},"response":[{"id":"d0519cd4-155b-4ca8-99b5-d7c63f2d5781","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cart\": {\n        \"name\": \"Combo almoço\",\n        \"active\": true,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"name\": \"Combo almoço\",\n        \"active\": true,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}"},{"id":"e0aa66ff-f273-42b1-867b-79729c5d7323","name":"422 Validation error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cart\": {\n        \"name\": \"Combo almoço\",\n        \"active\": true,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts"],"variable":[{"key":"id","value":"31","description":"The store ID."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"items\": [\n            \"must be product_id + quantity (1–999)\"\n        ]\n    }\n}"}],"_postman_id":"59448bfd-b9a6-48d2-9330-2edd70b7fea1"},{"name":"update","id":"e53f7054-a120-40d8-97f1-a85592312195","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cart\": {\n        \"active\": false\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","description":"<p>Updates a saved cart. Send only the fields to change. Set <code>active</code> to false to pause the cart QR code. When you send <code>items</code>, the list replaces all lines.</p>\n<p>The caller must be the creator or a member of the business of the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>cart_id</code></td>\n<td>The saved cart ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>cart.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The cart name. Maximum 120 characters.</td>\n</tr>\n<tr>\n<td><code>cart.active</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>True when the cart QR code accepts payments. The default is true.</td>\n</tr>\n<tr>\n<td><code>cart.items</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>1 to 50 lines. Each line has <code>product_id</code> (integer) and <code>quantity</code> (integer, 1 to 999). Send integers, not strings.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The saved cart ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The cart name.</td>\n</tr>\n<tr>\n<td><code>data.active</code></td>\n<td><code>boolean</code></td>\n<td>True when the cart QR code accepts payments.</td>\n</tr>\n<tr>\n<td><code>data.items</code></td>\n<td><code>array</code></td>\n<td>The cart lines. Each line has <code>product_id</code> and <code>quantity</code>. The cart stores no prices.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>cart</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, the store is a system store, or the cart is not in this store.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","carts",":cart_id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1877732b-aec4-47f9-92d4-ada24c94e6f7","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"},{"id":"17434bcc-1ea4-4d06-886f-41650458e675","description":{"content":"<p>The saved cart ID.</p>\n","type":"text/plain"},"type":"any","value":"4","key":"cart_id"}]}},"response":[{"id":"f4495953-2e0e-45b6-8c00-2a0fd972c3d4","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"cart\": {\n        \"active\": false\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts",":cart_id"],"variable":[{"key":"id","value":"31","description":"The store ID."},{"key":"cart_id","value":"4","description":"The saved cart ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"name\": \"Combo almoço\",\n        \"active\": false,\n        \"items\": [\n            {\n                \"product_id\": 101,\n                \"quantity\": 1\n            },\n            {\n                \"product_id\": 102,\n                \"quantity\": 2\n            }\n        ]\n    }\n}"}],"_postman_id":"e53f7054-a120-40d8-97f1-a85592312195"},{"name":"delete","id":"981b0db1-fd7c-4796-a638-9c37717ac91c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","description":"<p>Deletes a saved cart. Its QR code stops working. The caller must be the creator or a member of the business of the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The store ID.</td>\n</tr>\n<tr>\n<td><code>cart_id</code></td>\n<td>The saved cart ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, the caller is not a member, the store is a system store, or the cart is not in this store.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":id","carts",":cart_id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"85372ff7-8e38-45df-a83b-c4612b67585c","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"id"},{"id":"27c70f6e-a33f-47bc-a702-cb1cd20bfc63","description":{"content":"<p>The saved cart ID.</p>\n","type":"text/plain"},"type":"any","value":"4","key":"cart_id"}]}},"response":[{"id":"2efbb58a-d999-44a1-9ab2-ca409af5fcff","name":"204 No content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:id/carts/:cart_id","host":["https://api.liberpay.com"],"path":["api","stores",":id","carts",":cart_id"],"variable":[{"key":"id","value":"31","description":"The store ID."},{"key":"cart_id","value":"4","description":"The saved cart ID."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"981b0db1-fd7c-4796-a638-9c37717ac91c"}],"id":"fb8d2e28-529f-4d9a-897c-e16c252845e9","description":"<p>A saved cart is a named set of products of a store, for example a lunch combo. Each cart has its own QR code. A customer scans the code and pays the cart with <code>stores/pay</code>. The cart stores product IDs and quantities only. The prices come from the products when the customer pays.</p>\n","_postman_id":"fb8d2e28-529f-4d9a-897c-e16c252845e9","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"customers","item":[{"name":"listBusiness","id":"b47abf07-265b-45c5-81bc-074ff55f07d9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/customers","description":"<p>Lists all customers of a business, sorted by name. The caller must be the creator or a member of the business. The items do not include the linked stores.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The customer ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>data[].email</code></td>\n<td><code>string</code></td>\n<td>The customer email. Invoices go to this address.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>object|null</code></td>\n<td>The customer address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data[].business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not the creator or a member.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","customers"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"19f063b7-7ac4-4f1b-a392-e3590492c431","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"148468a7-f31d-448b-8454-a8466125d06d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/customers","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","customers"],"variable":[{"key":"business_id","value":"12","description":"The business ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 55,\n            \"name\": \"João Lima\",\n            \"email\": \"steve+customer2@example.com\",\n            \"address\": null,\n            \"business_id\": 12\n        },\n        {\n            \"id\": 54,\n            \"name\": \"Maria Souza\",\n            \"email\": \"steve+customer@example.com\",\n            \"address\": {\n                \"street1\": \"Av. Paulista, 1000\",\n                \"street2\": \"Apto 12\",\n                \"city\": \"São Paulo\",\n                \"region\": \"SP\",\n                \"code\": \"01310-200\",\n                \"country\": \"BR\"\n            },\n            \"business_id\": 12\n        }\n    ]\n}"}],"_postman_id":"b47abf07-265b-45c5-81bc-074ff55f07d9"},{"name":"listStore","id":"d64436d5-738b-4092-98c5-c12e2d8e6c3d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/customers","description":"<p>Lists the customers that are linked to a store, sorted by name. The caller must be the creator or a member of the business of the store.</p>\n<p><code>meta</code> gives the invoice count for each customer, keyed by customer ID. A customer with no invoices has no key in <code>meta</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The customer ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>data[].email</code></td>\n<td><code>string</code></td>\n<td>The customer email. Invoices go to this address.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>object|null</code></td>\n<td>The customer address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data[].business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n<tr>\n<td><code>meta.&lt;customer_id&gt;.invoice_count</code></td>\n<td><code>integer</code></td>\n<td>The count of invoices of the customer.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist, or the caller is not the creator or a member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","customers"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"44a66e6d-9f19-4f44-8c7b-33c80dbe6af4","description":{"content":"<p>The store ID.</p>\n","type":"text/plain"},"type":"any","value":"31","key":"store_id"}]}},"response":[{"id":"b0490c80-3a2c-4ec6-974c-05b701ead6d8","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/customers","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","customers"],"variable":[{"key":"store_id","value":"31","description":"The store ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 55,\n            \"name\": \"João Lima\",\n            \"email\": \"steve+customer2@example.com\",\n            \"address\": null,\n            \"business_id\": 12\n        },\n        {\n            \"id\": 54,\n            \"name\": \"Maria Souza\",\n            \"email\": \"steve+customer@example.com\",\n            \"address\": {\n                \"street1\": \"Av. Paulista, 1000\",\n                \"street2\": \"Apto 12\",\n                \"city\": \"São Paulo\",\n                \"region\": \"SP\",\n                \"code\": \"01310-200\",\n                \"country\": \"BR\"\n            },\n            \"business_id\": 12\n        }\n    ],\n    \"meta\": {\n        \"54\": {\n            \"id\": 54,\n            \"invoice_count\": 3\n        }\n    }\n}"}],"_postman_id":"d64436d5-738b-4092-98c5-c12e2d8e6c3d"},{"name":"get","id":"39222f40-872c-4a15-8f86-2a55a29b3cff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/customers/:id","description":"<p>Gets one customer with the linked stores. The caller must be the creator or a member of the business of the customer.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The customer ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The customer ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string</code></td>\n<td>The customer email. Invoices go to this address.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object|null</code></td>\n<td>The customer address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n<tr>\n<td><code>data.stores</code></td>\n<td><code>array</code></td>\n<td>The linked stores: <code>id</code>, <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The customer does not exist, or the caller is not the creator or a member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","customers",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"e6b7e70e-4995-4ca9-9b7a-c769db0b7bf2","description":{"content":"<p>The customer ID.</p>\n","type":"text/plain"},"type":"any","value":"54","key":"id"}]}},"response":[{"id":"862ce881-c9f4-4f48-876a-dda659c1a1c7","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/customers/:id","host":["https://api.liberpay.com"],"path":["api","customers",":id"],"variable":[{"key":"id","value":"54","description":"The customer ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 54,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"business_id\": 12,\n        \"stores\": [\n            {\n                \"id\": 31,\n                \"name\": \"Loja Centro\"\n            }\n        ]\n    }\n}"},{"id":"28232200-416a-495c-bafc-e2d1d5d9cea0","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/customers/:id","host":["https://api.liberpay.com"],"path":["api","customers",":id"],"variable":[{"key":"id","value":"54","description":"The customer ID."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"39222f40-872c-4a15-8f86-2a55a29b3cff"},{"name":"create","id":"7ba884aa-f5d0-4a9e-8827-d5d6f3c05fa5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"business_id\": 12,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"stores\": [\n            31\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/customers","description":"<p>Creates a customer in a business. The caller must be the creator or a member of the business in <code>customer.business_id</code>.</p>\n<p><code>customer.stores</code> links the customer to stores. The API keeps only the stores that the caller can manage and drops the other IDs without an error. The response does not include the stores; use <code>get</code> to read them.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customer.business_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n<tr>\n<td><code>customer.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>customer.email</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The customer email. It must be a valid email address.</td>\n</tr>\n<tr>\n<td><code>customer.address</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>The address. Allowed keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>. Other keys give an error.</td>\n</tr>\n<tr>\n<td><code>customer.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The IDs of the stores to link. Send integers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The customer ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string</code></td>\n<td>The customer email. Invoices go to this address.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object|null</code></td>\n<td>The customer address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not the creator or a member.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid, for example a missing <code>name</code>, a bad email, or an address key that is not allowed. The body has <code>\"type\":\"customer\"</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","customers"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"74c1d157-cde9-4e26-8b13-56cb2fdd91f1","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"business_id\": 12,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"stores\": [\n            31\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/customers"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 54,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"business_id\": 12\n    }\n}"},{"id":"316c55e9-519d-426c-8960-fdd690d5b673","name":"422 Validation error","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"business_id\": 12,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"stores\": [\n            31\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/customers"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"type\": \"customer\",\n    \"errors\": {\n        \"email\": [\n            \"Not a valid email\"\n        ]\n    }\n}"}],"_postman_id":"7ba884aa-f5d0-4a9e-8827-d5d6f3c05fa5"},{"name":"update","id":"ff84699b-15e7-41a3-9781-6aa0479f92e7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"stores\": [\n            31,\n            32\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/customers/:id","description":"<p>Updates a customer. The caller must be the creator or a member of the business of the customer. You cannot move a customer to another business. <code>PATCH</code> does the same as <code>PUT</code>.</p>\n<p>CAUTION: <code>customer.stores</code> replaces all store links. If you do not send <code>stores</code>, the API removes all store links of the customer. Always send the full list of store IDs.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The customer ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customer.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The customer name. It must not be empty.</td>\n</tr>\n<tr>\n<td><code>customer.email</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The customer email.</td>\n</tr>\n<tr>\n<td><code>customer.address</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>The address. Allowed keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>customer.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The full list of store IDs to link. Send integers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The customer ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The customer name.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string</code></td>\n<td>The customer email. Invoices go to this address.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object|null</code></td>\n<td>The customer address. Keys: <code>street1</code>, <code>street2</code>, <code>city</code>, <code>region</code>, <code>code</code>, <code>country</code>.</td>\n</tr>\n<tr>\n<td><code>data.business_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the business that owns the customer.</td>\n</tr>\n<tr>\n<td><code>data.stores</code></td>\n<td><code>array</code></td>\n<td>The linked stores: <code>id</code>, <code>name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>customer</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The customer does not exist, or the caller is not the creator or a member of its business.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","customers",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1ef30f50-02ff-4e30-a2a7-ee41be9f4557","description":{"content":"<p>The customer ID.</p>\n","type":"text/plain"},"type":"any","value":"54","key":"id"}]}},"response":[{"id":"c96b646c-8859-4ce6-aebc-11461dab07d9","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"stores\": [\n            31,\n            32\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/customers/:id","host":["https://api.liberpay.com"],"path":["api","customers",":id"],"variable":[{"key":"id","value":"54","description":"The customer ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 54,\n        \"name\": \"Maria Souza\",\n        \"email\": \"steve+customer@example.com\",\n        \"address\": {\n            \"street1\": \"Av. Paulista, 1000\",\n            \"street2\": \"Apto 12\",\n            \"city\": \"São Paulo\",\n            \"region\": \"SP\",\n            \"code\": \"01310-200\",\n            \"country\": \"BR\"\n        },\n        \"business_id\": 12,\n        \"stores\": [\n            {\n                \"id\": 31,\n                \"name\": \"Loja Centro\"\n            },\n            {\n                \"id\": 32,\n                \"name\": \"Loja Shopping\"\n            }\n        ]\n    }\n}"}],"_postman_id":"ff84699b-15e7-41a3-9781-6aa0479f92e7"},{"name":"delete","id":"3d4c242e-b8d6-4b0e-8a18-f58cacbadc68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/customers/:id","description":"<p>Deletes a customer and its store links. The caller must be the creator or a member of the business of the customer. You cannot delete a customer that has invoices.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The customer ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The customer does not exist, or the caller is not the creator or a member of its business.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>The customer has invoices.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","customers",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1dd4b4e1-01ca-4d2a-966e-cab704911be2","description":{"content":"<p>The customer ID.</p>\n","type":"text/plain"},"type":"any","value":"54","key":"id"}]}},"response":[{"id":"3d0f1cf9-e19b-42a7-b60b-d876f921d216","name":"204 No content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/customers/:id","host":["https://api.liberpay.com"],"path":["api","customers",":id"],"variable":[{"key":"id","value":"54","description":"The customer ID."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""},{"id":"a07b1422-f209-4b4c-83d2-4a3c88e281a9","name":"422 Has invoices","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/customers/:id","host":["https://api.liberpay.com"],"path":["api","customers",":id"],"variable":[{"key":"id","value":"54","description":"The customer ID."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"id\": [\n            \"customer has invoices and cannot be deleted\"\n        ]\n    }\n}"}],"_postman_id":"3d4c242e-b8d6-4b0e-8a18-f58cacbadc68"}],"id":"e118c6e6-51fe-496d-adf4-91539ffbcf2e","description":"<p>A customer is a buyer that a business saves, usually to send invoices. Each customer belongs to one business and can be linked to one or more stores of that business. Only the creator and the members of the business can read or change its customers.</p>\n","_postman_id":"e118c6e6-51fe-496d-adf4-91539ffbcf2e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"businesses","item":[{"name":"list","id":"4f26aa3a-3d9a-45dd-8611-71a91cecf5f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses","description":"<p>Lists all businesses that the signed-in user created or is a member of. The list includes the system (P2P) business of the user.</p>\n<p>The list items do not include <code>fee_account</code>, <code>stripe_connect</code> or <code>verification</code>. Use <code>get</code> for these fields.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The businesses. Each item has the fields that <code>get</code> describes.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The business ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The display name of the business.</td>\n</tr>\n<tr>\n<td><code>data[].legal_name</code></td>\n<td><code>string|null</code></td>\n<td>The official (legal) name of the business.</td>\n</tr>\n<tr>\n<td><code>data[].is_system</code></td>\n<td><code>boolean</code></td>\n<td>True for the P2P business that each user gets. You cannot change or delete a system business.</td>\n</tr>\n<tr>\n<td><code>data[].country</code></td>\n<td><code>object|null</code></td>\n<td>The country of the business: <code>id</code>, <code>code</code>, <code>name</code>. The business gets the country of its creator and never changes it.</td>\n</tr>\n<tr>\n<td><code>data[].verified</code></td>\n<td><code>boolean</code></td>\n<td>The verified flag stored on the business.</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The creator of the business: <code>id</code>, <code>address</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"5330461f-7971-4d3b-9b39-9390ec00e67b","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 12,\n            \"name\": \"Café Aurora\",\n            \"legal_name\": \"Café Aurora Ltda\",\n            \"is_system\": false,\n            \"verified\": true,\n            \"country\": {\n                \"id\": 1,\n                \"code\": \"BR\",\n                \"name\": \"Brazil\"\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"fiscal_profile\": \"nf\",\n            \"business_kyc_enabled\": true,\n            \"gateway_types\": [\n                1,\n                3,\n                4\n            ],\n            \"fiat_currencies\": [\n                {\n                    \"id\": 2,\n                    \"name\": \"Brazilian Real\",\n                    \"symbol\": \"BRL\",\n                    \"sign\": \"R$\"\n                },\n                {\n                    \"id\": 1,\n                    \"name\": \"US Dollar\",\n                    \"symbol\": \"USD\",\n                    \"sign\": \"$\"\n                }\n            ],\n            \"creator\": {\n                \"id\": 7,\n                \"address\": \"0x3f2a9c1b7e5d4a6c8b0e2f4a6c8e0b2d4f6a8c1e\"\n            }\n        }\n    ]\n}"}],"_postman_id":"4f26aa3a-3d9a-45dd-8611-71a91cecf5f7"},{"name":"get","id":"90e4fde9-634d-4eff-b2c6-946144aeb84d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:id","description":"<p>Gets one business. The caller must be the creator or a member of the business.</p>\n<p>The response adds the fee account, the creator, the Stripe Connect state (when the business has a Stripe Connect account) and the verification state.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The business ID.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The display name of the business.</td>\n</tr>\n<tr>\n<td><code>data.legal_name</code></td>\n<td><code>string|null</code></td>\n<td>The official (legal) name of the business.</td>\n</tr>\n<tr>\n<td><code>data.is_system</code></td>\n<td><code>boolean</code></td>\n<td>True for the P2P business that each user gets. You cannot change or delete a system business.</td>\n</tr>\n<tr>\n<td><code>data.country</code></td>\n<td><code>object|null</code></td>\n<td>The country of the business: <code>id</code>, <code>code</code>, <code>name</code>. The business gets the country of its creator and never changes it.</td>\n</tr>\n<tr>\n<td><code>data.fiat_currency</code></td>\n<td><code>object|null</code></td>\n<td>The default fiat currency of the country: <code>id</code>, <code>name</code>, <code>symbol</code>, <code>sign</code>.</td>\n</tr>\n<tr>\n<td><code>data.fiat_currencies</code></td>\n<td><code>array</code></td>\n<td>The fiat currencies that the business accepts for charges and invoices. The country default is always first.</td>\n</tr>\n<tr>\n<td><code>data.fiscal_profile</code></td>\n<td><code>string|null</code></td>\n<td>The fiscal document type of the country. <code>nf</code> means Brazilian nota fiscal.</td>\n</tr>\n<tr>\n<td><code>data.business_kyc_enabled</code></td>\n<td><code>boolean</code></td>\n<td>True when the country requires business verification.</td>\n</tr>\n<tr>\n<td><code>data.gateway_types</code></td>\n<td><code>array</code></td>\n<td>The IDs of the gateway types that the country offers.</td>\n</tr>\n<tr>\n<td><code>data.verified</code></td>\n<td><code>boolean</code></td>\n<td>True when the business verification is complete. For a system business, this is the verification of its user.</td>\n</tr>\n<tr>\n<td><code>data.verification</code></td>\n<td><code>string</code></td>\n<td>The verification state: <code>none</code>, <code>created</code>, <code>pending</code>, <code>completed</code> or <code>failed</code>.</td>\n</tr>\n<tr>\n<td><code>data.fee_account</code></td>\n<td><code>object</code></td>\n<td>The fee account of the business: <code>id</code>, <code>name</code>, <code>business_id</code>, <code>recharge_at</code>, <code>recharge_amount</code>, <code>freebies</code>. Not present when the business has no fee account.</td>\n</tr>\n<tr>\n<td><code>data.creator</code></td>\n<td><code>object</code></td>\n<td>The creator of the business: <code>id</code>, <code>address</code>.</td>\n</tr>\n<tr>\n<td><code>data.stripe_connect</code></td>\n<td><code>object</code></td>\n<td>The Stripe Connect account: <code>account_id</code>, <code>account_link</code>, <code>complete</code>, <code>active</code>. Present only when the business has one.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist (<code>{\"errors\":{\"detail\":\"Not Found\"}}</code>), or the caller is not the creator or a member (<code>{\"status\":\"error\",\"message\":\"not found\"}</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"022f54a2-b2bb-4da3-ba16-2f1059f97560","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"id"}]}},"response":[{"id":"10da550c-4929-484d-8ae2-ae4f4bb5fe4f","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:id","host":["https://api.liberpay.com"],"path":["api","businesses",":id"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 12,\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\",\n        \"is_system\": false,\n        \"verified\": true,\n        \"country\": {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\"\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"fiscal_profile\": \"nf\",\n        \"business_kyc_enabled\": true,\n        \"gateway_types\": [\n            1,\n            3,\n            4\n        ],\n        \"fiat_currencies\": [\n            {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            {\n                \"id\": 1,\n                \"name\": \"US Dollar\",\n                \"symbol\": \"USD\",\n                \"sign\": \"$\"\n            }\n        ],\n        \"fee_account\": {\n            \"id\": 9,\n            \"name\": \"Default\",\n            \"business_id\": 12,\n            \"recharge_at\": null,\n            \"recharge_amount\": null,\n            \"freebies\": 10\n        },\n        \"creator\": {\n            \"id\": 7,\n            \"address\": \"0x3f2a9c1b7e5d4a6c8b0e2f4a6c8e0b2d4f6a8c1e\"\n        },\n        \"verification\": \"completed\"\n    }\n}"},{"id":"7dfc8395-9a2b-4b4c-a5ba-b3d24887f4eb","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:id","host":["https://api.liberpay.com"],"path":["api","businesses",":id"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"90e4fde9-634d-4eff-b2c6-946144aeb84d"},{"name":"create","id":"63bfacaf-8a79-4584-8946-2c025d4f9030","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    },\n    \"store\": {\n        \"name\": \"Loja Centro\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses","description":"<p>Creates a business. The signed-in user becomes the creator. The business gets the country of the creator and the default fiat currency of that country.</p>\n<p>Send <code>store.name</code> to also create the first store and the fee account in the same transaction. The response then has <code>business</code>, <code>store</code> and <code>fee_account</code> under <code>data</code>. Without <code>store</code>, the response is the business only.</p>\n<p>The errors differ for the two forms. With <code>store</code>, a validation error gives 400 and puts the errors under the failed step (<code>business</code>, <code>store</code>, ...). Without <code>store</code>, a validation error gives 422.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The display name of the business.</td>\n</tr>\n<tr>\n<td><code>business.legal_name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The official (legal) name of the business.</td>\n</tr>\n<tr>\n<td><code>store.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The name of the first store. When you send it, the API also creates the store and the fee account.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.business</code></td>\n<td><code>object</code></td>\n<td>With <code>store</code>: the new business. The fields are the same as in <code>get</code>, without <code>verification</code>, <code>fee_account</code> and <code>creator</code>.</td>\n</tr>\n<tr>\n<td><code>data.store</code></td>\n<td><code>object</code></td>\n<td>With <code>store</code>: the new store.</td>\n</tr>\n<tr>\n<td><code>data.fee_account</code></td>\n<td><code>object</code></td>\n<td>With <code>store</code>: the new fee account.</td>\n</tr>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>Without <code>store</code>: the ID of the new business.</td>\n</tr>\n<tr>\n<td><code>data.creator_id</code></td>\n<td><code>integer</code></td>\n<td>The ID of the creator.</td>\n</tr>\n<tr>\n<td><code>data.verification</code></td>\n<td><code>string</code></td>\n<td>Without <code>store</code>: the verification state. A new business has <code>none</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>With <code>store</code>: a field is not valid. The body is <code>{\"&lt;step&gt;\":{\"status\":\"error\",\"errors\":{...}}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>Without <code>store</code>: a required field is missing, for example <code>legal_name</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"edbe7070-7cf1-4aa8-9d66-49ed0c12ea0c","name":"201 Created (with store)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    },\n    \"store\": {\n        \"name\": \"Loja Centro\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"business\": {\n            \"id\": 12,\n            \"name\": \"Café Aurora\",\n            \"legal_name\": \"Café Aurora Ltda\",\n            \"is_system\": false,\n            \"verified\": false,\n            \"country\": {\n                \"id\": 1,\n                \"code\": \"BR\",\n                \"name\": \"Brazil\"\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"fiscal_profile\": \"nf\",\n            \"business_kyc_enabled\": true,\n            \"gateway_types\": [\n                1,\n                3,\n                4\n            ],\n            \"fiat_currencies\": [\n                {\n                    \"id\": 2,\n                    \"name\": \"Brazilian Real\",\n                    \"symbol\": \"BRL\",\n                    \"sign\": \"R$\"\n                }\n            ],\n            \"creator_id\": 7\n        },\n        \"store\": {\n            \"id\": 31,\n            \"name\": \"Loja Centro\",\n            \"logo\": null,\n            \"address\": null,\n            \"phone\": null,\n            \"email\": null,\n            \"tax_rate\": 0.0,\n            \"settings\": {\n                \"quick_pay\": {\n                    \"enabled\": false,\n                    \"show_products\": true,\n                    \"product_ids\": []\n                }\n            },\n            \"business_id\": 12\n        },\n        \"fee_account\": {\n            \"id\": 9,\n            \"name\": \"Default\",\n            \"business_id\": 12,\n            \"recharge_at\": null,\n            \"recharge_amount\": null,\n            \"freebies\": 10\n        }\n    }\n}"},{"id":"04f68516-a166-4b62-affc-2e8d2811db2a","name":"201 Created (business only)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    },\n    \"store\": {\n        \"name\": \"Loja Centro\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 12,\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\",\n        \"is_system\": false,\n        \"verified\": false,\n        \"country\": {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\"\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"fiscal_profile\": \"nf\",\n        \"business_kyc_enabled\": true,\n        \"gateway_types\": [\n            1,\n            3,\n            4\n        ],\n        \"fiat_currencies\": [\n            {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            }\n        ],\n        \"verification\": \"none\",\n        \"creator_id\": 7\n    }\n}"},{"id":"1d125e47-da90-4673-83c6-8d3353751222","name":"400 Validation error (with store)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    },\n    \"store\": {\n        \"name\": \"Loja Centro\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"business\": {\n        \"status\": \"error\",\n        \"errors\": {\n            \"legal_name\": [\n                \"can't be blank\"\n            ]\n        }\n    }\n}"}],"_postman_id":"63bfacaf-8a79-4584-8946-2c025d4f9030"},{"name":"update","id":"1a54f7f2-9fb4-432a-9a38-4ab148dbd525","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora Centro\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses/:id","description":"<p>Updates a business. The caller must be the creator or a member. You cannot update a system (P2P) business. The country never changes. <code>PATCH</code> does the same as <code>PUT</code>.</p>\n<p>You can also set the SMTP settings that the business uses to send email (<code>config_secret.smtp</code>). When you send <code>smtp</code>, all seven SMTP keys are required. The API never returns <code>config_secret</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The display name of the business.</td>\n</tr>\n<tr>\n<td><code>business.legal_name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The official (legal) name. When you send this key, it must not be empty.</td>\n</tr>\n<tr>\n<td><code>business.config_secret</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>Private settings. This value replaces all stored settings.</td>\n</tr>\n<tr>\n<td><code>business.config_secret.smtp</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>SMTP settings: <code>from_name</code>, <code>from_address</code>, <code>cc_address</code>, <code>relay</code>, <code>port</code>, <code>username</code>, <code>password</code>. All keys are required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The updated business. The fields are the same as in <code>get</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The body has no <code>business</code> object.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, the caller is not the creator or a member, or the business is a system business.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is not valid, for example an empty <code>name</code> or a missing SMTP key (<code>config_secret: [\"relay is required\"]</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"e7def1b7-2b87-47f3-b94e-9d661ca51c90","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"id"}]}},"response":[{"id":"be0049df-cc86-4cb0-936f-8c00528ad010","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"business\": {\n        \"name\": \"Café Aurora Centro\",\n        \"legal_name\": \"Café Aurora Ltda\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:id","host":["https://api.liberpay.com"],"path":["api","businesses",":id"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 12,\n        \"name\": \"Café Aurora Centro\",\n        \"legal_name\": \"Café Aurora Ltda\",\n        \"is_system\": false,\n        \"verified\": true,\n        \"country\": {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\"\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"fiscal_profile\": \"nf\",\n        \"business_kyc_enabled\": true,\n        \"gateway_types\": [\n            1,\n            3,\n            4\n        ],\n        \"fiat_currencies\": [\n            {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            {\n                \"id\": 1,\n                \"name\": \"US Dollar\",\n                \"symbol\": \"USD\",\n                \"sign\": \"$\"\n            }\n        ],\n        \"fee_account\": {\n            \"id\": 9,\n            \"name\": \"Default\",\n            \"business_id\": 12,\n            \"recharge_at\": null,\n            \"recharge_amount\": null,\n            \"freebies\": 10\n        },\n        \"creator\": {\n            \"id\": 7,\n            \"address\": \"0x3f2a9c1b7e5d4a6c8b0e2f4a6c8e0b2d4f6a8c1e\"\n        },\n        \"verification\": \"completed\"\n    }\n}"}],"_postman_id":"1a54f7f2-9fb4-432a-9a38-4ab148dbd525"},{"name":"delete","id":"c367039a-7b1c-4188-ba29-3cc6634fffdf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/businesses/:id","description":"<p>Deletes a business. The caller must be the creator or a member. You cannot delete a system (P2P) business.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, the caller is not the creator or a member, or the business is a system business.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1ad6976d-00fc-462c-bf2c-f52f53dd4fab","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"id"}]}},"response":[{"id":"4be1569e-e8fe-49f8-b64f-59487487b57c","name":"204 No content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:id","host":["https://api.liberpay.com"],"path":["api","businesses",":id"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"c367039a-7b1c-4188-ba29-3cc6634fffdf"},{"name":"setFiatCurrencies","id":"c854d3fc-9ad9-4a85-bff9-7e98c4aeaf42","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fiat_currency_ids\": [\n        2,\n        1\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses/:id/fiat_currencies","description":"<p>Replaces the set of fiat currencies that the business accepts for charges and invoices. The API always keeps the default currency of the country, also when you do not send it. Any currency from <code>GET /api/fiat_currencies</code> is allowed.</p>\n<p>The caller must be the creator or a member. You cannot change a system (P2P) business.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The business ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fiat_currency_ids</code></td>\n<td><code>array</code></td>\n<td>yes</td>\n<td>The IDs of the fiat currencies to enable. Send integers. The API removes the currencies that are not in the list, except the country default.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The enabled fiat currencies, country default first. Each item has <code>id</code>, <code>name</code>, <code>symbol</code>, <code>sign</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing or not valid.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>fiat_currency_ids</code> is missing or is not a list.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist, the caller is not the creator or a member, or the business is a system business.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The signed-in user has no country yet (<code>code: \"country_required\"</code>). Set the country first.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>One or more IDs are not known fiat currencies. <code>data.unknown</code> lists them.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The update failed.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":id","fiat_currencies"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"7070949a-bd65-465b-a3d3-77966003da65","description":{"content":"<p>The business ID.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"id"}]}},"response":[{"id":"0d2e835d-bb8b-4633-a849-b27538bb5a78","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fiat_currency_ids\": [\n        2,\n        1\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:id/fiat_currencies","host":["https://api.liberpay.com"],"path":["api","businesses",":id","fiat_currencies"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        {\n            \"id\": 1,\n            \"name\": \"US Dollar\",\n            \"symbol\": \"USD\",\n            \"sign\": \"$\"\n        }\n    ]\n}"},{"id":"e8fae018-a089-44fa-868b-21c583b03d19","name":"422 Unknown currency","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fiat_currency_ids\": [\n        2,\n        1\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:id/fiat_currencies","host":["https://api.liberpay.com"],"path":["api","businesses",":id","fiat_currencies"],"variable":[{"key":"id","value":"12","description":"The business ID."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"unknown fiat currency\",\n    \"data\": {\n        \"unknown\": [\n            99\n        ]\n    }\n}"}],"_postman_id":"c854d3fc-9ad9-4a85-bff9-7e98c4aeaf42"}],"id":"caed6441-f373-4892-b629-e45713fbd636","description":"<p>A business is the legal entity that sells. A business has one or more stores, gateways, customers and one fee account. Each user also gets one system (P2P) business. Only the creator and the members of a business can read or change it.</p>\n","_postman_id":"caed6441-f373-4892-b629-e45713fbd636","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"gateways","item":[{"name":"list","id":"b652dd2d-52c5-4e8d-ad16-1cac307b53aa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateways","description":"<p>Returns the gateways that the current user created, in all businesses, ordered by id. Gateways that other members of a business created are not in this list. To see all gateways of one business, use <code>GET /api/businesses/:business_id/gateways</code>.</p>\n<p>Each item shows the license state. <code>license_status</code> is <code>valid</code> (licensed), <code>pending</code> (a license job is in progress) or <code>invalid</code>. The <code>config</code> object never contains secrets.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type_id</code></td>\n<td>no</td>\n<td>Optional. Returns only gateways of this gateway type id (see <code>GET /api/gateway_types</code>). Example: <code>1</code> is <code>polygon</code>, <code>3</code> is <code>stripe</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The gateway id.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>string|null</code></td>\n<td>The gateway contract address on chain. Null for fiat gateways and for crypto gateways that are not deployed yet.</td>\n</tr>\n<tr>\n<td><code>data[].licensed</code></td>\n<td><code>boolean</code></td>\n<td>True when the gateway license is active on chain.</td>\n</tr>\n<tr>\n<td><code>data[].license_status</code></td>\n<td><code>string</code></td>\n<td>One of <code>valid</code>, <code>pending</code>, <code>invalid</code>.</td>\n</tr>\n<tr>\n<td><code>data[].is_system</code></td>\n<td><code>boolean</code></td>\n<td>True for a gateway that Liberpay manages for the user (for example the P2P gateway).</td>\n</tr>\n<tr>\n<td><code>data[].version</code></td>\n<td><code>object|null</code></td>\n<td>The gateway version: <code>identifier</code> (for example <code>polygon-v1</code>) and <code>number</code>.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The gateway type with its platform (<code>evm</code> or <code>fiat</code>).</td>\n</tr>\n<tr>\n<td><code>data[].config</code></td>\n<td><code>object</code></td>\n<td>Public configuration state. <code>configured</code> is true when secret settings exist. Stripe adds <code>payment_methods</code>. Woovi adds <code>linked</code>.</td>\n</tr>\n<tr>\n<td><code>data[].stores</code></td>\n<td><code>array</code></td>\n<td>The stores linked to the gateway (<code>id</code>, <code>name</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Returns only gateways of this gateway type id (see <code>GET /api/gateway_types</code>). Example: <code>1</code> is <code>polygon</code>, <code>3</code> is <code>stripe</code>.</p>\n","type":"text/plain"},"key":"type_id","value":"1"}],"variable":[]}},"response":[{"id":"0b57725a-b551-4e0e-9e09-e49119bc9274","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways","host":["https://api.liberpay.com"],"path":["api","gateways"],"query":[{"key":"type_id","value":"1","description":"Optional. Returns only gateways of this gateway type id (see `GET /api/gateway_types`). Example: `1` is `polygon`, `3` is `stripe`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 73,\n            \"name\": \"Main Store Polygon\",\n            \"address\": \"0x5e1f3a9c7b2d4e6f8a0b1c2d3e4f5a6b7c8d9e0f\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            },\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Main Store\"\n                }\n            ]\n        },\n        {\n            \"id\": 81,\n            \"name\": \"Card and Pix\",\n            \"address\": null,\n            \"licensed\": false,\n            \"license_status\": \"invalid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"stripe\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 3,\n                \"identifier\": \"stripe\",\n                \"label\": \"Stripe\",\n                \"platform\": {\n                    \"id\": 2,\n                    \"identifier\": \"fiat\",\n                    \"label\": \"Fiat Currency\"\n                }\n            },\n            \"config\": {\n                \"payment_methods\": [\n                    \"card\",\n                    \"pix\"\n                ],\n                \"configured\": true\n            },\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Main Store\"\n                }\n            ]\n        }\n    ]\n}"}],"_postman_id":"b652dd2d-52c5-4e8d-ad16-1cac307b53aa"},{"name":"listBusiness","id":"249f22e4-1c77-48aa-90c6-a8e51497afcf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/gateways","description":"<p>Returns all gateways of one business, ordered by id. The caller must be the creator or a member of the business. The items have the same shape as <code>GET /api/gateways</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type_id</code></td>\n<td>no</td>\n<td>Optional. Returns only gateways of this gateway type id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[]</code></td>\n<td><code>array</code></td>\n<td>The gateways. See <code>GET /api/gateways</code> for the fields.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not its creator or a member.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","gateways"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Returns only gateways of this gateway type id.</p>\n","type":"text/plain"},"key":"type_id","value":"1"}],"variable":[{"id":"56207eec-ebad-41b7-9483-046ccfd4b38a","description":{"content":"<p>The business id.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"6c9e1ff2-aaec-45f4-a8c2-86913c299497","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/gateways","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","gateways"],"query":[{"key":"type_id","value":"1","description":"Optional. Returns only gateways of this gateway type id.","disabled":true}],"variable":[{"key":"business_id","value":"12","description":"The business id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 73,\n            \"name\": \"Main Store Polygon\",\n            \"address\": \"0x5e1f3a9c7b2d4e6f8a0b1c2d3e4f5a6b7c8d9e0f\",\n            \"licensed\": true,\n            \"license_status\": \"valid\",\n            \"creator_id\": 12,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            },\n            \"stores\": [\n                {\n                    \"id\": 5,\n                    \"name\": \"Main Store\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"722a14db-c806-4a6e-8f30-3abba3724438","name":"404 Not a member","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/gateways","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","gateways"],"query":[{"key":"type_id","value":"1","description":"Optional. Returns only gateways of this gateway type id.","disabled":true}],"variable":[{"key":"business_id","value":"12","description":"The business id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"249f22e4-1c77-48aa-90c6-a8e51497afcf"},{"name":"get","id":"6b7ef876-8811-4a4c-9fdf-98550141e736","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateways/:id","description":"<p>Returns one gateway with its secret settings. Only the user who created the gateway can call it. Other members of the business get 404.</p>\n<p>CAUTION: The response contains <code>config_secret</code> in clear text (for example the PayPal <code>client_secret</code> or the Woovi <code>app_id</code>). Do not log it or show it to other people. This response does not have the license fields of the list.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The gateway id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The gateway id.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>string|null</code></td>\n<td>The contract address of a crypto gateway.</td>\n</tr>\n<tr>\n<td><code>data.type</code></td>\n<td><code>object</code></td>\n<td>The gateway type with its platform.</td>\n</tr>\n<tr>\n<td><code>data.config_secret</code></td>\n<td><code>object|null</code></td>\n<td>The secret settings of a fiat gateway. Null when there are none.</td>\n</tr>\n<tr>\n<td><code>data.stores</code></td>\n<td><code>array</code></td>\n<td>The linked stores (<code>id</code>, <code>name</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The gateway does not exist, or the caller did not create it.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"cd1c9809-c748-4250-aaba-a46d4cfec8ac","description":{"content":"<p>The gateway id.</p>\n","type":"text/plain"},"type":"any","value":"81","key":"id"}]}},"response":[{"id":"a1b1faa6-cd08-4cfd-8e26-f995a758d82d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:id","host":["https://api.liberpay.com"],"path":["api","gateways",":id"],"variable":[{"key":"id","value":"81","description":"The gateway id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 81,\n        \"name\": \"Card and Pix\",\n        \"address\": null,\n        \"type\": {\n            \"id\": 3,\n            \"identifier\": \"stripe\",\n            \"label\": \"Stripe\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        },\n        \"config_secret\": {\n            \"payment_methods\": [\n                \"card\",\n                \"pix\"\n            ]\n        },\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Main Store\"\n            }\n        ]\n    }\n}"},{"id":"a536a37a-5867-4244-a05d-29e1f623f22d","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:id","host":["https://api.liberpay.com"],"path":["api","gateways",":id"],"variable":[{"key":"id","value":"81","description":"The gateway id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"6b7ef876-8811-4a4c-9fdf-98550141e736"},{"name":"create","id":"e3d7f543-1682-4d50-a1fb-4d6b46f1f477","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"type_id\": 3,\n        \"business_id\": 12,\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/gateways","description":"<p>Creates a gateway in a business. The caller must be the creator or a member of the business. The server sets <code>creator_id</code> to the caller and <code>licensed</code> to false.</p>\n<p>For a fiat type (Stripe, PayPal, Woovi), the country of the business must offer the type, or the server returns 409 <code>not_offered</code>. This call does not save <code>config_secret</code>. Send the secret settings after creation with <code>PUT /api/gateways/:id</code>.</p>\n<p>For a crypto type, you can create the gateway without <code>address</code>. Such a gateway is a draft. Deploy the gateway contract from the merchant wallet, then send the contract address with <code>PUT /api/gateways/:id</code> (V1).</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The display name of the gateway.</td>\n</tr>\n<tr>\n<td><code>gateway.type_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The gateway type id from <code>GET /api/gateway_types</code>.</td>\n</tr>\n<tr>\n<td><code>gateway.business_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The business that owns the gateway.</td>\n</tr>\n<tr>\n<td><code>gateway.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>Store ids to link to the gateway. The server ignores ids of stores that the caller cannot access.</td>\n</tr>\n<tr>\n<td><code>gateway.address</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The contract address of an already deployed crypto gateway. Must be unique.</td>\n</tr>\n<tr>\n<td><code>gateway.gateway_version_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Optional. Leave it out for a standard gateway.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The new gateway. Same fields as an item of <code>GET /api/gateways</code>. The <code>Location</code> header has the gateway URL.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not its creator or a member.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The fiat type is not offered in the country of the business (<code>code: not_offered</code>).</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A required field is missing, or the address is already in use. The body has <code>\"type\": \"gateway\"</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"7a4d72f9-6820-4967-9fd4-b1cbbf2604c6","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"type_id\": 3,\n        \"business_id\": 12,\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/gateways"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 81,\n        \"name\": \"Card and Pix\",\n        \"address\": null,\n        \"licensed\": false,\n        \"license_status\": \"invalid\",\n        \"creator_id\": 12,\n        \"is_system\": false,\n        \"version\": null,\n        \"type\": {\n            \"id\": 3,\n            \"identifier\": \"stripe\",\n            \"label\": \"Stripe\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        },\n        \"config\": {\n            \"payment_methods\": [],\n            \"configured\": false\n        },\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Main Store\"\n            }\n        ]\n    }\n}"},{"id":"5c5d0065-98f0-415b-99c1-fc3f24984c62","name":"409 Rail not offered","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"type_id\": 3,\n        \"business_id\": 12,\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/gateways"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"code\": \"not_offered\",\n    \"message\": \"Woovi (Pix) is not offered in this business's country\"\n}"}],"_postman_id":"e3d7f543-1682-4d50-a1fb-4d6b46f1f477"},{"name":"update","id":"c634695e-0039-4bfb-9896-bebbfb3f173d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"config_secret\": {\n            \"payment_methods\": [\n                \"card\",\n                \"pix\"\n            ]\n        },\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/gateways/:id","description":"<p>Changes the name, the contract address, the secret settings or the linked stores of a gateway. Only the creator of the gateway can call it. <code>PATCH</code> on the same path does the same thing. A system gateway with an address cannot change (404).</p>\n<p>The content of <code>config_secret</code> depends on the type:</p>\n<ul>\n<li><code>stripe</code>: <code>payment_methods</code>, a non-empty list of <code>card</code>, <code>us_bank_account</code>, <code>boleto</code>, <code>pix</code>.</li>\n<li><code>paypal</code>: <code>client_id</code> and <code>client_secret</code>.</li>\n<li><code>woovi</code>: <code>app_id</code>, or send <code>woovi_linked: true</code> to use the Woovi account that is linked to the business.</li>\n<li>Crypto types do not accept <code>config_secret</code>.</li>\n</ul>\n<p>CAUTION: <code>stores</code> replaces the full list of linked stores. If you do not send <code>stores</code>, the server removes all store links. Always send the full list.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The gateway id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The new display name. It cannot be empty.</td>\n</tr>\n<tr>\n<td><code>gateway.address</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The contract address after you deploy a V1 crypto gateway.</td>\n</tr>\n<tr>\n<td><code>gateway.config_secret</code></td>\n<td><code>object</code></td>\n<td>no</td>\n<td>The secret settings for a fiat gateway. See the list above.</td>\n</tr>\n<tr>\n<td><code>gateway.woovi_linked</code></td>\n<td><code>boolean</code></td>\n<td>no</td>\n<td>Woovi only. <code>true</code> uses the Woovi account linked to the business. <code>false</code> clears the linked setting.</td>\n</tr>\n<tr>\n<td><code>gateway.stores</code></td>\n<td><code>array</code></td>\n<td>no</td>\n<td>The full list of store ids to link. See the caution above.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The updated gateway. Same fields as an item of <code>GET /api/gateways</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The gateway does not exist, the caller did not create it, or it is a system gateway with an address.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>config_secret</code> is not valid for the type, or the address is already in use.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"257149c5-0bff-487c-897b-c49213e3c3a9","description":{"content":"<p>The gateway id.</p>\n","type":"text/plain"},"type":"any","value":"81","key":"id"}]}},"response":[{"id":"4b2890ce-40dd-450e-bee9-ae90259f03e1","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"config_secret\": {\n            \"payment_methods\": [\n                \"card\",\n                \"pix\"\n            ]\n        },\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/gateways/:id","host":["https://api.liberpay.com"],"path":["api","gateways",":id"],"variable":[{"key":"id","value":"81","description":"The gateway id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 81,\n        \"name\": \"Card and Pix\",\n        \"address\": null,\n        \"licensed\": false,\n        \"license_status\": \"invalid\",\n        \"creator_id\": 12,\n        \"is_system\": false,\n        \"version\": null,\n        \"type\": {\n            \"id\": 3,\n            \"identifier\": \"stripe\",\n            \"label\": \"Stripe\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        },\n        \"config\": {\n            \"payment_methods\": [\n                \"card\",\n                \"pix\"\n            ],\n            \"configured\": true\n        },\n        \"stores\": [\n            {\n                \"id\": 5,\n                \"name\": \"Main Store\"\n            }\n        ]\n    }\n}"},{"id":"22abba84-f1db-4ccd-8509-31bdd9e4d622","name":"422 Invalid settings","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway\": {\n        \"name\": \"Card and Pix\",\n        \"config_secret\": {\n            \"payment_methods\": [\n                \"card\",\n                \"pix\"\n            ]\n        },\n        \"stores\": [\n            5\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/gateways/:id","host":["https://api.liberpay.com"],"path":["api","gateways",":id"],"variable":[{"key":"id","value":"81","description":"The gateway id."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"config_secret\": [\n            \"Invalid payment methods: crypto\"\n        ]\n    }\n}"}],"_postman_id":"c634695e-0039-4bfb-9896-bebbfb3f173d"},{"name":"delete","id":"3e376760-bf8e-493e-ab7e-4fc298133055","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/gateways/:id","description":"<p>Deletes a gateway and its store links. Only the creator of the gateway can call it. A system gateway with an address cannot be deleted. This call does not change the contract on chain.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The gateway id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The gateway does not exist, the caller did not create it, or it is a system gateway with an address.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"cddf91cc-b73e-415a-aecd-af6943ae6f54","description":{"content":"<p>The gateway id.</p>\n","type":"text/plain"},"type":"any","value":"81","key":"id"}]}},"response":[{"id":"c300b6cd-5c81-464d-8bbc-3a4c4c297fb6","name":"204 No Content","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:id","host":["https://api.liberpay.com"],"path":["api","gateways",":id"],"variable":[{"key":"id","value":"81","description":"The gateway id."}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"3e376760-bf8e-493e-ab7e-4fc298133055"}],"id":"105abd20-ef3e-4a4e-884c-73872db6020c","description":"<p>A gateway is the payment rail that receives the money for a charge. Each gateway belongs to one business and links to one or more stores. A gateway has a type (<code>GET /api/gateway_types</code>): a crypto type (for example <code>polygon</code>, platform <code>evm</code>) uses a gateway smart contract at <code>address</code>, and a fiat type (<code>stripe</code>, <code>paypal</code>, <code>woovi</code>) uses the secret settings in <code>config_secret</code>.</p>\n<p>A crypto gateway must be licensed before it can take payments. The fee account of the business pays for the license (see the <code>fee accounts</code> folder).</p>\n","_postman_id":"105abd20-ef3e-4a4e-884c-73872db6020c","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"fee accounts","item":[{"name":"get","id":"3a4747e1-f335-4d52-a01a-12cb1c0539f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/fee_accounts/:id","description":"<p>Returns a fee account with its current balance. The caller must be the creator or a member of the business. The server adds all transactions since the last saved balance. <code>balance</code> is in USD. <code>balance_fiat</code> is the same value in the <code>currency</code> query parameter, or in the default currency of the country of the business.</p>\n<p>The response has no <code>data</code> wrapper. You find the fee account id in the business (<code>fee_account.id</code>).</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>currency</code></td>\n<td>no</td>\n<td>Optional. The fiat currency symbol for <code>balance_fiat</code>. Default: the default currency of the country of the business, or <code>USD</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>integer</code></td>\n<td>The fee account id.</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td><code>object</code></td>\n<td>The current balance in USD: <code>currency</code> and <code>amount</code> (a decimal string). It can be negative.</td>\n</tr>\n<tr>\n<td><code>balance_fiat</code></td>\n<td><code>object</code></td>\n<td>The balance in the display currency: <code>currency</code> and <code>amount</code>.</td>\n</tr>\n<tr>\n<td><code>business_id</code></td>\n<td><code>integer</code></td>\n<td>The business of the fee account.</td>\n</tr>\n<tr>\n<td><code>recharge_at</code></td>\n<td><code>integer|null</code></td>\n<td>Automatic recharge threshold, in whole units of the default currency of the business country.</td>\n</tr>\n<tr>\n<td><code>recharge_amount</code></td>\n<td><code>integer|null</code></td>\n<td>Automatic recharge amount, in whole units of the default currency of the business country.</td>\n</tr>\n<tr>\n<td><code>freebies</code></td>\n<td><code>integer|null</code></td>\n<td>The number of charges left that do not pay a fee.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The fee account does not exist, or the caller is not a creator or member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. The fiat currency symbol for <code>balance_fiat</code>. Default: the default currency of the country of the business, or <code>USD</code>.</p>\n","type":"text/plain"},"key":"currency","value":"BRL"}],"variable":[{"id":"7a22ec81-3892-4fcb-9991-dc434b3415b3","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"5b1e1b78-42e1-4898-9b01-61d4d420c32a","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id"],"query":[{"key":"currency","value":"BRL","description":"Optional. The fiat currency symbol for `balance_fiat`. Default: the default currency of the country of the business, or `USD`.","disabled":true}],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 8,\n    \"name\": \"default\",\n    \"balance\": {\n        \"currency\": \"USD\",\n        \"amount\": \"2.25\"\n    },\n    \"balance_fiat\": {\n        \"currency\": \"BRL\",\n        \"amount\": \"12.38\"\n    },\n    \"business_id\": 12,\n    \"recharge_at\": 10,\n    \"recharge_amount\": 50,\n    \"freebies\": 97\n}"},{"id":"d405504a-6998-498a-abdf-bdb1d517f546","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id"],"query":[{"key":"currency","value":"BRL","description":"Optional. The fiat currency symbol for `balance_fiat`. Default: the default currency of the country of the business, or `USD`.","disabled":true}],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"3a4747e1-f335-4d52-a01a-12cb1c0539f0"},{"name":"create","id":"915540fd-3920-4daf-b82b-0d48ee958ebb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fee_account\": {\n        \"name\": \"default\",\n        \"business_id\": 12,\n        \"recharge_at\": 10,\n        \"recharge_amount\": 50\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts","description":"<p>Creates the fee account of a business. The caller must be the creator or a member of the business. A business can have only one fee account. The server sets the balance to 0 USD and gives the default number of free transactions (<code>freebies</code>).</p>\n<p>Normal onboarding already makes the fee account. Use this call only when a business does not have one.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fee_account.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>A name for the fee account.</td>\n</tr>\n<tr>\n<td><code>fee_account.business_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The business of the fee account.</td>\n</tr>\n<tr>\n<td><code>fee_account.recharge_at</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Automatic recharge threshold, in whole units of the default currency of the business country.</td>\n</tr>\n<tr>\n<td><code>fee_account.recharge_amount</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Automatic recharge amount, in whole units of the default currency of the business country.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The new fee account id.</td>\n</tr>\n<tr>\n<td><code>data.freebies</code></td>\n<td><code>integer|null</code></td>\n<td>The free transactions that the account starts with.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The business does not exist, or the caller is not its creator or a member.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>name</code> or <code>business_id</code> is missing, or the business already has a fee account.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"aa132b90-717c-41bb-ab2d-d85f11ee7e24","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fee_account\": {\n        \"name\": \"default\",\n        \"business_id\": 12,\n        \"recharge_at\": 10,\n        \"recharge_amount\": 50\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 8,\n        \"name\": \"default\",\n        \"business_id\": 12,\n        \"recharge_at\": 10,\n        \"recharge_amount\": 50,\n        \"freebies\": 100\n    }\n}"},{"id":"ff5d5040-da60-4033-8cf5-cb211f82e6d8","name":"422 Already exists","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fee_account\": {\n        \"name\": \"default\",\n        \"business_id\": 12,\n        \"recharge_at\": 10,\n        \"recharge_amount\": 50\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"business_id\": [\n            \"Fee account for this business already exists\"\n        ]\n    }\n}"}],"_postman_id":"915540fd-3920-4daf-b82b-0d48ee958ebb"},{"name":"update","id":"e9ff1d37-557b-4b11-8868-517157bf5898","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fee_account\": {\n        \"name\": \"default\",\n        \"recharge_at\": 20,\n        \"recharge_amount\": 100\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts/:id","description":"<p>Changes the name and the automatic recharge settings of a fee account. The caller must be the creator or a member of the business. You cannot change the balance, the business or <code>freebies</code>. <code>PATCH</code> on the same path does the same thing.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fee_account.name</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>The new name. It cannot be empty.</td>\n</tr>\n<tr>\n<td><code>fee_account.recharge_at</code></td>\n<td><code>integer|null</code></td>\n<td>no</td>\n<td>The automatic recharge threshold. Null turns off automatic recharge.</td>\n</tr>\n<tr>\n<td><code>fee_account.recharge_amount</code></td>\n<td><code>integer|null</code></td>\n<td>no</td>\n<td>The automatic recharge amount. Null turns off automatic recharge.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object</code></td>\n<td>The updated fee account, without the balance. Use <code>GET /api/fee_accounts/:id</code> for the balance.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The fee account does not exist, or the caller is not a creator or member of its business.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>name</code> is empty.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"aa92a7c3-0480-4c58-a653-52be0d49057f","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"b6239a6e-ed37-4aa8-9368-5a5043ce9b3b","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"fee_account\": {\n        \"name\": \"default\",\n        \"recharge_at\": 20,\n        \"recharge_amount\": 100\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id"],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 8,\n        \"name\": \"default\",\n        \"business_id\": 12,\n        \"recharge_at\": 20,\n        \"recharge_amount\": 100,\n        \"freebies\": 97\n    }\n}"}],"_postman_id":"e9ff1d37-557b-4b11-8868-517157bf5898"},{"name":"transactions","id":"260ca771-9ec4-42d0-bece-1a12d1578186","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/fee_accounts/:id/transactions","description":"<p>Returns all credits and debits of a fee account, oldest first. The caller must be the creator or a member of the business. <code>type</code> 1 is a credit (USDC transfer or card recharge). <code>type</code> 2 is a fee debit for a charge.</p>\n<p><code>amount</code> is in USDC base units (6 decimals) as a string. <code>amount_fiat</code> is the same value in the <code>currency</code> query parameter, or in the default currency of the country of the business. The response is a plain array with no <code>data</code> wrapper.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>currency</code></td>\n<td>no</td>\n<td>Optional. The fiat currency symbol for <code>amount_fiat</code>. Default: the default currency of the country of the business, or <code>USD</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>[].type</code></td>\n<td><code>integer</code></td>\n<td><code>1</code> credit, <code>2</code> fee debit.</td>\n</tr>\n<tr>\n<td><code>[].amount</code></td>\n<td><code>string</code></td>\n<td>The amount in USDC base units (6 decimals).</td>\n</tr>\n<tr>\n<td><code>[].amount_fiat</code></td>\n<td><code>object</code></td>\n<td>The amount in the display currency: <code>currency</code> and <code>amount</code>.</td>\n</tr>\n<tr>\n<td><code>[].currency</code></td>\n<td><code>object</code></td>\n<td>The currency of the record, with its type and platform.</td>\n</tr>\n<tr>\n<td><code>[].charge</code></td>\n<td><code>object|null</code></td>\n<td>For a fee debit: the charge (<code>id</code>, <code>shortcode</code>).</td>\n</tr>\n<tr>\n<td><code>[].charge_token</code></td>\n<td><code>object|null</code></td>\n<td>For a fee on a receipt token: <code>id</code>, <code>charge_id</code>, <code>token_id</code>.</td>\n</tr>\n<tr>\n<td><code>[].data</code></td>\n<td><code>object|null</code></td>\n<td>For a USDC credit: the blockchain transaction (<code>identifier</code> is the hash, <code>from</code>, <code>to</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The fee account does not exist, or the caller is not a creator or member of its business.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id","transactions"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. The fiat currency symbol for <code>amount_fiat</code>. Default: the default currency of the country of the business, or <code>USD</code>.</p>\n","type":"text/plain"},"key":"currency","value":"BRL"}],"variable":[{"id":"7772bb8f-e065-4858-bff3-33064cd1517d","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"d7f93796-5310-49e1-8ebc-076c44949656","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id/transactions","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id","transactions"],"query":[{"key":"currency","value":"BRL","description":"Optional. The fiat currency symbol for `amount_fiat`. Default: the default currency of the country of the business, or `USD`.","disabled":true}],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 541,\n        \"currency\": {\n            \"id\": 2,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            }\n        },\n        \"type\": 1,\n        \"amount\": \"20000000\",\n        \"amount_fiat\": {\n            \"currency\": \"BRL\",\n            \"amount\": \"110.40\"\n        },\n        \"charge\": null,\n        \"charge_token\": null,\n        \"data\": {\n            \"id\": 902,\n            \"identifier\": \"0x9e8d7c6b5a493827160f5e4d3c2b1a0998877665544332211aabbccddeeff00\",\n            \"from\": \"0x1111111111111111111111111111111111111111\",\n            \"to\": \"0x3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n            \"confirmations\": 1,\n            \"inserted_at\": \"2026-10-01T12:00:00\"\n        },\n        \"inserted_at\": \"2026-10-01T12:00:05\",\n        \"updated_at\": \"2026-10-01T12:00:05\"\n    },\n    {\n        \"id\": 542,\n        \"currency\": {\n            \"id\": 2,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            }\n        },\n        \"type\": 2,\n        \"amount\": \"35000\",\n        \"amount_fiat\": {\n            \"currency\": \"BRL\",\n            \"amount\": \"0.19\"\n        },\n        \"charge\": {\n            \"id\": 231,\n            \"shortcode\": \"aB3dE9\"\n        },\n        \"charge_token\": null,\n        \"data\": null,\n        \"inserted_at\": \"2026-10-03T09:15:00\",\n        \"updated_at\": \"2026-10-03T09:15:00\"\n    }\n]"}],"_postman_id":"260ca771-9ec4-42d0-bece-1a12d1578186"},{"name":"reportTransfer","id":"49a3088a-1351-4130-aa49-7e2b2140f19b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"chain\": \"polygon\",\n        \"address\": \"0x1111111111111111111111111111111111111111\",\n        \"nonce\": 42,\n        \"identifier\": \"0x9e8d7c6b5a493827160f5e4d3c2b1a0998877665544332211aabbccddeeff00\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts/:id/transactions","description":"<p>Reports a USDC transfer that adds credit to a fee account. The caller must be the creator or a member of the business. The server queues a job that starts after 15 seconds and tries again while the transaction is not mined.</p>\n<p>The job accepts the transfer only when it comes from the wallet of the business creator and goes to the Liberpay fee address. Then it records a credit and checks the license of all crypto gateways of the business on that chain.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>transaction.chain</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The chain identifier, for example <code>polygon</code>.</td>\n</tr>\n<tr>\n<td><code>transaction.address</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The wallet that sent the USDC. It must be the wallet of the business creator.</td>\n</tr>\n<tr>\n<td><code>transaction.nonce</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The nonce of the transfer transaction.</td>\n</tr>\n<tr>\n<td><code>transaction.identifier</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The transaction hash.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td><code>job created</code>. The credit appears later in <code>GET /api/fee_accounts/:id/transactions</code>.</td>\n</tr>\n<tr>\n<td><code>job.id</code></td>\n<td><code>integer</code></td>\n<td>The id of the background job.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>A field of <code>transaction</code> is missing.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The fee account does not exist, or the caller is not a creator or member of its business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The server could not queue the job.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id","transactions"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"9f648645-39fb-4dd5-839c-49f4632c9072","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"88d12d46-36f3-4bb2-98ff-84f29ab3235e","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"transaction\": {\n        \"chain\": \"polygon\",\n        \"address\": \"0x1111111111111111111111111111111111111111\",\n        \"nonce\": 42,\n        \"identifier\": \"0x9e8d7c6b5a493827160f5e4d3c2b1a0998877665544332211aabbccddeeff00\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id/transactions","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id","transactions"],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"job created\",\n    \"job\": {\n        \"id\": 88123\n    }\n}"}],"_postman_id":"49a3088a-1351-4130-aa49-7e2b2140f19b"},{"name":"licenseGateway","id":"b344b648-5f7e-47bf-95cf-9943553dea99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway_id\": 73\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts/:id/gateways","description":"<p>Queues a license check for one crypto gateway. The caller must be a creator or member of the business of the fee account and of the business of the gateway.</p>\n<p>The job reads the license of the gateway on the receipt contract. If the fee account balance is zero or more and the gateway is not licensed, it sends a transaction that licenses the gateway. If the balance is negative and the gateway is licensed, it removes the license. Use this call after you deploy a V1 gateway, or to check the license again.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The id of the crypto gateway to license.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>message</code></td>\n<td><code>string</code></td>\n<td><code>job created</code>. Read <code>licensed</code> and <code>license_status</code> in <code>GET /api/gateways</code> to see the result.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>The body has no <code>gateway_id</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The fee account or the gateway does not exist, or the caller cannot access one of them.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>The server could not queue the job.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id","gateways"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"c24cdf86-bd96-4016-b03b-7a74e52fa276","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"57293ff1-1849-4ffc-abc6-1f0a214d3399","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"gateway_id\": 73\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id/gateways","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id","gateways"],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"job created\"\n}"}],"_postman_id":"b344b648-5f7e-47bf-95cf-9943553dea99"},{"name":"rechargeCard","id":"ddcf87e7-41d5-43d5-a6cd-d4ca5d1a4d22","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 5000\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/fee_accounts/:id/recharge_card","description":"<p>Charges the saved Stripe card of the business and adds the value to the fee account. The caller must be the creator or a member of the business. The business must have a Stripe customer with a default payment method.</p>\n<p><code>amount</code> is an integer in cents of the default currency of the country of the business (for example BRL cents in Brazil). The server converts the paid value to USDC, records a credit, and issues the nota fiscal when the business has a nota fiscal profile.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The fee account id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>amount</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The amount in cents of the default currency of the business country.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td><code>ok</code> when the card payment succeeded and the credit is recorded.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The fee account does not exist, or the caller is not a creator or member of its business.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Stripe did not create or confirm the payment. The message is always <code>intent failed to create</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","fee_accounts",":id","recharge_card"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"d5a6c171-0929-4fed-a895-1d38a2e98ea8","description":{"content":"<p>The fee account id.</p>\n","type":"text/plain"},"type":"any","value":"8","key":"id"}]}},"response":[{"id":"baa2a187-c6c0-498e-9a13-75b2591c25c7","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 5000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id/recharge_card","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id","recharge_card"],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"message\": \"intent created and confirmed\"\n}"},{"id":"c8394943-7eb7-4839-9092-2e4bd6ef5c9f","name":"500 Card failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"amount\": 5000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/fee_accounts/:id/recharge_card","host":["https://api.liberpay.com"],"path":["api","fee_accounts",":id","recharge_card"],"variable":[{"key":"id","value":"8","description":"The fee account id."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"intent failed to create\"\n}"}],"_postman_id":"ddcf87e7-41d5-43d5-a6cd-d4ca5d1a4d22"}],"id":"804678b0-a55c-4dc0-b4e5-a8b13c6c5932","description":"<p>A fee account holds the prepaid balance that pays the Liberpay platform fees of one business. Each business has one fee account. The balance is in USD. Each charge with a fee takes a debit from the balance, but first the account uses its free transactions (<code>freebies</code>).</p>\n<p>You add credit in two ways: send USDC from the wallet of the business creator to the Liberpay fee address and report the transaction, or charge the saved Stripe card. When <code>recharge_at</code> and <code>recharge_amount</code> are set and a card is saved, the server recharges the card when the balance goes below <code>recharge_at</code>.</p>\n<p>The balance also controls the license of the crypto gateways. A gateway stays licensed while the balance is zero or more, and loses the license when the balance goes negative.</p>\n","_postman_id":"804678b0-a55c-4dc0-b4e5-a8b13c6c5932","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"sales","item":[{"name":"list","id":"f2c41d04-d1be-41a1-b51a-f459bde62d6a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/sales","description":"<p>Returns the sales of a store in all statuses, newest first, in pages of 250.</p>\n<p>You must be the creator or a member of the business that owns the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The first page is 1. Each page has up to 250 items.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of items in all pages.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size. It is always 250 here.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True if there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the next page, or null.</td>\n</tr>\n<tr>\n<td><code>prev_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the previous page, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>first</code></td>\n<td><code>integer</code></td>\n<td>The position of the first item on this page.</td>\n</tr>\n<tr>\n<td><code>last</code></td>\n<td><code>integer</code></td>\n<td>The position of the last item on this page.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The pay page uses it.</td>\n</tr>\n<tr>\n<td><code>data[].price</code></td>\n<td><code>object</code></td>\n<td>The charge total in fiat: <code>amount</code> (decimal string) and <code>currency</code> (ISO code).</td>\n</tr>\n<tr>\n<td><code>data[].metadata.items</code></td>\n<td><code>array</code></td>\n<td>The line items of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].currency</code></td>\n<td><code>object|null</code></td>\n<td>The crypto currency that the buyer selected. It is null until the buyer selects one.</td>\n</tr>\n<tr>\n<td><code>data[].fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the payment.</td>\n</tr>\n<tr>\n<td><code>data[].store</code></td>\n<td><code>object</code></td>\n<td>The store and its business.</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge.</td>\n</tr>\n<tr>\n<td><code>data[].buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who pays the charge, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payments</code></td>\n<td><code>array</code></td>\n<td>The payments of the charge, each with its blockchain transaction.</td>\n</tr>\n<tr>\n<td><code>data[].refunds</code></td>\n<td><code>array</code></td>\n<td>The refunds of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The charge type: 1 Point of Sale, 2 Invoice, 3 P2P.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>).</td>\n</tr>\n<tr>\n<td><code>data[].viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the caller, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the business, when it is different. Otherwise null.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the store. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>page</code> is not a number.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","sales"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The first page is 1. Each page has up to 250 items.</p>\n","type":"text/plain"},"key":"page","value":"1"}],"variable":[{"id":"3977ea70-9463-49e6-a037-ff535c11929e","description":{"content":"<p>The store id.</p>\n","type":"text/plain"},"type":"any","value":"5","key":"store_id"}]}},"response":[{"id":"227d97c9-85ad-4958-b90b-a24dd20b8e81","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/sales","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","sales"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. Each page has up to 250 items.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 245,\n            \"shortcode\": \"Rt7vN2qLc8XyZpE\",\n            \"hash\": \"0x9f3c1e7a2b4d6f8091a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f7081\",\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 41,\n                        \"name\": \"Vela aromática\",\n                        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n                        \"quantity\": 2,\n                        \"is_physical\": true,\n                        \"taxable\": false,\n                        \"price\": {\n                            \"amount\": \"39.90\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        }\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"79.80\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"14250000\",\n            \"exchange_rate\": \"5.600000000000000000\",\n            \"expires_at\": \"2026-10-21T15:10:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Loja Centro USDC\",\n                \"address\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 17,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Loja Centro\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 3,\n                    \"name\": \"Velas da Ana\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 17,\n                \"username\": \"seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x2b5ad5c4795c026514f8317c7a215e218dccd6cf\"\n            },\n            \"buyer\": {\n                \"id\": 52,\n                \"username\": \"buyer\",\n                \"email\": \"steve+buyer@example.com\",\n                \"address\": \"0x8d12a197cb00d4747a1fe03395095ce2a5cc6819\"\n            },\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x0000000000000000000000000000000000c0ffee\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [\n                {\n                    \"id\": 310,\n                    \"amount\": \"14250000\",\n                    \"currency\": {\n                        \"id\": 3,\n                        \"name\": \"USD Coin\",\n                        \"symbol\": \"USDC\",\n                        \"decimals\": 6,\n                        \"address\": \"0x0000000000000000000000000000000000c0ffee\",\n                        \"supported\": true\n                    },\n                    \"transaction\": {\n                        \"id\": 501,\n                        \"identifier\": \"0x4c7e2a9b1d3f5e7091a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f7a1b\",\n                        \"from\": \"0x8d12a197cb00d4747a1fe03395095ce2a5cc6819\",\n                        \"to\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                        \"confirmations\": 12,\n                        \"inserted_at\": \"2026-10-21T15:06:02\"\n                    },\n                    \"reference\": null\n                }\n            ],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 1,\n                \"label\": \"Point of Sale\"\n            },\n            \"status\": {\n                \"id\": 3,\n                \"label\": \"confirmed\"\n            },\n            \"inserted_at\": \"2026-10-21T15:05:00\",\n            \"updated_at\": \"2026-10-21T15:06:30\"\n        }\n    ]\n}"},{"id":"832898a9-86b0-44f4-aa02-32d6d19eda65","name":"404 Not a member","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/sales","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","sales"],"query":[{"key":"page","value":"1","description":"The page number. The first page is 1. Each page has up to 250 items.","disabled":true}],"variable":[{"key":"store_id","value":"5","description":"The store id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"f2c41d04-d1be-41a1-b51a-f459bde62d6a"},{"name":"listGateway","id":"b2e5171e-68fd-421b-9b31-c0be15fd2708","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateways/:gateway_id/sales","description":"<p>Returns the sales paid to a gateway in all statuses, newest first.</p>\n<p>You must be the creator or a member of the business that owns the gateway. This endpoint returns only the first page of 250 items. It has no <code>page</code> parameter.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>gateway_id</code></td>\n<td>The gateway id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of items in all pages.</td>\n</tr>\n<tr>\n<td><code>per_page</code></td>\n<td><code>integer</code></td>\n<td>The page size. It is always 250 here.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True if there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the next page, or null.</td>\n</tr>\n<tr>\n<td><code>prev_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the previous page, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>first</code></td>\n<td><code>integer</code></td>\n<td>The position of the first item on this page.</td>\n</tr>\n<tr>\n<td><code>last</code></td>\n<td><code>integer</code></td>\n<td>The position of the last item on this page.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. The pay page uses it.</td>\n</tr>\n<tr>\n<td><code>data[].price</code></td>\n<td><code>object</code></td>\n<td>The charge total in fiat: <code>amount</code> (decimal string) and <code>currency</code> (ISO code).</td>\n</tr>\n<tr>\n<td><code>data[].metadata.items</code></td>\n<td><code>array</code></td>\n<td>The line items of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].currency</code></td>\n<td><code>object|null</code></td>\n<td>The crypto currency that the buyer selected. It is null until the buyer selects one.</td>\n</tr>\n<tr>\n<td><code>data[].fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The fiat currency of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].gateway</code></td>\n<td><code>object</code></td>\n<td>The gateway that receives the payment.</td>\n</tr>\n<tr>\n<td><code>data[].store</code></td>\n<td><code>object</code></td>\n<td>The store and its business.</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge.</td>\n</tr>\n<tr>\n<td><code>data[].buyer</code></td>\n<td><code>object|null</code></td>\n<td>The user who pays the charge, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payments</code></td>\n<td><code>array</code></td>\n<td>The payments of the charge, each with its blockchain transaction.</td>\n</tr>\n<tr>\n<td><code>data[].refunds</code></td>\n<td><code>array</code></td>\n<td>The refunds of the charge.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The charge type: 1 Point of Sale, 2 Invoice, 3 P2P.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>).</td>\n</tr>\n<tr>\n<td><code>data[].viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the caller, when it is different. Otherwise null.</td>\n</tr>\n<tr>\n<td><code>data[].business_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The amounts in the fiat currency of the business, when it is different. Otherwise null.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the gateway. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The gateway does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","gateways",":gateway_id","sales"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"0917c5cc-f590-47c3-b8ca-56947c82298a","description":{"content":"<p>The gateway id.</p>\n","type":"text/plain"},"type":"any","value":"73","key":"gateway_id"}]}},"response":[{"id":"de083a51-3456-46bb-87c6-aedbc935db22","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/gateways/:gateway_id/sales","host":["https://api.liberpay.com"],"path":["api","gateways",":gateway_id","sales"],"variable":[{"key":"gateway_id","value":"73","description":"The gateway id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 245,\n            \"shortcode\": \"Rt7vN2qLc8XyZpE\",\n            \"hash\": \"0x9f3c1e7a2b4d6f8091a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f7081\",\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": 41,\n                        \"name\": \"Vela aromática\",\n                        \"description\": \"Vela de cera de soja com aroma de lavanda.\",\n                        \"quantity\": 2,\n                        \"is_physical\": true,\n                        \"taxable\": false,\n                        \"price\": {\n                            \"amount\": \"39.90\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total\": {\n                            \"amount\": \"79.80\",\n                            \"currency\": \"BRL\"\n                        }\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"79.80\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"14250000\",\n            \"exchange_rate\": \"5.600000000000000000\",\n            \"expires_at\": \"2026-10-21T15:10:00Z\",\n            \"gateway\": {\n                \"id\": 73,\n                \"name\": \"Loja Centro USDC\",\n                \"address\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 17,\n                \"is_system\": false,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 5,\n                \"name\": \"Loja Centro\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 3,\n                    \"name\": \"Velas da Ana\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 17,\n                \"username\": \"seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x2b5ad5c4795c026514f8317c7a215e218dccd6cf\"\n            },\n            \"buyer\": {\n                \"id\": 52,\n                \"username\": \"buyer\",\n                \"email\": \"steve+buyer@example.com\",\n                \"address\": \"0x8d12a197cb00d4747a1fe03395095ce2a5cc6819\"\n            },\n            \"currency\": {\n                \"id\": 3,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x0000000000000000000000000000000000c0ffee\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [\n                {\n                    \"id\": 310,\n                    \"amount\": \"14250000\",\n                    \"currency\": {\n                        \"id\": 3,\n                        \"name\": \"USD Coin\",\n                        \"symbol\": \"USDC\",\n                        \"decimals\": 6,\n                        \"address\": \"0x0000000000000000000000000000000000c0ffee\",\n                        \"supported\": true\n                    },\n                    \"transaction\": {\n                        \"id\": 501,\n                        \"identifier\": \"0x4c7e2a9b1d3f5e7091a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f7a1b\",\n                        \"from\": \"0x8d12a197cb00d4747a1fe03395095ce2a5cc6819\",\n                        \"to\": \"0x5e1f0000000000000000000000000000000a11ce\",\n                        \"confirmations\": 12,\n                        \"inserted_at\": \"2026-10-21T15:06:02\"\n                    },\n                    \"reference\": null\n                }\n            ],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 1,\n                \"label\": \"Point of Sale\"\n            },\n            \"status\": {\n                \"id\": 3,\n                \"label\": \"confirmed\"\n            },\n            \"inserted_at\": \"2026-10-21T15:05:00\",\n            \"updated_at\": \"2026-10-21T15:06:30\"\n        }\n    ]\n}"}],"_postman_id":"b2e5171e-68fd-421b-9b31-c0be15fd2708"}],"id":"abbf712b-863e-4455-908f-870c0fdff4da","description":"<p>A sale is a point-of-sale charge (<code>charge_type_id</code> 1). These endpoints list the sales of a store or of a gateway, newest first. Each item is the same charge object that <code>GET /api/charges/:id</code> returns. Invoices and P2P charges are not in these lists. You must be the creator or a member of the business.</p>\n","_postman_id":"abbf712b-863e-4455-908f-870c0fdff4da","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"events","item":[{"name":"list","id":"b8746f85-4f62-438e-8670-85c3c7502d37","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/events/:type/:id","description":"<p>Returns the events of the invoice of a charge, oldest first. Give the charge shortcode in <code>id</code>, not the invoice id.</p>\n<p>You must be the creator or a member of the business that owns the charge.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>The event type. The only value that the API accepts is <code>charge.invoice</code>.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>The shortcode of an invoice charge.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The event id.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>string</code></td>\n<td>The record type. It is <code>invoice</code>.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>What happened: <code>approved</code>, <code>sent</code>, <code>viewed</code> or <code>marked_paid</code>.</td>\n</tr>\n<tr>\n<td><code>data[].identifier</code></td>\n<td><code>integer</code></td>\n<td>The invoice id.</td>\n</tr>\n<tr>\n<td><code>data[].meta</code></td>\n<td><code>object</code></td>\n<td>Extra data. For <code>sent</code> it is <code>{\"type\":\"email\"}</code>.</td>\n</tr>\n<tr>\n<td><code>data[].inserted_at</code></td>\n<td><code>string</code></td>\n<td>The time of the event (UTC).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not the creator or a member of the business that owns the charge. The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>type</code> is not <code>charge.invoice</code>, or the charge is not an invoice.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","events",":type",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"1e9301d7-2ba5-4420-a89e-f5fa4d88d61b","description":{"content":"<p>The event type. The only value that the API accepts is <code>charge.invoice</code>.</p>\n","type":"text/plain"},"type":"any","value":"charge.invoice","key":"type"},{"id":"bcce8295-6da5-487d-957e-3e053db84e32","description":{"content":"<p>The shortcode of an invoice charge.</p>\n","type":"text/plain"},"type":"any","value":"k3Hq9ZxT2mPbLwA","key":"id"}]}},"response":[{"id":"003b36f2-9976-4965-8f0c-e87c3dc99e9b","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/events/:type/:id","host":["https://api.liberpay.com"],"path":["api","events",":type",":id"],"variable":[{"key":"type","value":"charge.invoice","description":"The event type. The only value that the API accepts is `charge.invoice`."},{"key":"id","value":"k3Hq9ZxT2mPbLwA","description":"The shortcode of an invoice charge."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 880,\n            \"type\": \"invoice\",\n            \"name\": \"approved\",\n            \"identifier\": 94,\n            \"meta\": {},\n            \"inserted_at\": \"2026-10-20T14:05:40\",\n            \"updated_at\": \"2026-10-20T14:05:40\"\n        },\n        {\n            \"id\": 881,\n            \"type\": \"invoice\",\n            \"name\": \"sent\",\n            \"identifier\": 94,\n            \"meta\": {\n                \"type\": \"email\"\n            },\n            \"inserted_at\": \"2026-10-20T14:05:42\",\n            \"updated_at\": \"2026-10-20T14:05:42\"\n        },\n        {\n            \"id\": 890,\n            \"type\": \"invoice\",\n            \"name\": \"viewed\",\n            \"identifier\": 94,\n            \"meta\": {},\n            \"inserted_at\": \"2026-10-21T09:12:03\",\n            \"updated_at\": \"2026-10-21T09:12:03\"\n        }\n    ]\n}"}],"_postman_id":"b8746f85-4f62-438e-8670-85c3c7502d37"},{"name":"create","id":"306882dd-cc60-426c-9921-cb9cf6da79a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"event\": {\n        \"id\": \"k3Hq9ZxT2mPbLwA\",\n        \"name\": \"viewed\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/events/:type","description":"<p>Records a <code>viewed</code> event on the invoice of a charge. The only allowed <code>event.name</code> is <code>viewed</code>. Any signed-in user can call it.</p>\n<p>The charge must have status 1 (created). The response is the new event object, not wrapped in <code>data</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>type</code></td>\n<td>The event type. The only value that the API accepts is <code>charge.invoice</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>event.id</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The shortcode of an invoice charge.</td>\n</tr>\n<tr>\n<td><code>event.name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>Must be <code>viewed</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td><code>integer</code></td>\n<td>The event id.</td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td><code>string</code></td>\n<td>The record type. It is <code>invoice</code>.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>What happened: <code>approved</code>, <code>sent</code>, <code>viewed</code> or <code>marked_paid</code>.</td>\n</tr>\n<tr>\n<td><code>identifier</code></td>\n<td><code>integer</code></td>\n<td>The invoice id.</td>\n</tr>\n<tr>\n<td><code>meta</code></td>\n<td><code>object</code></td>\n<td>Extra data. For <code>sent</code> it is <code>{\"type\":\"email\"}</code>.</td>\n</tr>\n<tr>\n<td><code>inserted_at</code></td>\n<td><code>string</code></td>\n<td>The time of the event (UTC).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>The charge status is not 1 (created). The body is <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The charge does not exist. The body is <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>event.name</code> is not <code>viewed</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td><code>type</code> is not <code>charge.invoice</code>, or the charge is not an invoice.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","events",":type"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"2b3c4e09-ad7b-4133-b100-57fca7fba47b","description":{"content":"<p>The event type. The only value that the API accepts is <code>charge.invoice</code>.</p>\n","type":"text/plain"},"type":"any","value":"charge.invoice","key":"type"}]}},"response":[{"id":"5abce56f-c3ea-4a19-b68a-abd9a9983591","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"event\": {\n        \"id\": \"k3Hq9ZxT2mPbLwA\",\n        \"name\": \"viewed\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/events/:type","host":["https://api.liberpay.com"],"path":["api","events",":type"],"variable":[{"key":"type","value":"charge.invoice","description":"The event type. The only value that the API accepts is `charge.invoice`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 890,\n    \"type\": \"invoice\",\n    \"name\": \"viewed\",\n    \"identifier\": 94,\n    \"meta\": {},\n    \"inserted_at\": \"2026-10-21T09:12:03\",\n    \"updated_at\": \"2026-10-21T09:12:03\"\n}"}],"_postman_id":"306882dd-cc60-426c-9921-cb9cf6da79a8"}],"id":"81773602-c19e-427f-8460-0d90c42c13f8","description":"<p>An event records one action on an invoice. The API writes these events: <code>approved</code> (approve), <code>sent</code> (send, and approved invoices at create), <code>marked_paid</code> (mark as paid) and <code>viewed</code>. Use these endpoints to show the history of an invoice. The only <code>type</code> value that the code accepts is <code>charge.invoice</code>. The <code>id</code> in these endpoints is the charge shortcode.</p>\n","_postman_id":"81773602-c19e-427f-8460-0d90c42c13f8","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"p2p","item":[{"name":"listCharges","id":"363c5fdd-8b40-4b09-826b-d36e36180716","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/charges","description":"<p>Lists the P2P feed of your P2P account, newest first. The list has no pages.</p>\n<p>With no <code>filter</code>, the list holds only P2P charges where you are the sender or the recipient. A push payment to you that nobody paid yet does not show. If you have no P2P account, the list is empty.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>filter</code></td>\n<td>no</td>\n<td>Optional. <code>all</code>: P2P charges plus point-of-sale and invoice charges that you paid, plus unpaid charges sent to your <code>@username</code>. <code>paid</code>: money out (P2P you sent and purchases). <code>received</code>: P2P money in. <code>requested</code>: your requests that are still unpaid. <code>business</code>: point-of-sale and invoice charges that you paid. Any other value works as no filter.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. Use it in the pay link and in <code>setCurrency</code>.</td>\n</tr>\n<tr>\n<td><code>data[].type.id</code></td>\n<td><code>integer</code></td>\n<td>The charge type. 3 is P2P (\"Peer to Peer\"). 1 is point of sale, 2 is invoice.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>). 1 created, 3 confirmed, 10 canceled.</td>\n</tr>\n<tr>\n<td><code>data[].price</code></td>\n<td><code>object</code></td>\n<td>The amount in fiat (<code>amount</code>, <code>currency</code>).</td>\n</tr>\n<tr>\n<td><code>data[].creator</code></td>\n<td><code>object</code></td>\n<td>The user who created the charge. For a request, this is the recipient. For a send, this is the sender.</td>\n</tr>\n<tr>\n<td><code>data[].requested_buyer</code></td>\n<td><code>object</code></td>\n<td>The only user who can pay the charge (the sender). Present on every P2P charge.</td>\n</tr>\n<tr>\n<td><code>data[].p2p_request.id</code></td>\n<td><code>integer</code></td>\n<td>The P2P request id. Use it in <code>POST /api/p2p/requests/:id/cancel</code>.</td>\n</tr>\n<tr>\n<td><code>data[].p2p_request.memo</code></td>\n<td><code>string</code></td>\n<td>The note that goes with the payment.</td>\n</tr>\n<tr>\n<td><code>data[].p2p_request.sender_account</code></td>\n<td><code>object</code></td>\n<td>The payer: P2P account <code>id</code>, <code>name</code> and <code>user</code>.</td>\n</tr>\n<tr>\n<td><code>data[].p2p_request.recipient_account</code></td>\n<td><code>object</code></td>\n<td>The person who gets the money: P2P account <code>id</code>, <code>name</code> and <code>user</code>.</td>\n</tr>\n<tr>\n<td><code>data[].p2p_request.canceled_by_role</code></td>\n<td><code>string|null</code></td>\n<td><code>requester</code> when the recipient canceled the request. <code>payer</code> when the sender rejected it. Null while the request is live.</td>\n</tr>\n<tr>\n<td><code>data[].viewer_fiat</code></td>\n<td><code>object|null</code></td>\n<td>The same amounts in your own fiat currency. Null when the charge is in your currency.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","charges"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>Optional. <code>all</code>: P2P charges plus point-of-sale and invoice charges that you paid, plus unpaid charges sent to your <code>@username</code>. <code>paid</code>: money out (P2P you sent and purchases). <code>received</code>: P2P money in. <code>requested</code>: your requests that are still unpaid. <code>business</code>: point-of-sale and invoice charges that you paid. Any other value works as no filter.</p>\n","type":"text/plain"},"key":"filter","value":"all"}],"variable":[]}},"response":[{"id":"6113edff-9551-4510-939b-2e54de351434","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/charges","host":["https://api.liberpay.com"],"path":["api","p2p","charges"],"query":[{"key":"filter","value":"all","description":"Optional. `all`: P2P charges plus point-of-sale and invoice charges that you paid, plus unpaid charges sent to your `@username`. `paid`: money out (P2P you sent and purchases). `received`: P2P money in. `requested`: your requests that are still unpaid. `business`: point-of-sale and invoice charges that you paid. Any other value works as no filter.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 412,\n            \"shortcode\": \"p2PkR7mQx2LbN4s\",\n            \"hash\": null,\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": \"5b7f0e2a-91c4-4d8e-b3a6-0f2c7d9e1a44\",\n                        \"name\": \"Pizza night\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"metadata\": {},\n                        \"quantity\": 1,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.00000\",\n                        \"price\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"7272727\",\n                        \"subtotal\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal_currency\": \"7272727\",\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax_currency\": \"0\",\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax_currency\": \"0\",\n                        \"total\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total_currency\": \"7272727\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"40.00\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"7272727\",\n            \"exchange_rate\": \"0.181818181818181818\",\n            \"expires_at\": \"2026-10-27T15:12:40Z\",\n            \"gateway\": {\n                \"id\": 305,\n                \"name\": \"P2P\",\n                \"address\": \"0x4a1f0c2b9e7d3a6f5c8b1e2d4f6a7c9e0b3d5f71\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 41,\n                \"is_system\": true,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 88,\n                \"name\": \"P2P\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 77,\n                    \"name\": \"P2P\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 41,\n                \"username\": \"steve_seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x7e3b1d9a2c4f6e8a0b1c3d5e7f9a1b3c5d7e9f02\"\n            },\n            \"buyer\": null,\n            \"currency\": {\n                \"id\": 2,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 3,\n                \"label\": \"Peer to Peer\"\n            },\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"created\"\n            },\n            \"inserted_at\": \"2026-10-27T15:02:40\",\n            \"updated_at\": \"2026-10-27T15:02:40\",\n            \"requested_buyer\": {\n                \"id\": 42,\n                \"username\": \"steve_buyer\"\n            },\n            \"p2p_request\": {\n                \"id\": 57,\n                \"memo\": \"Pizza on Friday\",\n                \"sender_account\": {\n                    \"id\": 19,\n                    \"name\": \"steve+buyer\",\n                    \"user\": {\n                        \"id\": 42,\n                        \"address\": \"0x2c9e4b7a1d3f5e7a9b0c2d4e6f8a0b2c4d6e8f13\",\n                        \"username\": \"steve_buyer\",\n                        \"email\": \"steve+buyer@example.com\",\n                        \"avatar_url\": null,\n                        \"legal_name\": null,\n                        \"has_government_id\": false,\n                        \"masked_government_id\": null,\n                        \"country\": {\n                            \"id\": 1,\n                            \"code\": \"BR\",\n                            \"name\": \"Brazil\"\n                        },\n                        \"fiat_currency\": {\n                            \"id\": 2,\n                            \"name\": \"Brazilian Real\",\n                            \"symbol\": \"BRL\",\n                            \"sign\": \"R$\"\n                        },\n                        \"locale\": \"pt-BR\",\n                        \"user_kyc_enabled\": true\n                    }\n                },\n                \"recipient_account\": {\n                    \"id\": 18,\n                    \"name\": \"steve+seller\",\n                    \"user\": {\n                        \"id\": 41,\n                        \"address\": \"0x7e3b1d9a2c4f6e8a0b1c3d5e7f9a1b3c5d7e9f02\",\n                        \"username\": \"steve_seller\",\n                        \"email\": \"steve+seller@example.com\",\n                        \"avatar_url\": null,\n                        \"legal_name\": null,\n                        \"has_government_id\": false,\n                        \"masked_government_id\": null,\n                        \"country\": {\n                            \"id\": 1,\n                            \"code\": \"BR\",\n                            \"name\": \"Brazil\"\n                        },\n                        \"fiat_currency\": {\n                            \"id\": 2,\n                            \"name\": \"Brazilian Real\",\n                            \"symbol\": \"BRL\",\n                            \"sign\": \"R$\"\n                        },\n                        \"locale\": \"pt-BR\",\n                        \"user_kyc_enabled\": true\n                    }\n                },\n                \"canceled\": false,\n                \"canceled_by_account_id\": null,\n                \"canceled_by_role\": null\n            }\n        }\n    ]\n}"}],"_postman_id":"363c5fdd-8b40-4b09-826b-d36e36180716"},{"name":"listStore","id":"dafcfaca-bc5e-4ff5-b187-a14b95b21149","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/stores/:store_id/p2p","description":"<p>Lists the P2P charges of one store, newest first, 250 per page. Use the store of your P2P account (<code>store_id</code> on the P2P account). You must be a member of the business that owns the store.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>store_id</code></td>\n<td>The store id. For P2P this is the store of your P2P account.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>no</td>\n<td>The page number. The default is 1.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td><code>integer</code></td>\n<td>The total number of P2P charges in the store.</td>\n</tr>\n<tr>\n<td><code>has_next</code></td>\n<td><code>boolean</code></td>\n<td>True when there is a next page.</td>\n</tr>\n<tr>\n<td><code>next_page</code></td>\n<td><code>integer|null</code></td>\n<td>The number of the next page, or null.</td>\n</tr>\n<tr>\n<td><code>last_page</code></td>\n<td><code>integer</code></td>\n<td>The number of the last page.</td>\n</tr>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The charge id.</td>\n</tr>\n<tr>\n<td><code>data[].shortcode</code></td>\n<td><code>string</code></td>\n<td>The public code of the charge. Use it in the pay link and in <code>setCurrency</code>.</td>\n</tr>\n<tr>\n<td><code>data[].type.id</code></td>\n<td><code>integer</code></td>\n<td>The charge type. 3 is P2P (\"Peer to Peer\"). 1 is point of sale, 2 is invoice.</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>object</code></td>\n<td>The charge status (<code>id</code> and <code>label</code>). 1 created, 3 confirmed, 10 canceled.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not a member of the business that owns the store. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The store does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","stores",":store_id","p2p"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The page number. The default is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"}],"variable":[{"id":"e6e4fcf0-3a9f-4d4e-afbd-dab58924c4ef","description":{"content":"<p>The store id. For P2P this is the store of your P2P account.</p>\n","type":"text/plain"},"type":"any","value":"88","key":"store_id"}]}},"response":[{"id":"18dc9660-a60f-4774-8756-f3cbd20f3715","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/p2p","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","p2p"],"query":[{"key":"page","value":"1","description":"The page number. The default is 1.","disabled":true}],"variable":[{"key":"store_id","value":"88","description":"The store id. For P2P this is the store of your P2P account."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"count\": 1,\n    \"first\": 1,\n    \"last\": 1,\n    \"has_next\": false,\n    \"has_prev\": false,\n    \"prev_page\": null,\n    \"next_page\": null,\n    \"last_page\": 1,\n    \"per_page\": 250,\n    \"data\": [\n        {\n            \"id\": 412,\n            \"shortcode\": \"p2PkR7mQx2LbN4s\",\n            \"hash\": null,\n            \"metadata\": {\n                \"items\": [\n                    {\n                        \"id\": \"5b7f0e2a-91c4-4d8e-b3a6-0f2c7d9e1a44\",\n                        \"name\": \"Pizza night\",\n                        \"description\": \"\",\n                        \"is_physical\": false,\n                        \"metadata\": {},\n                        \"quantity\": 1,\n                        \"taxable\": false,\n                        \"tax_rate\": \"0.00000\",\n                        \"price\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"price_currency\": \"7272727\",\n                        \"subtotal\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"subtotal_currency\": \"7272727\",\n                        \"tax\": {\n                            \"amount\": \"0.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"tax_currency\": \"0\",\n                        \"unit_tax\": {\n                            \"amount\": \"0\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"unit_tax_currency\": \"0\",\n                        \"total\": {\n                            \"amount\": \"40.00\",\n                            \"currency\": \"BRL\"\n                        },\n                        \"total_currency\": \"7272727\"\n                    }\n                ]\n            },\n            \"price\": {\n                \"amount\": \"40.00\",\n                \"currency\": \"BRL\"\n            },\n            \"currency_price\": \"7272727\",\n            \"exchange_rate\": \"0.181818181818181818\",\n            \"expires_at\": \"2026-10-27T15:12:40Z\",\n            \"gateway\": {\n                \"id\": 305,\n                \"name\": \"P2P\",\n                \"address\": \"0x4a1f0c2b9e7d3a6f5c8b1e2d4f6a7c9e0b3d5f71\",\n                \"licensed\": true,\n                \"license_status\": \"valid\",\n                \"creator_id\": 41,\n                \"is_system\": true,\n                \"version\": {\n                    \"identifier\": \"polygon-v1\",\n                    \"number\": 1\n                },\n                \"type\": {\n                    \"id\": 1,\n                    \"identifier\": \"polygon\",\n                    \"label\": \"Polygon\",\n                    \"platform\": {\n                        \"id\": 1,\n                        \"identifier\": \"evm\",\n                        \"label\": \"Ethereum Virtual Machine\"\n                    }\n                },\n                \"config\": {\n                    \"configured\": false\n                }\n            },\n            \"store\": {\n                \"id\": 88,\n                \"name\": \"P2P\",\n                \"logo\": null,\n                \"business\": {\n                    \"id\": 77,\n                    \"name\": \"P2P\"\n                }\n            },\n            \"seller_address\": null,\n            \"creator\": {\n                \"id\": 41,\n                \"username\": \"steve_seller\",\n                \"email\": \"steve+seller@example.com\",\n                \"address\": \"0x7e3b1d9a2c4f6e8a0b1c3d5e7f9a1b3c5d7e9f02\"\n            },\n            \"buyer\": null,\n            \"currency\": {\n                \"id\": 2,\n                \"name\": \"USD Coin\",\n                \"symbol\": \"USDC\",\n                \"decimals\": 6,\n                \"address\": \"0x9f8e7d6c5b4a39281706f5e4d3c2b1a098765432\",\n                \"supported\": true\n            },\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"buyer_fiat_currency\": null,\n            \"buyer_price\": null,\n            \"buyer_exchange_rate\": null,\n            \"viewer_fiat\": null,\n            \"business_fiat\": null,\n            \"payments\": [],\n            \"refunds\": [],\n            \"tokens\": [],\n            \"type\": {\n                \"id\": 3,\n                \"label\": \"Peer to Peer\"\n            },\n            \"status\": {\n                \"id\": 1,\n                \"label\": \"created\"\n            },\n            \"inserted_at\": \"2026-10-27T15:02:40\",\n            \"updated_at\": \"2026-10-27T15:02:40\",\n            \"requested_buyer\": {\n                \"id\": 42,\n                \"username\": \"steve_buyer\"\n            },\n            \"p2p_request\": {\n                \"id\": 57,\n                \"memo\": \"Pizza on Friday\",\n                \"sender_account\": {\n                    \"id\": 19,\n                    \"name\": \"steve+buyer\",\n                    \"user\": {\n                        \"id\": 42,\n                        \"address\": \"0x2c9e4b7a1d3f5e7a9b0c2d4e6f8a0b2c4d6e8f13\",\n                        \"username\": \"steve_buyer\",\n                        \"email\": \"steve+buyer@example.com\",\n                        \"avatar_url\": null,\n                        \"legal_name\": null,\n                        \"has_government_id\": false,\n                        \"masked_government_id\": null,\n                        \"country\": {\n                            \"id\": 1,\n                            \"code\": \"BR\",\n                            \"name\": \"Brazil\"\n                        },\n                        \"fiat_currency\": {\n                            \"id\": 2,\n                            \"name\": \"Brazilian Real\",\n                            \"symbol\": \"BRL\",\n                            \"sign\": \"R$\"\n                        },\n                        \"locale\": \"pt-BR\",\n                        \"user_kyc_enabled\": true\n                    }\n                },\n                \"recipient_account\": {\n                    \"id\": 18,\n                    \"name\": \"steve+seller\",\n                    \"user\": {\n                        \"id\": 41,\n                        \"address\": \"0x7e3b1d9a2c4f6e8a0b1c3d5e7f9a1b3c5d7e9f02\",\n                        \"username\": \"steve_seller\",\n                        \"email\": \"steve+seller@example.com\",\n                        \"avatar_url\": null,\n                        \"legal_name\": null,\n                        \"has_government_id\": false,\n                        \"masked_government_id\": null,\n                        \"country\": {\n                            \"id\": 1,\n                            \"code\": \"BR\",\n                            \"name\": \"Brazil\"\n                        },\n                        \"fiat_currency\": {\n                            \"id\": 2,\n                            \"name\": \"Brazilian Real\",\n                            \"symbol\": \"BRL\",\n                            \"sign\": \"R$\"\n                        },\n                        \"locale\": \"pt-BR\",\n                        \"user_kyc_enabled\": true\n                    }\n                },\n                \"canceled\": false,\n                \"canceled_by_account_id\": null,\n                \"canceled_by_role\": null\n            }\n        }\n    ]\n}"},{"id":"ccf40b23-ef22-45e9-8cf7-999f175142db","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/stores/:store_id/p2p","host":["https://api.liberpay.com"],"path":["api","stores",":store_id","p2p"],"query":[{"key":"page","value":"1","description":"The page number. The default is 1.","disabled":true}],"variable":[{"key":"store_id","value":"88","description":"The store id. For P2P this is the store of your P2P account."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"dafcfaca-bc5e-4ff5-b187-a14b95b21149"},{"name":"search","id":"aa7b6f90-cd4a-403b-8ea3-30ca775794b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/accounts?query=steve","description":"<p>Searches P2P accounts by username. The match is a case-insensitive prefix match. A leading <code>@</code> is removed. The API returns at most 100 accounts.</p>\n<p>A query with fewer than 3 characters returns an empty list. The API sorts the results: favorites first, then accounts with recent activity (newest first), then the rest by username.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>query</code></td>\n<td>yes</td>\n<td>The start of the username, with or without <code>@</code>. Minimum 3 characters to get results.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id. Use it as <code>p2p_request.sender_account_id</code> or <code>p2p_request.recipient_account_id</code> in <code>POST /api/charges</code>, and as <code>favorite_id</code>.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The display name of the P2P account.</td>\n</tr>\n<tr>\n<td><code>data[].username</code></td>\n<td><code>string</code></td>\n<td>The Liberpay username of the account owner (without <code>@</code>).</td>\n</tr>\n<tr>\n<td><code>data[].avatar_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the user avatar, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payable</code></td>\n<td><code>boolean</code></td>\n<td>True when the account's gateway contract is deployed. You can pay the account only when this is true.</td>\n</tr>\n<tr>\n<td><code>data[].is_favorite</code></td>\n<td><code>boolean</code></td>\n<td>True when you added this account to your favorites.</td>\n</tr>\n<tr>\n<td><code>data[].last_activity_at</code></td>\n<td><code>string|null</code></td>\n<td>The time (UTC, no zone suffix) of your last P2P request with this account, in either direction. Null means no history: the account is a stranger.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td>The <code>query</code> value is an empty string.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The <code>query</code> parameter is missing.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","accounts"],"host":["https://api.liberpay.com"],"query":[{"description":{"content":"<p>The start of the username, with or without <code>@</code>. Minimum 3 characters to get results.</p>\n","type":"text/plain"},"key":"query","value":"steve"}],"variable":[]}},"response":[{"id":"13f22772-9903-4818-8b09-897eccd7c36d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/accounts?query=steve","host":["https://api.liberpay.com"],"path":["api","p2p","accounts"],"query":[{"key":"query","value":"steve","description":"The start of the username, with or without `@`. Minimum 3 characters to get results."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 19,\n            \"name\": \"steve+buyer\",\n            \"username\": \"steve_buyer\",\n            \"avatar_url\": \"https://avatars.example.com/9b1d0c.png\",\n            \"payable\": true,\n            \"is_favorite\": true,\n            \"last_activity_at\": \"2026-10-20T14:03:11\"\n        },\n        {\n            \"id\": 23,\n            \"name\": \"Ana\",\n            \"username\": \"steve_ana\",\n            \"avatar_url\": null,\n            \"payable\": true,\n            \"is_favorite\": false,\n            \"last_activity_at\": \"2026-10-02T09:41:55\"\n        },\n        {\n            \"id\": 31,\n            \"name\": \"steve+bob\",\n            \"username\": \"steve_bob\",\n            \"avatar_url\": null,\n            \"payable\": false,\n            \"is_favorite\": false,\n            \"last_activity_at\": null\n        }\n    ]\n}"},{"id":"dc53ea04-aea5-4af5-9851-5c9d4e53ff28","name":"422 Empty query","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/accounts?query=steve","host":["https://api.liberpay.com"],"path":["api","p2p","accounts"],"query":[{"key":"query","value":"steve","description":"The start of the username, with or without `@`. Minimum 3 characters to get results."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"query cannot be empty\"\n}"}],"_postman_id":"aa7b6f90-cd4a-403b-8ea3-30ca775794b1"},{"name":"get","id":"8c304f52-bffd-4e12-a048-520c7452e81a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/accounts/:identifier","description":"<p>Gets one P2P account by its exact username. The API removes <code>@</code> from the identifier. Use this call to open a pay link such as <code>@steve_buyer</code>.</p>\n<p>The response has the same shape as a search result, with <code>is_favorite</code> and <code>last_activity_at</code> for you.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>identifier</code></td>\n<td>The exact username of the account owner, with or without <code>@</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id. Use it as <code>p2p_request.sender_account_id</code> or <code>p2p_request.recipient_account_id</code> in <code>POST /api/charges</code>, and as <code>favorite_id</code>.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The display name of the P2P account.</td>\n</tr>\n<tr>\n<td><code>data.username</code></td>\n<td><code>string</code></td>\n<td>The Liberpay username of the account owner (without <code>@</code>).</td>\n</tr>\n<tr>\n<td><code>data.avatar_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the user avatar, or null.</td>\n</tr>\n<tr>\n<td><code>data.payable</code></td>\n<td><code>boolean</code></td>\n<td>True when the account's gateway contract is deployed. You can pay the account only when this is true.</td>\n</tr>\n<tr>\n<td><code>data.is_favorite</code></td>\n<td><code>boolean</code></td>\n<td>True when you added this account to your favorites.</td>\n</tr>\n<tr>\n<td><code>data.last_activity_at</code></td>\n<td><code>string|null</code></td>\n<td>The time (UTC, no zone suffix) of your last P2P request with this account, in either direction. Null means no history: the account is a stranger.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No P2P account has this username.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","accounts",":identifier"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"d274f11a-837a-402b-92b7-7ffbecaf0f7c","description":{"content":"<p>The exact username of the account owner, with or without <code>@</code>.</p>\n","type":"text/plain"},"type":"any","value":"steve_buyer","key":"identifier"}]}},"response":[{"id":"1c7fef16-7410-4243-b4a2-865ec8a702b8","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/accounts/:identifier","host":["https://api.liberpay.com"],"path":["api","p2p","accounts",":identifier"],"variable":[{"key":"identifier","value":"steve_buyer","description":"The exact username of the account owner, with or without `@`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 19,\n        \"name\": \"steve+buyer\",\n        \"username\": \"steve_buyer\",\n        \"avatar_url\": \"https://avatars.example.com/9b1d0c.png\",\n        \"payable\": true,\n        \"is_favorite\": true,\n        \"last_activity_at\": \"2026-10-20T14:03:11\"\n    }\n}"},{"id":"3105bb1f-c07a-4b71-a06d-3513a10de144","name":"404 Not found","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/accounts/:identifier","host":["https://api.liberpay.com"],"path":["api","p2p","accounts",":identifier"],"variable":[{"key":"identifier","value":"steve_buyer","description":"The exact username of the account owner, with or without `@`."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"8c304f52-bffd-4e12-a048-520c7452e81a"},{"name":"create","id":"8be75b0c-dc37-48da-a28b-241e409b1a05","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve\",\n    \"country_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/accounts","description":"<p>Creates your P2P account. The API also creates a system business and a store, both named \"P2P\". Without <code>gateway_id</code>, the API also creates a fee account and a new Polygon gateway (not licensed, no contract yet).</p>\n<p>The call is idempotent. Most users already have a P2P account, because Liberpay creates one at signup. Then the API returns 200 with the id of the existing account and changes nothing.</p>\n<p>This call is open to a user with no country. Send <code>country_id</code> to set the country of the user, one time only.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The display name of the P2P account.</td>\n</tr>\n<tr>\n<td><code>gateway_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Optional. Use one of your own Polygon gateways for the account. The gateway must have no charges and no stores. See <code>GET /api/p2p/gateways</code>. Do not send <code>null</code>.</td>\n</tr>\n<tr>\n<td><code>country_id</code></td>\n<td><code>integer</code></td>\n<td>no</td>\n<td>Optional. The country of the user. The API uses it only when the user has no country yet. A web origin that is pinned to a country wins over this value.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The display name. Only present when the API created the account without <code>gateway_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td><code>gateway_id</code> is <code>null</code>, or the gateway is not yours, has charges, or has stores.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A step of the creation fails validation (business, store, gateway or account).</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The gateway in <code>gateway_id</code> does not exist.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>name</code> is missing.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","accounts"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"50103e73-b798-4179-b8a5-a4c41c02daae","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve\",\n    \"country_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/accounts"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 18,\n        \"name\": \"Steve\"\n    }\n}"},{"id":"34a0fb96-c660-4e58-afee-396ce9de105b","name":"200 Already exists","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve\",\n    \"country_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/accounts"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 18\n    }\n}"},{"id":"1ee6c370-7a7d-4b6d-88df-b2951715d942","name":"422 Gateway not allowed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve\",\n    \"country_id\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/accounts"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"gateway_id\": [\n            \"must be a new gateway, without any transactions or stores\"\n        ]\n    }\n}"}],"_postman_id":"8be75b0c-dc37-48da-a28b-241e409b1a05"},{"name":"update","id":"20d21521-6644-42a1-ae60-89732fa27e3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve A.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/account","description":"<p>Changes the display name of your P2P account. The path has no id: the call always changes the account of the token user.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The new display name. It cannot be empty.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id.</td>\n</tr>\n<tr>\n<td><code>data.name</code></td>\n<td><code>string</code></td>\n<td>The name before the change (see the note). Read the account again to see the new name.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You have no P2P account yet. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td><code>name</code> is empty.</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>name</code> is missing.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","account"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"0fb03fc7-2c9f-49da-a0f3-632cf284b0a7","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve A.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/account"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 18,\n        \"name\": \"Steve\"\n    }\n}"},{"id":"53030fd8-44ae-4c3e-b76a-b279d11283cb","name":"422 Invalid","originalRequest":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Steve A.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/account"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"name\": [\n            \"can't be blank\"\n        ]\n    }\n}"}],"_postman_id":"20d21521-6644-42a1-ae60-89732fa27e3a"},{"name":"listGateways","id":"270047eb-02db-452a-a3a5-c2e7c2967ee5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/gateways","description":"<p>Lists the Polygon gateways that you created and that have no charges yet. Use one of them as <code>gateway_id</code> in <code>POST /api/p2p/accounts</code>.</p>\n<p>The list can include gateways that are linked to stores. <code>POST /api/p2p/accounts</code> refuses those.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The gateway id.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>string|null</code></td>\n<td>The contract address. Null until the contract is deployed.</td>\n</tr>\n<tr>\n<td><code>data[].licensed</code></td>\n<td><code>boolean</code></td>\n<td>True when the gateway has a valid license.</td>\n</tr>\n<tr>\n<td><code>data[].license_status</code></td>\n<td><code>string</code></td>\n<td><code>valid</code>, <code>pending</code> or <code>invalid</code>.</td>\n</tr>\n<tr>\n<td><code>data[].stores</code></td>\n<td><code>array</code></td>\n<td>The stores that use the gateway (<code>id</code>, <code>name</code>). It must be empty for <code>POST /api/p2p/accounts</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","gateways"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"7a5f2065-57fe-4ccc-a82b-f1041586d7ad","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/gateways"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 311,\n            \"name\": \"My spare gateway\",\n            \"address\": null,\n            \"licensed\": false,\n            \"license_status\": \"invalid\",\n            \"creator_id\": 41,\n            \"is_system\": false,\n            \"version\": {\n                \"identifier\": \"polygon-v1\",\n                \"number\": 1\n            },\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            },\n            \"config\": {\n                \"configured\": false\n            },\n            \"stores\": []\n        }\n    ]\n}"}],"_postman_id":"270047eb-02db-452a-a3a5-c2e7c2967ee5"},{"name":"activateGateway","id":"79214abf-5b36-4926-904e-ed2b0c83f4e7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/p2p/activate_gateway","description":"<p>Starts the license check for the gateway of your P2P account. The API queues a license job that runs after about 15 seconds. The call does not license the gateway at once: read the gateway again to see <code>licensed</code>.</p>\n<p>The gateway must not have a license yet. The balance of the P2P fee account must be zero or more.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.message</code></td>\n<td><code>string</code></td>\n<td>A fixed text: \"gateway activated\" (translated to the user locale).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>500</td>\n<td>The gateway already has a license, the fee account balance is negative, or the job could not be queued. The body is only <code>{\"status\":\"error\"}</code>.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>You have no P2P account.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","activate_gateway"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"9d56a970-c89a-47ff-941e-8c67fb8a5f7a","name":"200 OK","originalRequest":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/p2p/activate_gateway"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"message\": \"gateway activated\"\n    }\n}"},{"id":"57b215d7-cdeb-443a-b686-6883384efd65","name":"500 Not allowed","originalRequest":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/p2p/activate_gateway"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\"\n}"}],"_postman_id":"79214abf-5b36-4926-904e-ed2b0c83f4e7"},{"name":"cancelRequest","id":"dee3afb4-63e7-47a0-932d-d11b03693b07","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/p2p/requests/:id/cancel","description":"<p>Cancels or rejects a P2P request. The sender and the recipient can both call it. The charge must still have status 1 (created). The API locks the charge and checks the status again, so a payment that arrives first wins.</p>\n<p>The API sets <code>canceled</code> to true, records your account in <code>canceled_by_account_id</code>, and changes the charge to status 10 (canceled). The other party gets a push notification. When the recipient calls it, the request is \"canceled\" (<code>canceled_by_role</code> = <code>requester</code>). When the sender calls it, the request is \"rejected\" (<code>canceled_by_role</code> = <code>payer</code>).</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The P2P request id (<code>p2p_request.id</code> on the charge). This is not the charge id.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The id of the canceled P2P request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You have no P2P account, you are not a party to the request, or the charge is not in status 1 (created). Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The P2P request does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","requests",":id","cancel"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"5bd0e7ba-9e60-4733-9985-7a2cf34de191","description":{"content":"<p>The P2P request id (<code>p2p_request.id</code> on the charge). This is not the charge id.</p>\n","type":"text/plain"},"type":"any","value":"57","key":"id"}]}},"response":[{"id":"24f22eed-2b24-485b-8587-56f2224099cd","name":"200 OK","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/requests/:id/cancel","host":["https://api.liberpay.com"],"path":["api","p2p","requests",":id","cancel"],"variable":[{"key":"id","value":"57","description":"The P2P request id (`p2p_request.id` on the charge). This is not the charge id."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"id\": 57\n    }\n}"},{"id":"cad46c47-5308-4b3f-861e-db4c15b01645","name":"404 Not found","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/requests/:id/cancel","host":["https://api.liberpay.com"],"path":["api","p2p","requests",":id","cancel"],"variable":[{"key":"id","value":"57","description":"The P2P request id (`p2p_request.id` on the charge). This is not the charge id."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"dee3afb4-63e7-47a0-932d-d11b03693b07"}],"id":"7e644755-1f7e-480f-aaba-4470d959965c","description":"<p>A P2P (peer-to-peer) payment moves money from one Liberpay user to another. Each user has one <strong>P2P account</strong>. The P2P account has its own system business, store and Polygon gateway, each named \"P2P\".</p>\n<p>A <strong>P2P charge</strong> is a charge with <code>charge_type_id</code> 3 (\"Peer to Peer\"). Each P2P charge has one <strong>P2P request</strong> (<code>p2p_request</code>). The P2P request names the <strong>sender</strong> account (the payer), the <strong>recipient</strong> account (the person who gets the money) and a <code>memo</code>. The sender's user is the <code>requested_buyer</code> of the charge: no other user can pay it.</p>\n<p><strong>Request money (pull).</strong> Call <code>POST /api/charges</code> with <code>charge_type_id</code> 3, <code>gateway_id</code> set to your own P2P gateway, and <code>p2p_request.sender_account_id</code> set to the payer's P2P account id. The API makes you the recipient. Liberpay sends the payer an email and a push notification.</p>\n<p><strong>Send money (push).</strong> Call <code>POST /api/charges</code> with <code>charge_type_id</code> 3 and <code>p2p_request.recipient_account_id</code> set to the recipient's P2P account id. Do not send <code>gateway_id</code>. The API fills in the recipient's gateway, store and wallet address, and makes you the sender.</p>\n<p>In both modes the payer then calls <code>setCurrency</code> and pays like any other charge. The recipient does not see an unpaid push payment in the feed.</p>\n<p><strong>Find a recipient.</strong> <code>GET /api/p2p/accounts?query=</code> searches usernames that start with the query. <code>GET /api/p2p/accounts/:identifier</code> gets one account by its exact username. Both return the P2P account <code>id</code> for <code>sender_account_id</code> or <code>recipient_account_id</code>. Check <code>payable</code> first. <code>GET /api/users/search</code> is a different search: it returns users (not P2P accounts) by username or email. Its <code>id</code> is a user id, not a P2P account id.</p>\n<p><strong>No self-charges.</strong> You cannot request money from yourself or send money to yourself: <code>POST /api/charges</code> returns 422 with <code>errors.p2p_request</code> = \"You can't request or send a payment to yourself\". The recipient cannot pay the charge: <code>setCurrency</code> returns an error \"You can't pay yourself\". Any user other than the sender gets \"This payment was sent to someone else\". Only the user who claimed the charge in <code>setCurrency</code> can report its transaction.</p>\n<p><strong>Cancel vs reject.</strong> The two parties use the same call, <code>POST /api/p2p/requests/:id/cancel</code>, while the charge has status 1 (created). The charge changes to status 10 (canceled). The label comes from who did it: <code>canceled_by_role</code> is <code>requester</code> when the recipient withdraws the request (\"canceled\"), and <code>payer</code> when the sender turns it down (\"rejected\"). The other party gets a push notification.</p>\n","_postman_id":"7e644755-1f7e-480f-aaba-4470d959965c","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"p2p favorites","item":[{"name":"list","id":"7049d5b0-da30-44da-8666-a3c0022126b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/favorites","description":"<p>Lists the accounts that you added to your favorites, the newest favorite first. The list has no pages.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id. Use it as <code>p2p_request.sender_account_id</code> or <code>p2p_request.recipient_account_id</code> in <code>POST /api/charges</code>, and as <code>favorite_id</code>.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The display name of the P2P account.</td>\n</tr>\n<tr>\n<td><code>data[].username</code></td>\n<td><code>string</code></td>\n<td>The Liberpay username of the account owner (without <code>@</code>).</td>\n</tr>\n<tr>\n<td><code>data[].avatar_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the user avatar, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payable</code></td>\n<td><code>boolean</code></td>\n<td>True when the account's gateway contract is deployed. You can pay the account only when this is true.</td>\n</tr>\n<tr>\n<td><code>data[].is_favorite</code></td>\n<td><code>boolean</code></td>\n<td>True when you added this account to your favorites.</td>\n</tr>\n<tr>\n<td><code>data[].last_activity_at</code></td>\n<td><code>string|null</code></td>\n<td>The time (UTC, no zone suffix) of your last P2P request with this account, in either direction. Null means no history: the account is a stranger.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You have no P2P account yet. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","favorites"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"c2fe7358-9bad-457d-a5d9-6a6ddc1c717d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/favorites"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 19,\n            \"name\": \"steve+buyer\",\n            \"username\": \"steve_buyer\",\n            \"avatar_url\": \"https://avatars.example.com/9b1d0c.png\",\n            \"payable\": true,\n            \"is_favorite\": true,\n            \"last_activity_at\": \"2026-10-20T14:03:11\"\n        },\n        {\n            \"id\": 23,\n            \"name\": \"Ana\",\n            \"username\": \"steve_ana\",\n            \"avatar_url\": null,\n            \"payable\": true,\n            \"is_favorite\": true,\n            \"last_activity_at\": \"2026-10-02T09:41:55\"\n        }\n    ]\n}"},{"id":"d693adf5-0776-4fc5-a9ab-9c6131ec07c4","name":"404 No P2P account","originalRequest":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/favorites"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"7049d5b0-da30-44da-8666-a3c0022126b1"},{"name":"create","id":"69dcc821-c99d-49ed-9eab-c5300e724e04","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"favorite_id\": 19\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/favorites","description":"<p>Adds a P2P account to your favorites. The call is idempotent: a second call for the same account succeeds and adds nothing.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>favorite_id</code></td>\n<td><code>integer</code></td>\n<td>yes</td>\n<td>The P2P account id to add (the <code>id</code> from search or get). It cannot be your own account.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td><code>ok</code> on success. The response has no data.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>422</td>\n<td><code>favorite_id</code> is your own account, or the account does not exist (<code>does not exist</code>).</td>\n</tr>\n<tr>\n<td>400</td>\n<td><code>favorite_id</code> is missing.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>You have no P2P account yet. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","favorites"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"869e3d2b-33d0-49fb-99e7-075e79547d35","name":"200 OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"favorite_id\": 19\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/favorites"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\"\n}"},{"id":"107d01f0-a3b0-48e0-ad2e-63a9282b2600","name":"422 Yourself","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"favorite_id\": 19\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/p2p/favorites"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"errors\": {\n        \"favorite_id\": [\n            \"You can't add yourself\"\n        ]\n    }\n}"}],"_postman_id":"69dcc821-c99d-49ed-9eab-c5300e724e04"},{"name":"delete","id":"a295c199-ec6e-4a3f-b8cf-0582aef49977","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.liberpay.com/api/p2p/favorites/:id","description":"<p>Removes a P2P account from your favorites. The call is idempotent: it returns 200 also when the account was not a favorite.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The P2P account id of the favorite (the same value as <code>favorite_id</code>). This is not the id of a favorite record.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td><code>ok</code> on success. The response has no data.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You have no P2P account yet. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","favorites",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"07b32f4e-32bd-4bf2-9b94-c007e20eb49b","description":{"content":"<p>The P2P account id of the favorite (the same value as <code>favorite_id</code>). This is not the id of a favorite record.</p>\n","type":"text/plain"},"type":"any","value":"19","key":"id"}]}},"response":[{"id":"8bdd4ff8-8a95-49d6-92e9-434c4e670cb0","name":"200 OK","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/favorites/:id","host":["https://api.liberpay.com"],"path":["api","p2p","favorites",":id"],"variable":[{"key":"id","value":"19","description":"The P2P account id of the favorite (the same value as `favorite_id`). This is not the id of a favorite record."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\"\n}"}],"_postman_id":"a295c199-ec6e-4a3f-b8cf-0582aef49977"},{"name":"recents","id":"aede24e2-c7a8-4827-bcff-f63d1a558286","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/p2p/recents","description":"<p>Lists the accounts that you had P2P activity with, the newest activity first. Activity is any P2P request in either direction, with any status. Each account comes once.</p>\n<p>A recent account can also be a favorite: check <code>is_favorite</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>no</td>\n<td>The maximum number of accounts. The default is 15. The maximum is 50. A value that is not a positive integer gives 15.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The P2P account id. Use it as <code>p2p_request.sender_account_id</code> or <code>p2p_request.recipient_account_id</code> in <code>POST /api/charges</code>, and as <code>favorite_id</code>.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The display name of the P2P account.</td>\n</tr>\n<tr>\n<td><code>data[].username</code></td>\n<td><code>string</code></td>\n<td>The Liberpay username of the account owner (without <code>@</code>).</td>\n</tr>\n<tr>\n<td><code>data[].avatar_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the user avatar, or null.</td>\n</tr>\n<tr>\n<td><code>data[].payable</code></td>\n<td><code>boolean</code></td>\n<td>True when the account's gateway contract is deployed. You can pay the account only when this is true.</td>\n</tr>\n<tr>\n<td><code>data[].is_favorite</code></td>\n<td><code>boolean</code></td>\n<td>True when you added this account to your favorites.</td>\n</tr>\n<tr>\n<td><code>data[].last_activity_at</code></td>\n<td><code>string|null</code></td>\n<td>The time (UTC, no zone suffix) of your last P2P request with this account, in either direction. Null means no history: the account is a stranger.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You have no P2P account yet. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","p2p","recents"],"host":["https://api.liberpay.com"],"query":[{"disabled":true,"description":{"content":"<p>The maximum number of accounts. The default is 15. The maximum is 50. A value that is not a positive integer gives 15.</p>\n","type":"text/plain"},"key":"limit","value":"15"}],"variable":[]}},"response":[{"id":"eb5ae33c-47ca-4fac-8adb-b29f9b52a4ce","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/recents","host":["https://api.liberpay.com"],"path":["api","p2p","recents"],"query":[{"key":"limit","value":"15","description":"The maximum number of accounts. The default is 15. The maximum is 50. A value that is not a positive integer gives 15.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 19,\n            \"name\": \"steve+buyer\",\n            \"username\": \"steve_buyer\",\n            \"avatar_url\": \"https://avatars.example.com/9b1d0c.png\",\n            \"payable\": true,\n            \"is_favorite\": true,\n            \"last_activity_at\": \"2026-10-20T14:03:11\"\n        },\n        {\n            \"id\": 23,\n            \"name\": \"Ana\",\n            \"username\": \"steve_ana\",\n            \"avatar_url\": null,\n            \"payable\": true,\n            \"is_favorite\": false,\n            \"last_activity_at\": \"2026-10-02T09:41:55\"\n        }\n    ]\n}"},{"id":"9933efc0-089e-4b2b-ad77-5596d363d09f","name":"404 No P2P account","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/p2p/recents","host":["https://api.liberpay.com"],"path":["api","p2p","recents"],"query":[{"key":"limit","value":"15","description":"The maximum number of accounts. The default is 15. The maximum is 50. A value that is not a positive integer gives 15.","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"aede24e2-c7a8-4827-bcff-f63d1a558286"}],"id":"51492690-72b5-48fb-b7dd-d52b2fe8b8c7","description":"<p>The pay screen puts each other P2P account in one of three levels. The API computes the levels for you, so all apps agree.</p>\n<ul>\n<li><strong>Favorite</strong> (<code>is_favorite</code> = true): you added the account with <code>POST /api/p2p/favorites</code>. A favorite is one-way. The other user is not told and has no list of who added them.</li>\n<li><strong>Recent</strong> (<code>last_activity_at</code> is not null): you have at least one P2P request with the account, in either direction and with any status. Nobody stores recents: the API reads them from the P2P request history.</li>\n<li><strong>Stranger</strong> (neither): no favorite and no history. Only a stranger gets a warning before you pay, for example \"You haven't paid this person yet\".</li>\n</ul>\n<p>Every call that returns an account (search, get, favorites, recents) returns the same account object with <code>is_favorite</code> and <code>last_activity_at</code>. You cannot favorite yourself, and you are never your own recent. All calls in this folder need a P2P account; without one they return 404.</p>\n","_postman_id":"51492690-72b5-48fb-b7dd-d52b2fe8b8c7","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"nota fiscal","item":[{"name":"getProfile","id":"63575c9f-e63d-49b0-a946-668a75a215bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","description":"<p>Gets the NF profile of the business. When the business has no NF profile, <code>data</code> is null.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id. You must be a member of the business.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The NF profile id.</td>\n</tr>\n<tr>\n<td><code>data.tax_id</code></td>\n<td><code>string</code></td>\n<td>The CPF (11 digits) or CNPJ (14 digits), digits only.</td>\n</tr>\n<tr>\n<td><code>data.legal_name</code></td>\n<td><code>string</code></td>\n<td>The legal name that goes on the NFS-e.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string</code></td>\n<td>The email that gets the NFS-e.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object</code></td>\n<td>The fiscal address. See the fields of <code>nf_profile.address</code> in the create request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not a member of the business. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The business country has no nota fiscal. Body: <code>{\"status\":\"error\",\"code\":\"not_applicable\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","nf_profile"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"95124e0c-4d92-4ec3-b01c-8662a8ac9861","description":{"content":"<p>The business id. You must be a member of the business.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"4e5a3680-4ef2-40e1-ba28-66bcf3d2dfc7","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_profile"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"business_id\": 12,\n        \"tax_id\": \"12345678000195\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\",\n            \"country\": \"BRA\"\n        }\n    }\n}"},{"id":"8b982023-bb98-46e0-8fbf-d9ef4f6193b8","name":"200 No profile","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_profile"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": null\n}"}],"_postman_id":"63575c9f-e63d-49b0-a946-668a75a215bb"},{"name":"saveProfile","id":"036e00e8-b04a-427d-9723-f448dbe456cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"nf_profile\": {\n        \"tax_id\": \"12.345.678/0001-95\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","description":"<p>Creates the NF profile of the business, or replaces it when it exists. The API removes all characters that are not digits from <code>tax_id</code>, then checks the CPF or CNPJ.</p>\n<p>Send all fields every time: an update also requires <code>tax_id</code>, <code>legal_name</code>, <code>email</code> and <code>address</code>, and the new <code>address</code> replaces the old one.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id. You must be a member of the business.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body\">Request body</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>nf_profile.tax_id</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>A valid CPF or CNPJ. Punctuation is allowed.</td>\n</tr>\n<tr>\n<td><code>nf_profile.legal_name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The legal name of the business or person.</td>\n</tr>\n<tr>\n<td><code>nf_profile.email</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The email that gets the NFS-e.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address</code></td>\n<td><code>object</code></td>\n<td>yes</td>\n<td>The fiscal address. All values are strings.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.postal_code</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The CEP.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.street</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The street.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.number</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The street number.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.district</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The district (bairro).</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.city_code</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The IBGE city code (7 digits).</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.city_name</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The city name.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.state</code></td>\n<td><code>string</code></td>\n<td>yes</td>\n<td>The state code, for example <code>SP</code>.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.additional_information</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Optional. The complement, for example a room number.</td>\n</tr>\n<tr>\n<td><code>nf_profile.address.country</code></td>\n<td><code>string</code></td>\n<td>no</td>\n<td>Optional. The country code. The default is <code>BRA</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The NF profile id.</td>\n</tr>\n<tr>\n<td><code>data.tax_id</code></td>\n<td><code>string</code></td>\n<td>The CPF (11 digits) or CNPJ (14 digits), digits only.</td>\n</tr>\n<tr>\n<td><code>data.legal_name</code></td>\n<td><code>string</code></td>\n<td>The legal name that goes on the NFS-e.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string</code></td>\n<td>The email that gets the NFS-e.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>object</code></td>\n<td>The fiscal address. See the fields of <code>nf_profile.address</code> in the create request.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not a member of the business. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The business country has no nota fiscal. Body: <code>{\"status\":\"error\",\"code\":\"not_applicable\"}</code>.</td>\n</tr>\n<tr>\n<td>422</td>\n<td>A field is missing or not valid. The body is <code>{\"errors\":{...}}</code>, without <code>status</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>The <code>nf_profile</code> key is missing.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","nf_profile"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"91aebb25-c2ff-4739-8212-4320800bbe58","description":{"content":"<p>The business id. You must be a member of the business.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"9d6ae222-fc1e-4908-901d-f45610541f96","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"nf_profile\": {\n        \"tax_id\": \"12.345.678/0001-95\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_profile"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"business_id\": 12,\n        \"tax_id\": \"12345678000195\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\",\n            \"country\": \"BRA\"\n        }\n    }\n}"},{"id":"27059550-2cdf-4922-8446-6c423e062acd","name":"200 Updated","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"nf_profile\": {\n        \"tax_id\": \"12.345.678/0001-95\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_profile"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 4,\n        \"business_id\": 12,\n        \"tax_id\": \"12345678000195\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\",\n            \"country\": \"BRA\"\n        }\n    }\n}"},{"id":"16e2b820-c956-4ed2-80ce-8ab9d8933158","name":"422 Invalid","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"nf_profile\": {\n        \"tax_id\": \"12.345.678/0001-95\",\n        \"legal_name\": \"Pizzaria Exemplo LTDA\",\n        \"email\": \"steve+fiscal@example.com\",\n        \"address\": {\n            \"postal_code\": \"01310100\",\n            \"street\": \"Avenida Paulista\",\n            \"number\": \"1000\",\n            \"additional_information\": \"Sala 12\",\n            \"district\": \"Bela Vista\",\n            \"city_code\": \"3550308\",\n            \"city_name\": \"São Paulo\",\n            \"state\": \"SP\"\n        }\n    }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_profile","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_profile"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": {\n        \"address\": [\n            \"missing required fields: city_code, state\"\n        ],\n        \"email\": [\n            \"must be a valid email\"\n        ]\n    }\n}"}],"_postman_id":"036e00e8-b04a-427d-9723-f448dbe456cc"},{"name":"listInvoices","id":"510ca022-33b5-4f0d-9aa7-92382a31a8ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/nf_invoices","description":"<p>Lists the NFS-e records of the business, newest first. The list has no pages.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id. You must be a member of the business.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The NF invoice id. Use it in the retry call.</td>\n</tr>\n<tr>\n<td><code>data[].type_label</code></td>\n<td><code>string|null</code></td>\n<td>The NF type: <code>service</code>, <code>product</code> or <code>consumer</code>. Fee invoices are <code>service</code> (type 1).</td>\n</tr>\n<tr>\n<td><code>data[].status</code></td>\n<td><code>string</code></td>\n<td><code>pending</code>, <code>issued</code>, <code>cancelled</code> or <code>error</code>.</td>\n</tr>\n<tr>\n<td><code>data[].nfeio_status</code></td>\n<td><code>string|null</code></td>\n<td>The raw status from NFe.io.</td>\n</tr>\n<tr>\n<td><code>data[].amount</code></td>\n<td><code>string</code></td>\n<td>The amount in BRL (decimal string).</td>\n</tr>\n<tr>\n<td><code>data[].number</code></td>\n<td><code>string|null</code></td>\n<td>The NFS-e number, after issue.</td>\n</tr>\n<tr>\n<td><code>data[].verification_code</code></td>\n<td><code>string|null</code></td>\n<td>The NFS-e verification code, after issue.</td>\n</tr>\n<tr>\n<td><code>data[].pdf_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the PDF, after issue.</td>\n</tr>\n<tr>\n<td><code>data[].xml_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the XML, after issue.</td>\n</tr>\n<tr>\n<td><code>data[].error_message</code></td>\n<td><code>string|null</code></td>\n<td>The error from NFe.io when <code>status</code> is <code>error</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not a member of the business. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The business country has no nota fiscal. Body: <code>{\"status\":\"error\",\"code\":\"not_applicable\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","nf_invoices"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"a91e820b-c042-47f3-b651-bd9622535ac9","description":{"content":"<p>The business id. You must be a member of the business.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"}]}},"response":[{"id":"030a895f-045c-42c9-bbe3-28cd1de1b0ee","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_invoices","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_invoices"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 7,\n            \"nf_invoice_type_id\": 1,\n            \"type_label\": \"service\",\n            \"nfeio_id\": \"6f1c2a9e3b4d5e6f7a8b9c0d\",\n            \"status\": \"issued\",\n            \"nfeio_status\": \"Issued\",\n            \"amount\": \"52.40\",\n            \"description\": \"Prepaid transaction fees - LiberPay\",\n            \"number\": \"1043\",\n            \"verification_code\": \"AB12CD34\",\n            \"pdf_url\": \"https://files.example.com/nfse/1043.pdf\",\n            \"xml_url\": \"https://files.example.com/nfse/1043.xml\",\n            \"error_message\": null,\n            \"inserted_at\": \"2026-10-20T13:15:02\"\n        },\n        {\n            \"id\": 6,\n            \"nf_invoice_type_id\": 1,\n            \"type_label\": \"service\",\n            \"nfeio_id\": null,\n            \"status\": \"error\",\n            \"nfeio_status\": null,\n            \"amount\": \"26.20\",\n            \"description\": \"Prepaid transaction fees - LiberPay\",\n            \"number\": null,\n            \"verification_code\": null,\n            \"pdf_url\": null,\n            \"xml_url\": null,\n            \"error_message\": \"HTTP 400: %{\\\"message\\\" => \\\"invalid borrower\\\"}\",\n            \"inserted_at\": \"2026-10-12T10:44:19\"\n        }\n    ]\n}"}],"_postman_id":"510ca022-33b5-4f0d-9aa7-92382a31a8ba"},{"name":"retryInvoice","id":"131edf35-9bd7-48a9-9cd3-316a0705d2f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://api.liberpay.com/api/businesses/:business_id/nf_invoices/:invoice_id/retry","description":"<p>Tries again to issue an NFS-e. The API sets the status of the record to <code>pending</code>, clears <code>error_message</code>, and queues a new issue job. Use it for a record with status <code>error</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>business_id</code></td>\n<td>The business id. You must be a member of the business.</td>\n</tr>\n<tr>\n<td><code>invoice_id</code></td>\n<td>The NF invoice id (<code>data[].id</code> from the list).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td><code>ok</code> when the API queued the job. It does not mean that NFe.io issued the NFS-e.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>You are not a member of the business. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The business does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>The business country has no nota fiscal. Body: <code>{\"status\":\"error\",\"code\":\"not_applicable\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The NF invoice belongs to another business. Body: <code>{\"status\":\"error\",\"message\":\"not found\"}</code>.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>The NF invoice does not exist. Body: <code>{\"errors\":{\"detail\":\"Not Found\"}}</code>.</td>\n</tr>\n<tr>\n<td>409</td>\n<td>Your user has no country yet. Only <code>POST /api/p2p/accounts</code> and a few other calls accept writes before you choose a country. Body: <code>{\"status\":\"error\",\"code\":\"country_required\"}</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","businesses",":business_id","nf_invoices",":invoice_id","retry"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"8216eb1d-ba74-456c-b200-8c93a5ec42b4","description":{"content":"<p>The business id. You must be a member of the business.</p>\n","type":"text/plain"},"type":"any","value":"12","key":"business_id"},{"id":"5a1fcf4c-6e0f-4ce7-9147-bd8dd46e7195","description":{"content":"<p>The NF invoice id (<code>data[].id</code> from the list).</p>\n","type":"text/plain"},"type":"any","value":"6","key":"invoice_id"}]}},"response":[{"id":"c7367040-9be0-42c4-b42b-5f5cfd8be670","name":"200 OK","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_invoices/:invoice_id/retry","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_invoices",":invoice_id","retry"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."},{"key":"invoice_id","value":"6","description":"The NF invoice id (`data[].id` from the list)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\"\n}"},{"id":"e7326a4a-a791-43f6-8611-0fa2437dacc6","name":"404 Not found","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://api.liberpay.com/api/businesses/:business_id/nf_invoices/:invoice_id/retry","host":["https://api.liberpay.com"],"path":["api","businesses",":business_id","nf_invoices",":invoice_id","retry"],"variable":[{"key":"business_id","value":"12","description":"The business id. You must be a member of the business."},{"key":"invoice_id","value":"6","description":"The NF invoice id (`data[].id` from the list)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"not found\"\n}"}],"_postman_id":"131edf35-9bd7-48a9-9cd3-316a0705d2f6"}],"id":"77e15c7f-1e42-4c5d-80f1-d36d00411145","description":"<p><strong>Brazil only.</strong> Liberpay takes its transaction fees from the fee account of each business. For these fees, Liberpay issues a service nota fiscal (NFS-e) to the business through NFe.io. The API queues one NFS-e when a business recharges its fee account (card or USDC).</p>\n<p>The <strong>NF profile</strong> holds the tax data for the NFS-e: CPF or CNPJ, legal name, email and address. A business without an NF profile gets no NFS-e. A P2P business can use the CPF and legal name of its user instead.</p>\n<p>Each NFS-e is an <strong>NF invoice</strong> record. Its <code>status</code> starts as <code>pending</code>. NFe.io then reports <code>issued</code>, <code>cancelled</code> or <code>error</code>.</p>\n<p>All calls in this folder need a business member. A business in a country without nota fiscal gets 409 <code>not_applicable</code>.</p>\n","_postman_id":"77e15c7f-1e42-4c5d-80f1-d36d00411145","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"users","item":[{"name":"get","id":"3f055d13-2495-4e43-bd59-34b56315d038","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/users/:id","description":"<p>Finds a user by wallet address. Anyone can call this endpoint.</p>\n<p>If the token belongs to the same user, the response has the full record (email, legal name, country, locale). For all other callers, the response has only the public fields: <code>id</code>, <code>address</code>, <code>username</code> and <code>avatar_url</code>.</p>\n<p>If no user has this address, the response is 200 with <code>data</code> set to <code>null</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>A token is optional. With a token, the response can include more data for that user.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>The wallet address of the user (not the numeric user ID). The match ignores letter case. Any linked wallet of the user matches.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data</code></td>\n<td><code>object|null</code></td>\n<td>The user, or <code>null</code> when no user has this address.</td>\n</tr>\n<tr>\n<td><code>data.id</code></td>\n<td><code>integer</code></td>\n<td>The user ID.</td>\n</tr>\n<tr>\n<td><code>data.address</code></td>\n<td><code>string|null</code></td>\n<td>The primary wallet address of the user.</td>\n</tr>\n<tr>\n<td><code>data.username</code></td>\n<td><code>string|null</code></td>\n<td>The username.</td>\n</tr>\n<tr>\n<td><code>data.avatar_url</code></td>\n<td><code>string|null</code></td>\n<td>The URL of the profile picture.</td>\n</tr>\n<tr>\n<td><code>data.email</code></td>\n<td><code>string|null</code></td>\n<td>Own record only. The email of the user.</td>\n</tr>\n<tr>\n<td><code>data.masked_government_id</code></td>\n<td><code>string|null</code></td>\n<td>Own record only. The government ID with most digits hidden.</td>\n</tr>\n<tr>\n<td><code>data.country</code></td>\n<td><code>object|null</code></td>\n<td>Own record only. The country of the user.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","users",":id"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"13694356-aa29-4d1a-a038-4b38e3ee3fe0","description":{"content":"<p>The wallet address of the user (not the numeric user ID). The match ignores letter case. Any linked wallet of the user matches.</p>\n","type":"text/plain"},"type":"any","value":"0x1111222233334444555566667777888899990000","key":"id"}]}},"response":[{"id":"afd06183-16d9-4f84-936c-5b725ae35fca","name":"200 OK (public)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/users/:id","host":["https://api.liberpay.com"],"path":["api","users",":id"],"variable":[{"key":"id","value":"0x1111222233334444555566667777888899990000","description":"The wallet address of the user (not the numeric user ID). The match ignores letter case. Any linked wallet of the user matches."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 42,\n        \"address\": \"0x1111222233334444555566667777888899990000\",\n        \"username\": \"stevestore\",\n        \"avatar_url\": null\n    }\n}"},{"id":"c6491a62-85b2-470a-8414-1292956e0afb","name":"200 OK (own record)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/users/:id","host":["https://api.liberpay.com"],"path":["api","users",":id"],"variable":[{"key":"id","value":"0x1111222233334444555566667777888899990000","description":"The wallet address of the user (not the numeric user ID). The match ignores letter case. Any linked wallet of the user matches."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 42,\n        \"address\": \"0x1111222233334444555566667777888899990000\",\n        \"username\": \"stevestore\",\n        \"email\": \"steve+seller@example.com\",\n        \"avatar_url\": null,\n        \"legal_name\": \"Steve Example\",\n        \"has_government_id\": true,\n        \"masked_government_id\": \"***.***.***-12\",\n        \"country\": {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\"\n        },\n        \"fiat_currency\": {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"symbol\": \"BRL\",\n            \"sign\": \"R$\"\n        },\n        \"locale\": \"pt_BR\",\n        \"user_kyc_enabled\": true\n    }\n}"},{"id":"c5fb7002-4e2d-4747-89b0-41563673912f","name":"200 OK (no user)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/users/:id","host":["https://api.liberpay.com"],"path":["api","users",":id"],"variable":[{"key":"id","value":"0x1111222233334444555566667777888899990000","description":"The wallet address of the user (not the numeric user ID). The match ignores letter case. Any linked wallet of the user matches."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": null\n}"}],"_postman_id":"3f055d13-2495-4e43-bd59-34b56315d038"},{"name":"search","id":"f18d17db-717b-40d1-a57a-6fdf7f67922e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.liberpay.com/api/users/search?query=steve","description":"<p>Searches all users by username or email. The match is a part of the text and ignores letter case. A leading <code>@</code> is removed, so <code>@steve</code> finds the username <code>steve</code>.</p>\n<p>The query must have 3 or more characters. A shorter query, or no query, gives an empty list. The response has a maximum of 20 users, in username order.</p>\n<p>The limit is 30 calls per minute for each IP address.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>Requires an API key or a session token.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>query</code></td>\n<td>yes</td>\n<td>The text to find in the username or email. Minimum 3 characters.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The user ID.</td>\n</tr>\n<tr>\n<td><code>data[].username</code></td>\n<td><code>string|null</code></td>\n<td>The username.</td>\n</tr>\n<tr>\n<td><code>data[].email</code></td>\n<td><code>string|null</code></td>\n<td>The email of the user.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>string|null</code></td>\n<td>The primary wallet address. It is <code>null</code> for an email-only user.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>The token is missing, not valid, or revoked.</td>\n</tr>\n<tr>\n<td>429</td>\n<td>The IP address sent more than 30 searches in one minute.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}},"urlObject":{"path":["api","users","search"],"host":["https://api.liberpay.com"],"query":[{"description":{"content":"<p>The text to find in the username or email. Minimum 3 characters.</p>\n","type":"text/plain"},"key":"query","value":"steve"}],"variable":[]}},"response":[{"id":"76022da5-ca3f-4c33-99f7-f75db9cb3db8","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/users/search?query=steve","host":["https://api.liberpay.com"],"path":["api","users","search"],"query":[{"key":"query","value":"steve","description":"The text to find in the username or email. Minimum 3 characters."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 42,\n            \"username\": \"stevestore\",\n            \"email\": \"steve+seller@example.com\",\n            \"address\": \"0x1111222233334444555566667777888899990000\"\n        },\n        {\n            \"id\": 57,\n            \"username\": \"steve_buyer\",\n            \"email\": \"steve+buyer@example.com\",\n            \"address\": null\n        }\n    ]\n}"},{"id":"d2824524-1528-465b-9751-31dace1a56e1","name":"429 Too Many Requests","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/users/search?query=steve","host":["https://api.liberpay.com"],"path":["api","users","search"],"query":[{"key":"query","value":"steve","description":"The text to find in the username or email. Minimum 3 characters."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"error\",\n    \"message\": \"Rate limit reached! Try again in one minute.\"\n}"}],"_postman_id":"f18d17db-717b-40d1-a57a-6fdf7f67922e"}],"id":"cf5450ec-b937-46e9-a44b-cdf207fd56dc","description":"<p>Look up Liberpay users. A user is a person with a Liberpay account. A user can own businesses, stores and gateways, and can receive P2P payments.</p>\n","_postman_id":"cf5450ec-b937-46e9-a44b-cdf207fd56dc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"receipts","item":[{"name":"metadata","id":"9f12c6d5-2fcb-4f07-8848-6772979df20b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId","description":"<p>Returns the ERC-721 metadata of an NFT receipt. The metadata has a name, a description, a link to the receipt page and a link to the receipt image.</p>\n<p>The response is not wrapped in <code>data</code>, because wallets expect the standard metadata shape.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge that the receipt is for.</td>\n</tr>\n<tr>\n<td><code>tokenId</code></td>\n<td>The token ID of the NFT receipt.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td><code>string</code></td>\n<td>The token name, <code>Token #&lt;tokenId&gt;</code>.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td><code>string</code></td>\n<td>A fixed English text with the link to the receipt page.</td>\n</tr>\n<tr>\n<td><code>external_url</code></td>\n<td><code>string</code></td>\n<td>The receipt page in the Liberpay app.</td>\n</tr>\n<tr>\n<td><code>image</code></td>\n<td><code>string</code></td>\n<td>The URL of the receipt image (an SVG QR code).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","npr","metadata",":shortcode",":tokenId"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"5b2defb4-1347-4f70-93fc-c8e7bad5f613","description":{"content":"<p>The shortcode of the charge that the receipt is for.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"},{"id":"4b12a09b-1454-4f81-9bce-0e126b0a55dd","description":{"content":"<p>The token ID of the NFT receipt.</p>\n","type":"text/plain"},"type":"any","value":"128","key":"tokenId"}]}},"response":[{"id":"238928af-6040-4237-96f2-1c487501f866","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId","host":["https://api.liberpay.com"],"path":["api","npr","metadata",":shortcode",":tokenId"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge that the receipt is for."},{"key":"tokenId","value":"128","description":"The token ID of the NFT receipt."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Token #128\",\n    \"description\": \"This NFT represents a receipt for a LiberPay transaction. Visit https://app.liberpay.com/charges/73cJltPHglQdnVH/receipt for more information.\",\n    \"external_url\": \"https://app.liberpay.com/charges/73cJltPHglQdnVH/receipt\",\n    \"type\": \"object\",\n    \"image\": \"https://api.liberpay.com/api/npr/metadata/73cJltPHglQdnVH/128/image\"\n}"},{"id":"ad2be350-5cd4-4f62-8f8c-56b3fde971dc","name":"404 Not Found","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId","host":["https://api.liberpay.com"],"path":["api","npr","metadata",":shortcode",":tokenId"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge that the receipt is for."},{"key":"tokenId","value":"128","description":"The token ID of the NFT receipt."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": {\n        \"detail\": \"Not Found\"\n    }\n}"}],"_postman_id":"9f12c6d5-2fcb-4f07-8848-6772979df20b"},{"name":"image","id":"345cf7cd-eac5-4a90-8379-8bc7d0b495b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId/image","description":"<p>Returns the image of an NFT receipt. The image is an SVG QR code with the Liberpay logo in the center. The QR code opens the receipt page of the charge.</p>\n<p>The response has the content type <code>image/svg+xml</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shortcode</code></td>\n<td>The shortcode of the charge that the receipt is for.</td>\n</tr>\n<tr>\n<td><code>tokenId</code></td>\n<td>The token ID of the NFT receipt. The API does not use it to make the image.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>404</td>\n<td>No charge has this shortcode.</td>\n</tr>\n<tr>\n<td>406</td>\n<td>The <code>Accept</code> header does not allow JSON or <code>*/*</code> (for example <code>Accept: image/png</code> only).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","npr","metadata",":shortcode",":tokenId","image"],"host":["https://api.liberpay.com"],"query":[],"variable":[{"id":"e7dd403e-5364-4326-b98a-883c122d8315","description":{"content":"<p>The shortcode of the charge that the receipt is for.</p>\n","type":"text/plain"},"type":"any","value":"73cJltPHglQdnVH","key":"shortcode"},{"id":"60504290-2bfb-4fa6-bd7a-e455f8e81c55","description":{"content":"<p>The token ID of the NFT receipt. The API does not use it to make the image.</p>\n","type":"text/plain"},"type":"any","value":"128","key":"tokenId"}]}},"response":[{"id":"2b4eab46-da51-453e-a65d-23b00c3280d1","name":"200 OK (SVG image)","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId/image","host":["https://api.liberpay.com"],"path":["api","npr","metadata",":shortcode",":tokenId","image"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge that the receipt is for."},{"key":"tokenId","value":"128","description":"The token ID of the NFT receipt. The API does not use it to make the image."}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[],"cookie":[],"responseTime":null,"body":"<svg xmlns=\"http://www.w3.org/2000/svg\" ...>...</svg>"},{"id":"822eb584-d7bc-459a-b9c2-8b301ed08985","name":"404 Not Found","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/npr/metadata/:shortcode/:tokenId/image","host":["https://api.liberpay.com"],"path":["api","npr","metadata",":shortcode",":tokenId","image"],"variable":[{"key":"shortcode","value":"73cJltPHglQdnVH","description":"The shortcode of the charge that the receipt is for."},{"key":"tokenId","value":"128","description":"The token ID of the NFT receipt. The API does not use it to make the image."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": {\n        \"detail\": \"Not Found\"\n    }\n}"}],"_postman_id":"345cf7cd-eac5-4a90-8379-8bc7d0b495b8"}],"id":"a6140192-55f4-48b6-af8d-4686dc31e071","description":"<p>Metadata for NFT receipts. After a crypto payment, the buyer can mint an NFT receipt from the Liberpay receipt contract. The <code>tokenURI</code> of each receipt points to these endpoints. Wallets and NFT marketplaces read them. Merchants do not usually call them.</p>\n","_postman_id":"a6140192-55f4-48b6-af8d-4686dc31e071","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}},{"name":"reference","item":[{"name":"status","id":"a7d24abf-c208-4c42-b3eb-6392baa59dfc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/status","description":"<p>Health check. Returns <code>ok</code> and the code of the server region that answered. Use it to check that the API is up.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>status</code></td>\n<td><code>string</code></td>\n<td>Always <code>ok</code>.</td>\n</tr>\n<tr>\n<td><code>region</code></td>\n<td><code>string</code></td>\n<td>The code of the server region, for example <code>sae1</code> (São Paulo).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","status"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"f4abd0b8-72a2-406e-bd15-86787385f4f5","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/status"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"region\": \"sae1\"\n}"}],"_postman_id":"a7d24abf-c208-4c42-b3eb-6392baa59dfc"},{"name":"currencies","id":"c86814c5-72e7-47fc-a760-c843e6e85c40","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/currencies","description":"<p>Lists the crypto currencies (tokens) that Liberpay knows. Each currency has its token contract address, its decimals, and its type (the network, for example Polygon).</p>\n<p>This response is edge-cached for 5 minutes.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The currency ID.</td>\n</tr>\n<tr>\n<td><code>data[].symbol</code></td>\n<td><code>string</code></td>\n<td>The token symbol, for example <code>USDC</code>.</td>\n</tr>\n<tr>\n<td><code>data[].decimals</code></td>\n<td><code>integer</code></td>\n<td>The number of decimals of the token.</td>\n</tr>\n<tr>\n<td><code>data[].address</code></td>\n<td><code>string</code></td>\n<td>The token contract address.</td>\n</tr>\n<tr>\n<td><code>data[].supported</code></td>\n<td><code>boolean|null</code></td>\n<td><code>true</code> when the receipt contract accepts this token. <code>null</code> means not known yet. Treat <code>null</code> as usable.</td>\n</tr>\n<tr>\n<td><code>data[].type</code></td>\n<td><code>object</code></td>\n<td>The gateway type (network) of the token, with its platform.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","currencies"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"abd941e5-b422-465c-ac25-9832aeb21e36","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/currencies"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 3,\n            \"name\": \"USD Coin\",\n            \"symbol\": \"USDC\",\n            \"decimals\": 6,\n            \"address\": \"0x0000000000000000000000000000000000000c01\",\n            \"supported\": true,\n            \"type\": {\n                \"id\": 1,\n                \"identifier\": \"polygon\",\n                \"label\": \"Polygon\",\n                \"platform\": {\n                    \"id\": 1,\n                    \"identifier\": \"evm\",\n                    \"label\": \"Ethereum Virtual Machine\"\n                }\n            }\n        }\n    ]\n}"}],"_postman_id":"c86814c5-72e7-47fc-a760-c843e6e85c40"},{"name":"fiatCurrencies","id":"9f684c91-f480-4adf-ab36-56cc358c7d56","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/fiat_currencies","description":"<p>Lists the fiat currencies (for example BRL and USD). Charges and products use these IDs for their fiat price.</p>\n<p>This response is edge-cached for 5 minutes.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The fiat currency ID.</td>\n</tr>\n<tr>\n<td><code>data[].name</code></td>\n<td><code>string</code></td>\n<td>The name of the currency.</td>\n</tr>\n<tr>\n<td><code>data[].sign</code></td>\n<td><code>string</code></td>\n<td>The display sign, for example <code>R$</code>.</td>\n</tr>\n<tr>\n<td><code>data[].symbol</code></td>\n<td><code>string</code></td>\n<td>The ISO 4217 code, for example <code>BRL</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","fiat_currencies"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"6ec51a8f-289e-4b27-87a4-c31b5eb68953","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/fiat_currencies"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"US Dollar\",\n            \"sign\": \"$\",\n            \"symbol\": \"USD\"\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Brazilian Real\",\n            \"sign\": \"R$\",\n            \"symbol\": \"BRL\"\n        }\n    ]\n}"}],"_postman_id":"9f684c91-f480-4adf-ab36-56cc358c7d56"},{"name":"exchangeRate","id":"23dd9591-4f2c-4365-a1a4-0f4a4af401c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/currencies/exchange?currency=BRL&base=USDC","description":"<p>Gives the price of one unit of <code>base</code> in units of <code>currency</code>. For example, <code>currency=BRL&amp;base=USDC</code> gives the number of BRL for 1 USDC.</p>\n<p>The price comes from an outside rate provider (Coinbase, then CoinMarketCap). The API keeps each pair for about 60 seconds. When both values are the same, the price is <code>1.0</code>.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>currency</code></td>\n<td>yes</td>\n<td>The symbol of the currency to price in, for example <code>BRL</code>.</td>\n</tr>\n<tr>\n<td><code>base</code></td>\n<td>yes</td>\n<td>The symbol of the currency to price, for example <code>USDC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>price</code></td>\n<td><code>number</code></td>\n<td>The number of <code>currency</code> units for one <code>base</code> unit.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"errors\">Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>The <code>currency</code> or <code>base</code> parameter is missing.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>No rate provider can give a price for this pair (for example, an unknown symbol).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","currencies","exchange"],"host":["https://api.liberpay.com"],"query":[{"description":{"content":"<p>The symbol of the currency to price in, for example <code>BRL</code>.</p>\n","type":"text/plain"},"key":"currency","value":"BRL"},{"description":{"content":"<p>The symbol of the currency to price, for example <code>USDC</code>.</p>\n","type":"text/plain"},"key":"base","value":"USDC"}],"variable":[]}},"response":[{"id":"3b643670-d55d-4a8d-989d-b1cdf05f61a4","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/currencies/exchange?currency=BRL&base=USDC","host":["https://api.liberpay.com"],"path":["api","currencies","exchange"],"query":[{"key":"currency","value":"BRL","description":"The symbol of the currency to price in, for example `BRL`."},{"key":"base","value":"USDC","description":"The symbol of the currency to price, for example `USDC`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"price\": 5.41\n}"},{"id":"6010f20a-1f13-4041-89ea-5d786e53d851","name":"400 Bad Request","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":{"raw":"https://api.liberpay.com/api/currencies/exchange?currency=BRL&base=USDC","host":["https://api.liberpay.com"],"path":["api","currencies","exchange"],"query":[{"key":"currency","value":"BRL","description":"The symbol of the currency to price in, for example `BRL`."},{"key":"base","value":"USDC","description":"The symbol of the currency to price, for example `USDC`."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"errors\": {\n        \"detail\": \"Bad Request\"\n    }\n}"}],"_postman_id":"23dd9591-4f2c-4365-a1a4-0f4a4af401c3"},{"name":"countries","id":"b3fbadfa-f409-4fa2-b181-e099e66af264","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/countries","description":"<p>Lists the enabled countries (markets) and their public settings: language, fiat currency, ID formats, fiscal profile, payment rails, KYC and legal document links.</p>\n<p>Use <code>gateway_types</code> to see which fiat rails (for example Stripe, PayPal, Woovi) a country offers. Crypto rails are not limited by country.</p>\n<p>This response is edge-cached for 5 minutes.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The country ID.</td>\n</tr>\n<tr>\n<td><code>data[].code</code></td>\n<td><code>string</code></td>\n<td>The ISO 3166-1 alpha-2 code, for example <code>BR</code>.</td>\n</tr>\n<tr>\n<td><code>data[].default_locale</code></td>\n<td><code>string</code></td>\n<td>The default language, for example <code>pt_BR</code>.</td>\n</tr>\n<tr>\n<td><code>data[].fiat_currency</code></td>\n<td><code>object</code></td>\n<td>The default fiat currency of the country.</td>\n</tr>\n<tr>\n<td><code>data[].personal_id_format</code></td>\n<td><code>string</code></td>\n<td>The format of the personal ID, for example <code>cpf</code>. <code>none</code> means that the country does not collect it.</td>\n</tr>\n<tr>\n<td><code>data[].business_id_format</code></td>\n<td><code>string</code></td>\n<td>The format of the business tax ID, for example <code>cnpj</code>. <code>none</code> means that the country does not collect it.</td>\n</tr>\n<tr>\n<td><code>data[].fiscal_profile</code></td>\n<td><code>string|null</code></td>\n<td><code>nf</code> when Liberpay issues a nota fiscal for fees. <code>null</code> when the country has no fiscal document.</td>\n</tr>\n<tr>\n<td><code>data[].gateway_types</code></td>\n<td><code>array</code></td>\n<td>The fiat gateway types that the country offers.</td>\n</tr>\n<tr>\n<td><code>data[].stripe_publishable_key</code></td>\n<td><code>string|null</code></td>\n<td>The public Stripe key for this country.</td>\n</tr>\n<tr>\n<td><code>data[].legal_urls</code></td>\n<td><code>object</code></td>\n<td>Links to legal documents, by kind and then by language.</td>\n</tr>\n<tr>\n<td><code>data[].terms_url</code></td>\n<td><code>string|null</code></td>\n<td>Deprecated. Use <code>legal_urls.terms</code>.</td>\n</tr>\n<tr>\n<td><code>data[].privacy_url</code></td>\n<td><code>string|null</code></td>\n<td>Deprecated. Use <code>legal_urls.privacy</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","countries"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"dcc78c73-2e68-4637-98ff-4d35edfae31b","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/countries"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\",\n            \"enabled\": true,\n            \"default_locale\": \"pt_BR\",\n            \"fiat_currency\": {\n                \"id\": 2,\n                \"name\": \"Brazilian Real\",\n                \"symbol\": \"BRL\",\n                \"sign\": \"R$\"\n            },\n            \"personal_id_format\": \"cpf\",\n            \"business_id_format\": \"cnpj\",\n            \"fiscal_profile\": \"nf\",\n            \"user_kyc_enabled\": true,\n            \"business_kyc_enabled\": true,\n            \"gateway_types\": [\n                {\n                    \"id\": 2,\n                    \"identifier\": \"paypal\",\n                    \"label\": \"PayPal\"\n                },\n                {\n                    \"id\": 3,\n                    \"identifier\": \"stripe\",\n                    \"label\": \"Stripe\"\n                },\n                {\n                    \"id\": 4,\n                    \"identifier\": \"woovi\",\n                    \"label\": \"Woovi\"\n                }\n            ],\n            \"stripe_publishable_key\": \"pk_live_EXAMPLE_NOT_REAL\",\n            \"legal_urls\": {\n                \"terms\": {\n                    \"en_US\": \"https://liberpay.com/terms-of-use/\",\n                    \"pt_BR\": \"https://liberpay.com/termos-de-uso/\"\n                },\n                \"privacy\": {\n                    \"en_US\": \"https://liberpay.com/privacy-policy/\",\n                    \"pt_BR\": \"https://liberpay.com/politica-de-privacidade/\"\n                }\n            },\n            \"terms_url\": \"https://liberpay.com/termos-de-uso/\",\n            \"privacy_url\": \"https://liberpay.com/politica-de-privacidade/\"\n        },\n        {\n            \"id\": 2,\n            \"code\": \"US\",\n            \"name\": \"United States\",\n            \"enabled\": true,\n            \"default_locale\": \"en_US\",\n            \"fiat_currency\": {\n                \"id\": 1,\n                \"name\": \"US Dollar\",\n                \"symbol\": \"USD\",\n                \"sign\": \"$\"\n            },\n            \"personal_id_format\": \"none\",\n            \"business_id_format\": \"none\",\n            \"fiscal_profile\": null,\n            \"user_kyc_enabled\": false,\n            \"business_kyc_enabled\": false,\n            \"gateway_types\": [\n                {\n                    \"id\": 2,\n                    \"identifier\": \"paypal\",\n                    \"label\": \"PayPal\"\n                },\n                {\n                    \"id\": 3,\n                    \"identifier\": \"stripe\",\n                    \"label\": \"Stripe\"\n                }\n            ],\n            \"stripe_publishable_key\": \"pk_live_EXAMPLE_NOT_REAL\",\n            \"legal_urls\": {\n                \"terms\": {\n                    \"en_US\": \"https://liberpay.com/terms-of-use/\",\n                    \"pt_BR\": \"https://liberpay.com/termos-de-uso/\"\n                },\n                \"privacy\": {\n                    \"en_US\": \"https://liberpay.com/privacy-policy/\",\n                    \"pt_BR\": \"https://liberpay.com/politica-de-privacidade/\"\n                }\n            },\n            \"terms_url\": \"https://liberpay.com/terms-of-use/\",\n            \"privacy_url\": \"https://liberpay.com/privacy-policy/\"\n        }\n    ]\n}"}],"_postman_id":"b3fbadfa-f409-4fa2-b181-e099e66af264"},{"name":"detectCountry","id":"6c715961-f61d-49db-a025-a8affff0cb19","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/countries/detect","description":"<p>Tells which country a new signup from this request would get. The response is different for each visitor and is not cached.</p>\n<p><code>pinned</code> is the country that the <code>Origin</code> of the request sets (for example, a market website). <code>detected</code> is the country that the CDN finds from the visitor's IP address. Each value is <code>null</code> when no rule applies, for example for a server-to-server call.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data.pinned</code></td>\n<td><code>object|null</code></td>\n<td>The country that the request origin sets (<code>id</code>, <code>code</code>, <code>name</code>), or <code>null</code>.</td>\n</tr>\n<tr>\n<td><code>data.detected</code></td>\n<td><code>object|null</code></td>\n<td>The enabled country that the CDN finds from the IP address, or <code>null</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","countries","detect"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"5a190d73-da73-49db-ab57-3d00950a66e2","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/countries/detect"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"ok\",\n    \"data\": {\n        \"pinned\": null,\n        \"detected\": {\n            \"id\": 1,\n            \"code\": \"BR\",\n            \"name\": \"Brazil\"\n        }\n    }\n}"}],"_postman_id":"6c715961-f61d-49db-a025-a8affff0cb19"},{"name":"gatewayTypes","id":"2155e340-e4a8-4472-9a56-9fcb7c5f13fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateway_types","description":"<p>Lists the gateway types. A gateway type is a payment rail, for example Polygon (crypto), Stripe, PayPal or Woovi (Pix). Each type belongs to a platform: <code>evm</code> for crypto, <code>fiat</code> for card and bank rails.</p>\n<p>This response is edge-cached for 5 minutes.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The gateway type ID. Use it as <code>type_id</code> when you create a gateway.</td>\n</tr>\n<tr>\n<td><code>data[].identifier</code></td>\n<td><code>string</code></td>\n<td>The stable name of the type, for example <code>stripe</code>.</td>\n</tr>\n<tr>\n<td><code>data[].label</code></td>\n<td><code>string</code></td>\n<td>The display name.</td>\n</tr>\n<tr>\n<td><code>data[].platform</code></td>\n<td><code>object</code></td>\n<td>The platform of the type: <code>evm</code> (crypto) or <code>fiat</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","gateway_types"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"2405d8e2-b5f3-4523-bd6d-4e805634bf8c","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/gateway_types"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"identifier\": \"polygon\",\n            \"label\": \"Polygon\",\n            \"platform\": {\n                \"id\": 1,\n                \"identifier\": \"evm\",\n                \"label\": \"Ethereum Virtual Machine\"\n            }\n        },\n        {\n            \"id\": 2,\n            \"identifier\": \"paypal\",\n            \"label\": \"PayPal\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        },\n        {\n            \"id\": 3,\n            \"identifier\": \"stripe\",\n            \"label\": \"Stripe\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        },\n        {\n            \"id\": 4,\n            \"identifier\": \"woovi\",\n            \"label\": \"Woovi\",\n            \"platform\": {\n                \"id\": 2,\n                \"identifier\": \"fiat\",\n                \"label\": \"Fiat Currency\"\n            }\n        }\n    ]\n}"}],"_postman_id":"2155e340-e4a8-4472-9a56-9fcb7c5f13fe"},{"name":"productStatuses","id":"918c7140-0acc-48c8-9881-726172fd8108","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.liberpay.com/api/product_statuses","description":"<p>Lists the product statuses. Use the <code>id</code> as <code>product_status_id</code> when you create or update a product. Only a <code>Published</code> product shows in the public store catalog.</p>\n<p>This response is edge-cached for 5 minutes.</p>\n<h3 id=\"authentication\">Authentication</h3>\n<p>No token. This endpoint is public.</p>\n<h3 id=\"response-fields\">Response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>data[].id</code></td>\n<td><code>integer</code></td>\n<td>The product status ID.</td>\n</tr>\n<tr>\n<td><code>data[].label</code></td>\n<td><code>string</code></td>\n<td>The name of the status, for example <code>Draft</code> or <code>Published</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","product_statuses"],"host":["https://api.liberpay.com"],"query":[],"variable":[]}},"response":[{"id":"0f74daea-f44d-4af8-94b4-cfff94313337","name":"200 OK","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"url":"https://api.liberpay.com/api/product_statuses"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"label\": \"Draft\"\n        },\n        {\n            \"id\": 2,\n            \"label\": \"Published\"\n        }\n    ]\n}"}],"_postman_id":"918c7140-0acc-48c8-9881-726172fd8108"}],"id":"fd2d8e91-c924-4017-97ef-880a2287da1f","description":"<p>Read-only lists that other endpoints refer to by ID: currencies, fiat currencies, countries, gateway types, gateway versions and product statuses. No token is necessary.</p>\n<p>Some lists are edge-cached. A cached response has the header <code>cache-control: public, max-age=0, s-maxage=300, stale-while-revalidate=600</code>. A change can take up to 5 minutes to show.</p>\n","_postman_id":"fd2d8e91-c924-4017-97ef-880a2287da1f","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"fb7d9328-d944-41b5-8605-d459ea859701","id":"fb7d9328-d944-41b5-8605-d459ea859701","name":"Liberpay API Docs","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"baseURL","value":"https://api.liberpay.com","type":"string"},{"key":"token","value":"","type":"string"}]}