Purchase success callbacks are defined by providing a target URL in the success_callback field on Purchase creation (see POST /purchases/). The system will generate a callback when:
a Purchase with skip_capture=false is successfully paid
The success_callback URL must not contain an explicit port. Only the scheme’s default port is usable — http on 80 and https on 443 — and a URL that spells the port out is rejected with webhooks_callback_port, including :80 and :443, which name the default port. Only the http and https schemes are accepted; any other scheme is rejected with webhooks_callback_scheme.
This restriction applies to success_callback (and to Webhook.callback) only. The redirect fields — success_redirect, failure_redirect, cancel_redirect — are not subject to it and do accept a custom port, so a development host serving on e.g. http://host:8899 can be used as a redirect target but not as a callback target.
All four fields — success_callback and the three redirects — are read from the top level of the POST /purchases/ request body, alongside brand_id and client_id, not from inside purchase. A callback or redirect placed inside purchase is ignored silently: the request still succeeds, the value is not stored, and no callback is delivered.These callbacks pass a JSON-encoded Purchase as their payload. The payload represents a snapshot of the state of the Purchase when the event was created. The payload will include an event_type field to indicate which specific event (see Event schema) triggered the callback.The payload is signed using a company-wide key pair. You can obtain the public key with GET /public_key/. See the Authentication section below for more details.
For creating and modifying webhooks, see the Webhook CRUD API specification.The same URL rules apply to a webhook’s callback field as to success_callback: no explicit port (only the scheme’s default 80 / 443, with :80 and :443 spelled out also rejected as webhooks_callback_port), and only the http and https schemes (webhooks_callback_scheme).Webhook callback payloads are signed using a dedicated key pair. You can obtain the public key from Webhook.public_key. See the Authentication section below for more details.
A callback delivery succeeds only when the target server responds with a 200 series HTTP response code. Failed deliveries are retried automatically: up to 8 attempts, scheduled at 3 ^ (attempt - 1) - 1 minutes from the moment the callback was first scheduled (not from the previous attempt), with the 8th and last attempt 36 hours 26 minutes after the first. Because of the asynchronous nature of network requests a callback can still be delivered more than once, so processing must be idempotent.The full schedule, the exact failure conditions, duplicate handling and the ordering guarantee between events of the same object are described in Delivery protocol.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CHIP API","colors":{"primary":"#5147DD","light":"#AE87FF","dark":"#0D001D"},"logo":{"light":"https://mintcdn.com/chipinsdnbhd/_ZYOd6liWS9njiPb/logo/wordmark.svg?fit=max\u0026auto=format\u0026n=_ZYOd6liWS9njiPb\u0026q=85\u0026s=f32c001ffd0f5418d58f69fffa20bda6","dark":"https://mintcdn.com/chipinsdnbhd/_ZYOd6liWS9njiPb/logo/wordmark.svg?fit=max\u0026auto=format\u0026n=_ZYOd6liWS9njiPb\u0026q=85\u0026s=f32c001ffd0f5418d58f69fffa20bda6"},"favicon":"https://mintcdn.com/chipinsdnbhd/_ZYOd6liWS9njiPb/favicon.png?fit=max\u0026auto=format\u0026n=_ZYOd6liWS9njiPb\u0026q=85\u0026s=a6b6c40ed82e53a96658e9c80455c134","api":{"openapi":["_openapi-chip-collect.yml","_openapi-chip-send.yml"]},"appearance":{"default":"dark","strict":true},"background":{"image":"https://mintcdn.com/chipinsdnbhd/_ZYOd6liWS9njiPb/images/background.png?fit=max\u0026auto=format\u0026n=_ZYOd6liWS9njiPb\u0026q=85\u0026s=dc517538f4416172f67b6e5eea3b1e41","color":{"dark":"#0C1220"}},"navbar":{"links":[{"href":"https://wa.me/chip.asia?text=Hi%20CHIP","label":"Support"},{"href":"https://blog.chip-in.asia","label":"Blog"}],"primary":{"type":"button","label":"Dashboard","href":"https://portal.chip-in.asia/login"}},"footer":{"socials":{"facebook":"https://www.facebook.com/chip.asia.fb","instagram":"https://www.instagram.com/chip_asia","github":"https://github.com/CHIPAsia","linkedin":"https://www.linkedin.com/company/chip-asia","twitter":"https://twitter.com/CHIP_asia"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"chipinsdnbhd","hasAudioNarration":false,"actualSubdomain":"chipinsdnbhd","customDomains":["docs.chip-in.asia"],"gitSource":{"type":"github","owner":"chipasia","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae36a18f23a51dd55304f0a","collectionId":"fa874b4f-4827-41e7-bb90-39f27164b061","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae36a18f23a51dd55304f0a"},"entitlements":{},"buildId":"6ae36a18f23a51dd55304f0a","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"CHIP Collect","count":55},{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"CHIP Send","count":34},{"language":"default","tag":"Overview","count":26},{"language":"default","tag":"Webhooks","count":13},{"language":"default","tag":"Purchases","count":10},{"language":"default","tag":"Clients","count":9},{"language":"default","tag":"Direct post \u0026 Skip payment page","count":8},{"language":"default","tag":"Bank Accounts","count":5},{"language":"default","tag":"Groups","count":5}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"chip-collect/overview/callbacks","slug":"/chip-collect/overview/callbacks","pageMetadata":{"title":"Callbacks","description":null,"href":"/chip-collect/overview/callbacks"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Two methods for defining asynchronous callbacks are supported - `,_jsx(_components.code,{children:`Purchase`}),` success callbacks and webhooks.`]}),`\n`,_jsx(Heading,{level:`2`,id:`purchase-success-callbacks`,children:`Purchase success callbacks`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Purchase`}),` success callbacks are defined by providing a target URL in the `,_jsx(_components.code,{children:`success_callback`}),` field on `,_jsx(_components.code,{children:`Purchase`}),` creation (see `,_jsx(_components.a,{href:`/chip-collect/api-reference/purchases/create`,children:`POST /purchases/`}),`). The system will generate a callback when:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`a `,_jsx(_components.code,{children:`Purchase`}),` with `,_jsx(_components.code,{children:`skip_capture=false`}),` is successfully paid`]}),`\n`,_jsxs(_components.li,{children:[`a `,_jsx(_components.code,{children:`Purchase`}),` with `,_jsx(_components.code,{children:`skip_capture=true`}),` is successfully captured (see `,_jsx(_components.a,{href:`/chip-collect/api-reference/purchases/capture`,children:`POST /purchases/{id}/capture/`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`a `,_jsx(_components.code,{children:`Purchase`}),` is successfully paid using a recurring token (see `,_jsx(_components.a,{href:`/chip-collect/api-reference/purchases/charge`,children:`POST /purchases/{id}/charge/`}),`)`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`success_callback`}),` URL must not contain an explicit port. Only the scheme’s default port is usable — `,_jsx(_components.code,{children:`http`}),` on 80 and `,_jsx(_components.code,{children:`https`}),` on 443 — and a URL that spells the port out is rejected with `,_jsx(_components.code,{children:`webhooks_callback_port`}),`, `,_jsxs(_components.strong,{children:[`including `,_jsx(_components.code,{children:`:80`}),` and `,_jsx(_components.code,{children:`:443`}),`, which name the default port`]}),`. Only the `,_jsx(_components.code,{children:`http`}),` and `,_jsx(_components.code,{children:`https`}),` schemes are accepted; any other scheme is rejected with `,_jsx(_components.code,{children:`webhooks_callback_scheme`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`This restriction applies to `,_jsx(_components.code,{children:`success_callback`}),` (and to `,_jsx(_components.code,{children:`Webhook.callback`}),`) only. The redirect fields — `,_jsx(_components.code,{children:`success_redirect`}),`, `,_jsx(_components.code,{children:`failure_redirect`}),`, `,_jsx(_components.code,{children:`cancel_redirect`}),` — are `,_jsx(_components.strong,{children:`not`}),` subject to it and do accept a custom port, so a development host serving on e.g. `,_jsx(_components.code,{children:`http://host:8899`}),` can be used as a redirect target but not as a callback target.`]})}),`\n`,_jsxs(_components.p,{children:[`All four fields — `,_jsx(_components.code,{children:`success_callback`}),` and the three redirects — are read from the `,_jsx(_components.strong,{children:`top level`}),` of the `,_jsx(_components.code,{children:`POST /purchases/`}),` request body, alongside `,_jsx(_components.code,{children:`brand_id`}),` and `,_jsx(_components.code,{children:`client_id`}),`, not from inside `,_jsx(_components.code,{children:`purchase`}),`. A callback or redirect placed inside `,_jsx(_components.code,{children:`purchase`}),` is ignored silently: the request still succeeds, the value is not stored, and no callback is delivered.`]}),`\n`,_jsxs(_components.p,{children:[`These callbacks pass a JSON-encoded `,_jsx(_components.code,{children:`Purchase`}),` as their payload. The payload represents a snapshot of the state of the `,_jsx(_components.code,{children:`Purchase`}),` when the event was created. The payload will include an `,_jsx(_components.code,{children:`event_type`}),` field to indicate which specific event (see `,_jsx(_components.a,{href:`/chip-collect/api-reference/webhooks/create`,children:`Event schema`}),`) triggered the callback.`]}),`\n`,_jsxs(_components.p,{children:[`The payload is signed using a company-wide key pair. You can obtain the public key with `,_jsx(_components.code,{children:`GET /public_key/`}),`. See the `,_jsx(_components.code,{children:`Authentication`}),` section below for more details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`webhooks`,children:`Webhooks`}),`\n`,_jsxs(_components.p,{children:[`For creating and modifying webhooks, see the Webhook `,_jsx(_components.a,{href:`/chip-collect/api-reference/webhooks/create`,children:`CRUD API specification`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The same URL rules apply to a webhook’s `,_jsx(_components.code,{children:`callback`}),` field as to `,_jsx(_components.code,{children:`success_callback`}),`: no explicit port (only the scheme’s default 80 / 443, with `,_jsx(_components.code,{children:`:80`}),` and `,_jsx(_components.code,{children:`:443`}),` spelled out also rejected as `,_jsx(_components.code,{children:`webhooks_callback_port`}),`), and only the `,_jsx(_components.code,{children:`http`}),` and `,_jsx(_components.code,{children:`https`}),` schemes (`,_jsx(_components.code,{children:`webhooks_callback_scheme`}),`).`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Webhook`}),` callback payloads are signed using a dedicated key pair. You can obtain the public key from `,_jsx(_components.code,{children:`Webhook.public_key`}),`. See the `,_jsx(_components.a,{href:`/chip-collect/overview/authentication`,children:`Authentication`}),` section below for more details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`delivery-protocol`,children:`Delivery protocol`}),`\n`,_jsxs(_components.p,{children:[`A callback delivery succeeds only when the target server responds with a `,_jsx(_components.code,{children:`200`}),` series HTTP response code. Failed deliveries are retried automatically: up to 8 attempts, scheduled at `,_jsx(_components.code,{children:`3 ^ (attempt - 1) - 1`}),` minutes `,_jsx(_components.strong,{children:`from the moment the callback was first scheduled`}),` (not from the previous attempt), with the 8th and last attempt 36 hours 26 minutes after the first. Because of the asynchronous nature of network requests a callback can still be delivered more than once, so processing must be idempotent.`]}),`\n`,_jsxs(_components.p,{children:[`The full schedule, the exact failure conditions, duplicate handling and the ordering guarantee between events of the same object are described in `,_jsx(_components.a,{href:`/chip-collect/overview/delivery-protocol`,children:`Delivery protocol`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Callbacks","description":null,"href":"/chip-collect/overview/callbacks"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Purchase success callbacks","slug":"purchase-success-callbacks","depth":2,"children":[]},{"title":"Webhooks","slug":"webhooks","depth":2,"children":[]},{"title":"Delivery protocol","slug":"delivery-protocol","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"chipinsdnbhd","siteName":"CHIP API","title":"Callbacks - CHIP API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T15:45:36.982Z","originalFileLocation":"chip-collect/overview/callbacks.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"CHIP API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Callbacks - CHIP API\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CHIP API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.chip-in.asia/chip-collect/overview/callbacks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://chipinsdnbhd.mintlify.app/_mintlify/api/og/v2?division=Overview\u0026amp;title=Callbacks\u0026amp;theme=76944bc5cf62695feaaacb7a\u0026amp;signature=6135c0f3b26f68abe8be9df8c54cade9e74101e89ced80c613cfb0e61b9bb213\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Callbacks - CHIP API\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://chipinsdnbhd.mintlify.app/_mintlify/api/og/v2?division=Overview\u0026amp;title=Callbacks\u0026amp;theme=76944bc5cf62695feaaacb7a\u0026amp;signature=6135c0f3b26f68abe8be9df8c54cade9e74101e89ced80c613cfb0e61b9bb213\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/chipinsdnbhd/tC8aMMXQKavc-_7e/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CHIP API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5147DD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.chip-in.asia/chip-collect/overview/callbacks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/chip-collect/overview/callbacks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.chip-in.asia/#organization\",\"name\":\"CHIP API\",\"url\":\"https://docs.chip-in.asia\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/chipinsdnbhd/_ZYOd6liWS9njiPb/logo/wordmark.svg?fit=max\u0026auto=format\u0026n=_ZYOd6liWS9njiPb\u0026q=85\u0026s=f32c001ffd0f5418d58f69fffa20bda6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.chip-in.asia#website\",\"name\":\"CHIP API\",\"url\":\"https://docs.chip-in.asia\",\"publisher\":{\"@id\":\"https://docs.chip-in.asia/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks#webpage\",\"url\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks\",\"name\":\"Callbacks\",\"dateModified\":\"2026-10-29T15:45:36.982Z\",\"isPartOf\":{\"@id\":\"https://docs.chip-in.asia#website\"},\"breadcrumb\":{\"@id\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Overview\",\"item\":\"https://docs.chip-in.asia/chip-collect/overview/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Callbacks\",\"item\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks#article\",\"headline\":\"Callbacks\",\"name\":\"Callbacks\",\"url\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks\",\"mainEntityOfPage\":{\"@id\":\"https://docs.chip-in.asia/chip-collect/overview/callbacks#webpage\"},\"dateModified\":\"2026-10-29T15:45:36.982Z\",\"publisher\":{\"@id\":\"https://docs.chip-in.asia/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.chip-in.asia#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CHIP API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CHIP API","nav":{"global":null,"tabs":[{"tab":"CHIP Collect","groups":[{"group":"Overview","pages":[{"title":"CHIP Collect API","href":"/chip-collect/overview/introduction"},{"title":"Quickstart","href":"/chip-collect/overview/quickstart"},{"title":"Authentication","href":"/chip-collect/overview/authentication"},{"title":"Webhook signatures","href":"/chip-collect/overview/webhook-signatures"},{"title":"Errors","href":"/chip-collect/overview/errors"},{"title":"Changelog","href":"/chip-collect/overview/changelog"},{"group":"Online Purchases","pages":[{"title":"Payment Link","href":"/chip-collect/overview/online-purchases/payment-link"},{"title":"Subscriptions","href":"/chip-collect/overview/online-purchases/subscription"},{"title":"Pre-Authorization","href":"/chip-collect/overview/online-purchases/pre-auth"},{"title":"Custom","description":null,"href":"/chip-collect/overview/online-purchases/custom"}]},{"title":"Callbacks","href":"/chip-collect/overview/callbacks"},{"title":"Delivery protocol","description":"How CHIP Collect delivers callbacks and webhooks, and how failed deliveries are retried.","href":"/chip-collect/overview/delivery-protocol"},{"title":"What We Offer","href":"/chip-collect/overview/what-we-offer"},{"group":"Direct post \u0026 Skip payment page","pages":[{"title":"Introduction","href":"/chip-collect/overview/direct-post/intro"},{"title":"FPX","href":"/chip-collect/overview/direct-post/fpx"},{"title":"Card (VISA/Mastercard)","href":"/chip-collect/overview/direct-post/card"},{"title":"Card response metadata","href":"/chip-collect/overview/direct-post/card-response-metadata"},{"title":"E-Wallet","href":"/chip-collect/overview/direct-post/e-wallet"},{"title":"Duitnow-QR","href":"/chip-collect/overview/direct-post/duitnow-qr"},{"title":"Crypto Coin","href":"/chip-collect/overview/direct-post/crypto-coin"},{"title":"Set a default payment method","href":"/chip-collect/overview/direct-post/active-payment-method"}]}]},{"group":"Integrate with AI agents","pages":[{"title":"Install the skill","href":"/chip-collect/overview/vibe-coding-guide"}]},{"group":"API Reference","pages":[{"group":"Purchases","pages":[{"openapi":"_openapi-chip-collect POST /purchases/","title":"Create a purchase","href":"/chip-collect/api-reference/purchases/create"},{"openapi":"_openapi-chip-collect GET /purchases/{id}/","title":"Retrieve a purchase","href":"/chip-collect/api-reference/purchases/retrieve"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/cancel/","title":"Cancel a pending purchase","href":"/chip-collect/api-reference/purchases/cancel"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/capture/","title":"Capture a previously authorized payment","href":"/chip-collect/api-reference/purchases/capture"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/charge/","title":"Charge a purchase using a saved token","href":"/chip-collect/api-reference/purchases/charge"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/delete_recurring_token/","title":"Delete a recurring token associated with a purchase","href":"/chip-collect/api-reference/purchases/delete-recurring-token"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/mark_as_paid/","title":"Mark a purchase as paid","href":"/chip-collect/api-reference/purchases/mark-as-paid"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/refund/","title":"Refund a paid purchase","href":"/chip-collect/api-reference/purchases/refund"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/release/","title":"Release funds on hold","href":"/chip-collect/api-reference/purchases/release"},{"openapi":"_openapi-chip-collect POST /purchases/{id}/resend_invoice/","title":"Resend an invoice","href":"/chip-collect/api-reference/purchases/resend-invoice"}]},{"group":"Payment methods","pages":[{"openapi":"_openapi-chip-collect GET /payment_methods/","title":"List of payment methods","href":"/chip-collect/api-reference/payment-methods/list"}]},{"group":"Clients","pages":[{"openapi":"_openapi-chip-collect POST /clients/","title":"Create a client","href":"/chip-collect/api-reference/clients/create"},{"openapi":"_openapi-chip-collect DELETE /clients/{client_id}/recurring_tokens/{purchase_id}/","title":"Delete a recurring token","href":"/chip-collect/api-reference/clients/delete-recurring-tokens"},{"openapi":"_openapi-chip-collect DELETE /clients/{id}/","title":"Delete a client","href":"/chip-collect/api-reference/clients/delete"},{"openapi":"_openapi-chip-collect GET /clients/{id}/recurring_tokens/","title":"List recurring tokens","href":"/chip-collect/api-reference/clients/list-recurring-tokens"},{"openapi":"_openapi-chip-collect GET /clients/","title":"List all clients","href":"/chip-collect/api-reference/clients/list"},{"openapi":"_openapi-chip-collect PATCH /clients/{id}/","title":"Partially update a client","href":"/chip-collect/api-reference/clients/partial-update"},{"openapi":"_openapi-chip-collect GET /clients/{client_id}/recurring_tokens/{purchase_id}/","title":"Retrieve a recurring token","href":"/chip-collect/api-reference/clients/retrieve-recurring-tokens"},{"openapi":"_openapi-chip-collect GET /clients/{id}/","title":"Retrieve a client","href":"/chip-collect/api-reference/clients/retrieve"},{"openapi":"_openapi-chip-collect PUT /clients/{id}/","title":"Update a client","href":"/chip-collect/api-reference/clients/update"}]},{"group":"Webhooks","pages":[{"openapi":"_openapi-chip-collect POST /webhooks/","title":"Create a webhook","href":"/chip-collect/api-reference/webhooks/create"},{"openapi":"_openapi-chip-collect DELETE /webhooks/{id}/","title":"Delete a webhook","href":"/chip-collect/api-reference/webhooks/delete"},{"openapi":"_openapi-chip-collect GET /webhooks/","title":"List all webhooks","href":"/chip-collect/api-reference/webhooks/list"},{"openapi":"_openapi-chip-collect PATCH /webhooks/{id}/","title":"Partially update a webhook","href":"/chip-collect/api-reference/webhooks/partial-update"},{"openapi":"_openapi-chip-collect GET /webhooks/{id}/","title":"Retrieve a webhook","href":"/chip-collect/api-reference/webhooks/retrieve"},{"openapi":"_openapi-chip-collect PUT /webhooks/{id}/","title":"Update a webhook","href":"/chip-collect/api-reference/webhooks/update"}]},{"group":"Public key","pages":[{"openapi":"_openapi-chip-collect GET /public_key/","title":"Retrieve a public key","href":"/chip-collect/api-reference/public-key/retrieve"}]},{"group":"Account","pages":[{"openapi":"_openapi-chip-collect GET /account/json/balance/","title":"Get company balance","href":"/chip-collect/api-reference/account/balance"},{"openapi":"_openapi-chip-collect GET /account/json/turnover/","title":"Get company turnover","href":"/chip-collect/api-reference/account/turnover"}]},{"group":"Company statements","pages":[{"openapi":"_openapi-chip-collect POST /company_statements/{id}/cancel/","title":"Cancel a statement","href":"/chip-collect/api-reference/company-statements/cancel"},{"openapi":"_openapi-chip-collect GET /company_statements/","title":"List all statements","href":"/chip-collect/api-reference/company-statements/list"},{"openapi":"_openapi-chip-collect GET /company_statements/{id}/","title":"Retrieve a statement","href":"/chip-collect/api-reference/company-statements/retrieve"},{"openapi":"_openapi-chip-collect POST /company_statements/","title":"Schedule a statement","href":"/chip-collect/api-reference/company-statements/schedule"}]}]}]},{"tab":"CHIP Send","pages":[{"title":"CHIP Send","href":"/chip-send/api-reference/overview"}]}]},"basePath":"","title":"Callbacks - CHIP API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}