Delete a recurring token associated with a purchase
Sets is_recurring_token to false. You won’t be able to use this Purchase’s ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted.
If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.
POST
/
purchases
/
{id}
/
delete_recurring_token
/
Delete a recurring token associated with a purchase
Record of a single purchase operation, either a transaction originating from e-commerce integration or invoice sent. Has a status attribute, e.g. can be created, paid or refunded.
created: Purchase was created using POST /purchases/ or the merchant portal.
sent: Invoice for this purchase was sent over email.
viewed: The client has viewed the payform and/or invoice details for this purchase.
error: There was a failed payment attempt for this purchase because of a problem with customer's payment instrument (e.g. low account balance). You can analyze the .transaction_data to get information on reason of the failure.
cancelled: Purchase was cancelled using the POST /purchases/{id}/cancel/ endpoint; payment for it is not possible anymore.
overdue: Purchase is past its .due, but payment for it is still possible (unless e.g. POST /purchases/{id}/cancel/ is used).
expired: Purchase is past its .due and payment for it isn't possible anymore (as a result of purchase.due_strict having been set to true).
blocked: Like error, but payment attempt was blocked due to fraud scoring below threshold or other security checks not passing.
hold: Funds are on hold for this Purchase (.skip_capture: true was used). You can now run POST /capture/ or POST /release/ for this payment to capture the payment or return funds to the client, respectively.
released: This Purchase previously had hold status, but funds have since been released and returned to the customer's card.
pending_release: release of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by POST /purchases/{id}/release/ operation when it takes longer than expected to process on the acquirer side.
pending_capture: capture of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by POST /purchases/{id}/capture/ operation when it takes longer than expected to process on the acquirer side.
preauthorized: A preauthorization of a card (authorization of card data without a financial transaction) was executed successfully using this Purchase. See the description of the .skip_capture field for more details.
paid: Purchase was successfully paid for.
pending_execute: Payment (or hold in case of skip_capture) for this Purchase is in processing, but is not finalized on the acquirer side yet.
pending_charge: Recurring payment for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by POST /purchases/{id}/charge/ operation when it takes longer than expected to process on the acquirer side.
cleared: Funds for this Purchase (that was already paid) have been transferred for clearing in payment card network. All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in paid status instead.
settled: Settlement was issued for funds for this Purchase (that was already paid). All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in paid status instead.
chargeback: A chargeback was registered for this, previously paid, Purchase.
pending_refund: a refund (full or partial) for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by POST /purchases/{id}/refund/ operation when it takes longer than expected to process on the acquirer side.
refunded: This Purchase had its payment refunded, fully or partially.
History of status changes, latest last. Might contain entry about a related object, e.g. status change to refunded will contain a reference to the refund Payment.
ID of a Client object used to initialize ClientDetails (.client) of this Purchase. Either this field or specifying .client object is required (you can only specify a value for one of these fields). All ClientDetails fields from the Client will be copied to .client object. Note that editing Client object won't change the respective fields in already created Purchases.
If you specify this field and your client saves a recurring_token (for instance, by saving their card), the respective ClientRecurringToken will be created. See the /clients/{id}/recurring_tokens/ endpoint.
Indicates whether a recurring token (e.g. for card payments - card token) was saved for this Purchase. If this is true, the id of this Purchase can be used as a recurring_token in POST /purchases/{id}/charge/, enabling you to pay for that Purchase using the same method (same card for card payments) that this one was paid with. This field answers "can this Purchase be used as a token", and is NOT the same as recurring_token below, which answers "was this Purchase paid using a token". A Purchase that is merely paid does not necessarily have this set to true - a token is saved only when remember_card=on (with direct_post) or force_recurring=true (hosted checkout) was used and the payment is completed.
ID of a recurring token (Purchase having is_recurring_token == true) that was used to pay this Purchase, if any. It is null when this Purchase was paid with a newly entered payment method rather than a saved token. A Purchase paid by a token therefore has this field set and is_recurring_token false, because it was billed with an existing token instead of creating a new one. This field answers "was this Purchase paid using a token", and is NOT the same as is_recurring_token above, which answers "can this Purchase be used as a token".
Card payment-specific: if set to true, only authorize the payment (place funds on hold) when payer enters his card data and pays. This option requires a POST /capture/ or POST /release/ later on.
You can use the preauthorization feature if you set this parameter to true and make the Purchase with purchase.total == 0 (this can be achieved by providing a list of purchase.products with a total price of 0, or simply overriding the total using purchase.total_override to 0). The resulting Purchase can only be "paid" by the client (only cardholder data verification will happen, without a financial transaction) by card and will enforce saving the client's card. When this happens, the Purchase will have status of preauthorized and the purchase.preauthorized webhook callbacks will be emitted.
Trying to use skip_capture (or preauthorization) without any payment methods that support the respective actions (this can be a result of payment_method_whitelist field being used) will result in an error on Purchase creation request step. Please check the GET /payment_methods/ response for your desired Purchase parameters and/or consult with your account manager.
If the used payment method supports recurring payment functionality, forces the customer's payment credentials to be saved for possible later recurring payments, without giving the customer a choice in the matter.
Value for 'Invoice issued' field. Display-only, does not get validated. If not provided, will be generated as the current date in purchase.timezone at the moment of Purchase's creation.
When the payment is due for this Purchase. The default behaviour is to still allow payment once this moment passes. To change that, set purchase.due_strict to true.
This object is present when automatic currency conversion has occurred upon creation of the purchase. Purchase's original currency was changed and its original amount was converted using the exchange rate shown here.
An optional whitelist of payment methods available for this purchase. Use this field if you want to restrict your payer to pay using only one or several specific methods.
Using this field and at the same time trying to use specific capabilities of a Purchase (e.g. skip_capture or charging it using a saved card token using POST /purchases/{id}/charge/) can cause a situation when there are no payment methods available for paying this Purchase. This will cause a validation error on Purchase creation. Please check the GET /payment_methods/ response for your desired Purchase parameters and/or consult with your account manager.
Minimum array length: 1
Payment method name as returned by GET /payment_methods/.
If you provide this link, customer will have an option to go to it instead of making payment (a button with 'Return to seller' text will be displayed). Can't contain any of the following symbols: <>'" .
Be aware that this does not cancel the payment (e.g. does not do the equivalent of doing the POST /purchases/{id}/cancel/ request); the client will still be able to press 'Back' in the browser and perform the payment.
When Purchase is paid for successfully, the success_callback URL will receive a POST request with the Purchase object's data in body.
The URL must not contain an explicit port. Only the scheme's default port is usable (http on 80, 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 supported; any other scheme is rejected with webhooks_callback_scheme. This restriction applies to success_callback and Webhook.callback only - see success_redirect, failure_redirect and cancel_redirect, which accept a custom port.
URL you will be able to access the checkout for this Purchase at, if payment for it is possible. When building integrations, redirect the customer to this URL once purchase is created.
You can add the preferred query arg to the checkout_url in order to force redirect the client straight to the checkout for a specific payment method (?preferred={payment_method}, where {payment_method} is the payment method name as returned by GET /payment_methods/). If this method redirects the client further to a different system and no customer data entry is needed on gateway's checkout page, your payer will be taken straight to that page (not seeing the gateway's checkout UI); otherwise, he will see the payment method entry UI on the gateway checkout page.
You can also add the active query arg to the checkout_url in order to pre-select a specific payment method on the default payment page without skipping it (?active={payment_method}, where {payment_method} is the payment method name as returned by GET /payment_methods/). Unlike ?preferred={payment_method}, the customer still sees the default payment page and can switch to a different method. The ?active= parameter does not restrict which methods are available.
This functionality is activated for each merchant account individually. Please consult with your account manager if you wish to use it.
Will be null if payment for purchase is not possible, purchase.request_client_details isn't empty or success_redirect/failure_redirect are not provided - these all break the usual direct post flow.
To leverage Direct Post checkout, create a <form> having method="POST" action="<direct_post_url value>" and include the following inputs:
cardholder_name: text, Latin letters only (space and apostrophe ('), dot (.), dash (-) symbols are also allowed), max 30 chars
card_number: text, digits only, no whitespace, max 19 chars
expires: text in 'MM/YY' format, digits and a slash only /^\d{2}\/\d{2}$/, max 5 chars
cvc: numeric string of 3 or 4 digits
remember_card: checkbox with value="on" (the default when omitting value attribute of a checkbox input)
Ensure the validation as listed above! Validation errors will be treated as payment failures. Obviously, you can style this form to fit in with the rest of your website.
When your payer submits this form (don't forget a <button> or <input type="submit">), he will POST the data directly to the gateway system. There, with minimal interaction with gateway's interface, payment will be processed. In the process, your customer might get redirected to authenticate against 3D Secure system of his card issuer bank (this depends on settings of his card and your account). After that, payer will be taken to success_redirect or failure_redirect depending on the payment result (as in the usual payment flow).
Be aware, though, that while not having to process card data allows you not to comply with the entirety of PCI DSS SAQ D requirements, having sensitive cardholder data entry form on your website does raise your PCI DSS scope to SAQ A-EP. Contact your account manager to receive advisory and assistance for this integration method.
{"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":"6adf6c4a6c71dd37a9885ca0","collectionId":"820e74a1-76a9-49b2-ab8e-13fbd464d81b","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf6c4a6c71dd37a9885ca0"},"entitlements":{},"buildId":"6adf6c4a6c71dd37a9885ca0","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"CHIP Collect","count":54},{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"CHIP Send","count":34},{"language":"default","tag":"Overview","count":25},{"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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"chip-collect/api-reference/purchases/delete-recurring-token","slug":"/chip-collect/api-reference/purchases/delete-recurring-token","pageMetadata":{"openapi":"_openapi-chip-collect POST /purchases/{id}/delete_recurring_token/","description":"Sets `is_recurring_token` to `false`. You won't be able to use this Purchase's ID as a `recurring_token` anymore. The respective `ClientRecurringToken`, if any, will also be deleted.\n\nIf this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a `purchase.pending_recurring_token_delete` event. To be notified of a successful operation completion, please subscribe to the `purchase.recurring_token_deleted` callback event.","title":"Delete a recurring token associated with a purchase","href":"/chip-collect/api-reference/purchases/delete-recurring-token"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Sets \", _jsx(_components.code, {\n children: \"is_recurring_token\"\n }), \" to \", _jsx(_components.code, {\n children: \"false\"\n }), \". You won’t be able to use this Purchase’s ID as a \", _jsx(_components.code, {\n children: \"recurring_token\"\n }), \" anymore. The respective \", _jsx(_components.code, {\n children: \"ClientRecurringToken\"\n }), \", if any, will also be deleted.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a \", _jsx(_components.code, {\n children: \"purchase.pending_recurring_token_delete\"\n }), \" event. To be notified of a successful operation completion, please subscribe to the \", _jsx(_components.code, {\n children: \"purchase.recurring_token_deleted\"\n }), \" callback event.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"_openapi-chip-collect POST /purchases/{id}/delete_recurring_token/","description":"Sets `is_recurring_token` to `false`. You won't be able to use this Purchase's ID as a `recurring_token` anymore. The respective `ClientRecurringToken`, if any, will also be deleted.\n\nIf this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a `purchase.pending_recurring_token_delete` event. To be notified of a successful operation completion, please subscribe to the `purchase.recurring_token_deleted` callback event.","title":"Delete a recurring token associated with a purchase","href":"/chip-collect/api-reference/purchases/delete-recurring-token"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"purchases_delete_recurring_token","description":"Sets `is_recurring_token` to `false`. You won't be able to use this Purchase's ID as a `recurring_token` anymore. The respective `ClientRecurringToken`, if any, will also be deleted.\n\nIf this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a `purchase.pending_recurring_token_delete` event. To be notified of a successful operation completion, please subscribe to the `purchase.recurring_token_deleted` callback event.","responses":{"200":"9673128b-e993-409b-b1bb-396e7d95d2e1","404":"dec59f96-23d3-4621-bbf8-0d8d3ce56752"},"summary":"Delete a recurring token associated with a purchase","tags":["Purchases"],"security":["916be330-fa6b-45e2-81fc-4278a059af56"],"method":"post","type":"path","servers":["b158211a-bed0-41c2-b0f4-83a17dfd9b9a"],"path":"/purchases/{id}/delete_recurring_token/","baseUrlOptions":["https://gate.chip-in.asia/api/v1"],"title":"Delete a recurring token associated with a purchase","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"dfe2645e-7c24-4ec5-a72f-c6d180e81c90":{"name":"id","required":true,"in":"path","description":"Object ID (UUID)","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Object ID (UUID)","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"responses":{"9673128b-e993-409b-b1bb-396e7d95d2e1":{"description":"OK","content":{"application/json":{"schema":{"type":"object","description":"Record of a single purchase operation, either a transaction originating from e-commerce integration or invoice sent. Has a status attribute, e.g. can be `created`, `paid` or `refunded`.","required":["client","purchase","brand_id"],"properties":{"client":{"type":"object","description":"Either this or `.client_id` is required.","required":["email"],"properties":{"email":{"type":"string","format":"email","maxLength":254,"example":"customer@example.com","description":"Email address","isRequired":true,"uniqueKey":"client.email","typeLabel":"string\u003cemail>"},"bank_account":{"type":"string","maxLength":64,"description":"Bank account number (e.g. IBAN)","uniqueKey":"client.bank_account","typeLabel":"string"},"bank_code":{"type":"string","maxLength":32,"description":"SWIFT/BIC code of the bank","uniqueKey":"client.bank_code","typeLabel":"string"},"phone":{"type":"string","maxLength":32,"description":"Phone number in the `\u003ccountry_code> \u003cnumber>` format","example":"+60 123456789","uniqueKey":"client.phone","typeLabel":"string"},"full_name":{"type":"string","maxLength":1000,"description":"Name and surname of client. It is advisable to include `full_name` in request body.","uniqueKey":"client.full_name","typeLabel":"string"},"personal_code":{"type":"string","maxLength":32,"description":"Personal identification code of client","uniqueKey":"client.personal_code","typeLabel":"string"},"street_address":{"type":"string","maxLength":128,"description":"Street house number and flat address where applicable","uniqueKey":"client.street_address","typeLabel":"string"},"country":{"type":"string","maxLength":2,"description":"Country code in the ISO 3166-1 alpha-2 format (e.g. 'GB')","uniqueKey":"client.country","typeLabel":"string"},"city":{"type":"string","maxLength":128,"description":"City name","uniqueKey":"client.city","typeLabel":"string"},"zip_code":{"type":"string","maxLength":32,"description":"ZIP or postal code","uniqueKey":"client.zip_code","typeLabel":"string"},"state":{"type":"string","maxLength":128,"description":"State code","uniqueKey":"client.state","typeLabel":"string"},"shipping_street_address":{"type":"string","maxLength":128,"description":"Street house number and flat address where applicable","uniqueKey":"client.shipping_street_address","typeLabel":"string"},"shipping_country":{"type":"string","maxLength":2,"description":"Country code in the ISO 3166-1 alpha-2 format (e.g. 'GB')","uniqueKey":"client.shipping_country","typeLabel":"string"},"shipping_city":{"type":"string","maxLength":128,"description":"City name","uniqueKey":"client.shipping_city","typeLabel":"string"},"shipping_zip_code":{"type":"string","maxLength":32,"description":"ZIP or postal code","uniqueKey":"client.shipping_zip_code","typeLabel":"string"},"shipping_state":{"type":"string","maxLength":128,"description":"State code","uniqueKey":"client.shipping_state","typeLabel":"string"},"cc":{"type":"array","items":{"type":"string","format":"email","maxLength":254,"example":"customer@example.com","description":"Email address","uniqueKey":"client.cc.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to receive a carbon copy of all notification emails","uniqueKey":"client.cc","typeLabel":"string\u003cemail>[]"},"bcc":{"type":"array","items":{"type":"string","format":"email","maxLength":254,"example":"customer@example.com","description":"Email address","uniqueKey":"client.bcc.items.[INDEX]","typeLabel":"string\u003cemail>"},"description":"Email addresses to receive a blind carbon copy of all notification emails","uniqueKey":"client.bcc","typeLabel":"string\u003cemail>[]"},"legal_name":{"type":"string","maxLength":1000,"description":"Legal name of company","uniqueKey":"client.legal_name","typeLabel":"string"},"brand_name":{"type":"string","maxLength":128,"description":"Company brand name","uniqueKey":"client.brand_name","typeLabel":"string"},"registration_number":{"type":"string","maxLength":32,"description":"Registration number of company","uniqueKey":"client.registration_number","typeLabel":"string"},"tax_number":{"type":"string","maxLength":32,"description":"Tax payer registration number","uniqueKey":"client.tax_number","typeLabel":"string"}},"isRequired":true,"uniqueKey":"client","typeLabel":"object"},"purchase":{"description":"Core information about the Purchase, including the products, total, currency and invoice fields.","required":["products"],"properties":{"products":{"type":"array","minItems":1,"description":"Line items of the invoice. In case of a transaction with no invoice sent, specify a single Product forming the cost of transaction.","items":{"required":["name","price"],"properties":{"name":{"type":"string","maxLength":256,"description":"Product name","isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].name","typeLabel":"string"},"price":{"type":"integer","description":"You can use this field or `total_override` with a value of 0 to activate the preauthorization scenario. See the description of the `Purchase.skip_capture` field.\n\nThis field is an integer, and the value should be in cents. Setting the value to 100 is equivalent to RM 1.00.\n","minimum":0,"isRequired":true,"uniqueKey":"purchase.products.items.[INDEX].price","typeLabel":"integer"},"quantity":{"type":"string","minimum":0,"default":1,"description":"Quantity of these products in invoice","uniqueKey":"purchase.products.items.[INDEX].quantity","typeLabel":"string"},"discount":{"type":"integer","description":"Total discount per this product in invoice","default":0,"minimum":0,"uniqueKey":"purchase.products.items.[INDEX].discount","typeLabel":"integer"},"tax_percent":{"type":"string","minimum":0,"maximum":100,"default":0,"description":"Percent of tax added to the price of this product","uniqueKey":"purchase.products.items.[INDEX].tax_percent","typeLabel":"string"},"category":{"type":"string","maxLength":256,"description":"Product category","uniqueKey":"purchase.products.items.[INDEX].category","typeLabel":"string"},"total_price_override":{"oneOf":[{"type":"integer","description":"If specified and not null, will override the total price for this product.","uniqueKey":"purchase.products.items.[INDEX].total_price_override.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"purchase.products.items.[INDEX].total_price_override.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase.products.items.[INDEX].total_price_override","typeLabel":"integer | null"}},"type":"object","uniqueKey":"purchase.products.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchase.products","typeLabel":"object[]"},"currency":{"type":"string","maxLength":3,"description":"Currency code in the ISO 4217 standard (e.g. 'MYR').","uniqueKey":"purchase.currency","typeLabel":"string"},"total":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"Calculated from `products`. You don't need to specify it.","uniqueKey":"purchase.total","typeLabel":"integer"},"language":{"x-summary":"Language of invoice/payment forms.","type":"string","maxLength":2,"description":"Language code in the ISO 639-1 format (e.g. 'en')","default":"Default value is controlled in Company -> Brand section of merchant portal separately per each Brand used (default value, if no changes are made, is `en`). Brand to be used with corresponding Purchase specified using brand_id.","uniqueKey":"purchase.language","typeLabel":"string"},"notes":{"x-summary":"Invoice notes.","type":"string","maxLength":10000,"uniqueKey":"purchase.notes","typeLabel":"string"},"debt":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","default":0,"x-summary":"Will be added/subtracted to the invoice total, if present.","x-minValue":"`total` * -1","uniqueKey":"purchase.debt","typeLabel":"integer"},"subtotal_override":{"oneOf":[{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"If specified and not null, will override the grand subtotal. This field is visual-only, setting it won't impact `total`.","uniqueKey":"purchase.subtotal_override.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"purchase.subtotal_override.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase.subtotal_override","typeLabel":"integer | null"},"total_tax_override":{"oneOf":[{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"If specified and not null, will override the total tax. This field is visual-only, setting it won't impact `total`.","uniqueKey":"purchase.total_tax_override.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"purchase.total_tax_override.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase.total_tax_override","typeLabel":"integer | null"},"total_discount_override":{"oneOf":[{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"If specified and not null, will override the total discount. This field is visual-only, setting it won't impact `total`.","uniqueKey":"purchase.total_discount_override.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"purchase.total_discount_override.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase.total_discount_override","typeLabel":"integer | null"},"total_override":{"oneOf":[{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"If specified and not null, will override the total (unlike the rest of `total_*_override` fields).\n\nYou can use this field or `products[].total` with a value of 0 to activate preauthorization scenario. See the description of the `Purchase.skip_capture` field.","uniqueKey":"purchase.total_override.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"purchase.total_override.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase.total_override","typeLabel":"integer | null"},"request_client_details":{"type":"array","description":"ClientDetails fields to request from the client before the payment. If a value is passed for a field in ClientDetails, it will be automatically removed from this list.\n\nIt is advisable to include `full_name` in request body.\n","default":[],"uniqueItems":true,"items":{"type":"string","enum":["email","phone","full_name","personal_code","brand_name","legal_name","registration_number","tax_number","bank_account","bank_code","billing_address","shipping_address"],"uniqueKey":"purchase.request_client_details.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"purchase.request_client_details","typeLabel":"enum\u003cstring>[]"},"timezone":{"type":"string","description":"Timezone to localize invoice-specific timestamps in, e.g. to display a concrete date for a `due` timestamp on the invoice.","example":"Europe/Oslo","uniqueKey":"purchase.timezone","typeLabel":"string"},"due_strict":{"type":"boolean","default":false,"description":"Whether to permit payments when Purchase's `due` has passed. By default those are permitted (and status will be set to `overdue` once `due` moment is passed). If this is set to `true`, it won't be possible to pay for an overdue invoice, and when `due` is passed the Purchase's status will be set to `expired`.","uniqueKey":"purchase.due_strict","typeLabel":"boolean"},"email_message":{"type":"string","maxLength":512,"description":"An optional message to display to your customer in invoice email, e.g. \"Your invoice for June\".","uniqueKey":"purchase.email_message","typeLabel":"string"},"shipping_options":{"type":"array","description":"Shipping options available for this purchase.","items":{"type":"object","uniqueKey":"purchase.shipping_options.items.[INDEX]","typeLabel":"object"},"uniqueKey":"purchase.shipping_options","typeLabel":"object[]"},"payment_method_details":{"type":"object","description":"Payment method-specific details.","uniqueKey":"purchase.payment_method_details","typeLabel":"object"},"has_upsell_products":{"type":"boolean","description":"Indicates if the purchase has upsell products.","uniqueKey":"purchase.has_upsell_products","typeLabel":"boolean"},"single_attempt":{"type":"boolean","description":"If true, only a single payment attempt is allowed.","uniqueKey":"purchase.single_attempt","typeLabel":"boolean"},"metadata":{"type":"object","description":"Metadata associated with the purchase.","uniqueKey":"purchase.metadata","typeLabel":"object"}},"type":"object","isRequired":true,"uniqueKey":"purchase","typeLabel":"object"},"brand_id":{"type":"string","format":"uuid","description":"ID of the brand to create this Purchase for. Once registered, You can obtain at: https://portal.chip-in.asia/collect/developers/brands","isRequired":true,"uniqueKey":"brand_id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","description":"Object type identifier","uniqueKey":"type","typeLabel":"string"},"id":{"type":"string","format":"uuid","uniqueKey":"id","typeLabel":"string\u003cuuid>"},"created_on":{"type":"integer","description":"Object creation time","format":"int64","example":1619740800,"uniqueKey":"created_on","typeLabel":"integer\u003cint64>"},"updated_on":{"type":"integer","description":"Object last modification time","format":"int64","example":1619740800,"uniqueKey":"updated_on","typeLabel":"integer\u003cint64>"},"payment":{"oneOf":[{"type":"object","description":"Details of an executed transaction. Read-only for `Purchase`s and `Payout`s. For an unpaid `Purchase`, this object will be `null`.","properties":{"is_outgoing":{"type":"boolean","default":false,"description":"Denotes the direction of payment, e.g. for a paid Purchase, is granted to be `false`, `true` for payouts.","uniqueKey":"payment.oneOf.0.is_outgoing","typeLabel":"boolean"},"payment_type":{"type":"string","enum":["purchase","purchase_charge","payout","bank_payment","refund","custom"],"uniqueKey":"payment.oneOf.0.payment_type","typeLabel":"enum\u003cstring>"},"amount":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","uniqueKey":"payment.oneOf.0.amount","typeLabel":"integer"},"currency":{"type":"string","maxLength":3,"description":"Currency code in the ISO 4217 standard (e.g. 'MYR').","uniqueKey":"payment.oneOf.0.currency","typeLabel":"string"},"net_amount":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"Net amount of payment with all fees and pending amount subtracted. `amount` = `net_amount` + `fee_amount` + `pending_amount`. The respective account is credited or debited with this value.","uniqueKey":"payment.oneOf.0.net_amount","typeLabel":"integer"},"fee_amount":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"Amount of fees for this payment. For a Purchase's PurchaseDetails this is the calculated transaction fee. The same fee is also exposed per-attempt at `transaction_data.attempts[].fee_amount`, alongside `markup_amount` and `processing_fee`. See [Card response metadata](/chip-collect/overview/direct-post/card-response-metadata).","uniqueKey":"payment.oneOf.0.fee_amount","typeLabel":"integer"},"pending_amount":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"Pending amount for this payment that will be unfrozen later. If e.g. it's a Purchase's PaymentDetails and a part of transaction sum is withheld to form a rolling reserve, this field will be equal to the frozen part amount.","uniqueKey":"payment.oneOf.0.pending_amount","typeLabel":"integer"},"pending_unfreeze_on":{"oneOf":[{"type":"integer","format":"int64","x-summary":"Informs when the `pending_amount` will be unfrozen.","example":1619740800,"uniqueKey":"payment.oneOf.0.pending_unfreeze_on.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","uniqueKey":"payment.oneOf.0.pending_unfreeze_on.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment.oneOf.0.pending_unfreeze_on","typeLabel":"integer\u003cint64> | null"},"description":{"type":"string","maxLength":256,"uniqueKey":"payment.oneOf.0.description","typeLabel":"string"},"paid_on":{"type":"integer","description":"When the payment was accepted in (`is_outgoing == false`) or sent from (`is_outgoing == true`) the gateway system.","format":"int64","example":1619740800,"uniqueKey":"payment.oneOf.0.paid_on","typeLabel":"integer\u003cint64>"},"remote_paid_on":{"type":"integer","description":"If available, this field will report the date the payment was sent by the remote payer (`is_outgoing == false`) or when funds arrived to the remote beneficiary (`is_outgoing == true`).","format":"int64","example":1619740800,"uniqueKey":"payment.oneOf.0.remote_paid_on","typeLabel":"integer\u003cint64>"}},"uniqueKey":"payment.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"payment.oneOf.1","typeLabel":"null"}],"uniqueKey":"payment","typeLabel":"object | null"},"issuer_details":{"type":"object","description":"Read-only details of issuer company/brand, persisted for invoice display.","properties":{"website":{"type":"string","description":"Company website URL","format":"url","maxLength":500,"uniqueKey":"issuer_details.website","typeLabel":"string\u003curl>"},"legal_street_address":{"type":"string","description":"Street house number and flat address where applicable","maxLength":128,"uniqueKey":"issuer_details.legal_street_address","typeLabel":"string"},"legal_country":{"type":"string","description":"Country code in the ISO 3166-1 alpha-2 format (e.g. 'GB')","maxLength":2,"uniqueKey":"issuer_details.legal_country","typeLabel":"string"},"legal_city":{"type":"string","description":"City name","maxLength":128,"uniqueKey":"issuer_details.legal_city","typeLabel":"string"},"legal_zip_code":{"type":"string","description":"ZIP or postal code","maxLength":32,"uniqueKey":"issuer_details.legal_zip_code","typeLabel":"string"},"bank_accounts":{"type":"array","items":{"type":"object","properties":{"bank_account":{"type":"string","maxLength":64,"description":"Bank account number (e.g. IBAN)","uniqueKey":"issuer_details.bank_accounts.items.[INDEX].bank_account","typeLabel":"string"},"bank_code":{"type":"string","maxLength":32,"description":"SWIFT/BIC code of the bank","uniqueKey":"issuer_details.bank_accounts.items.[INDEX].bank_code","typeLabel":"string"}},"uniqueKey":"issuer_details.bank_accounts.items.[INDEX]","typeLabel":"object"},"uniqueKey":"issuer_details.bank_accounts","typeLabel":"object[]"},"legal_name":{"type":"string","maxLength":128,"description":"Legal name of company","uniqueKey":"issuer_details.legal_name","typeLabel":"string"},"brand_name":{"type":"string","maxLength":128,"description":"Company brand name","uniqueKey":"issuer_details.brand_name","typeLabel":"string"},"registration_number":{"type":"string","maxLength":32,"description":"Registration number of company","uniqueKey":"issuer_details.registration_number","typeLabel":"string"},"tax_number":{"type":"string","maxLength":32,"description":"Tax payer registration number","uniqueKey":"issuer_details.tax_number","typeLabel":"string"}},"uniqueKey":"issuer_details","typeLabel":"object"},"transaction_data":{"type":"object","description":"Payment method-specific, read-only transaction data. Will contain information about all the transaction attempts and possible errors, if available.","properties":{"payment_method":{"type":"string","description":"Payment method used if Purchase was paid, blank string otherwise.","uniqueKey":"transaction_data.payment_method","typeLabel":"string"},"flow":{"type":"string","description":"Flow or pathway used to initiate or execute a transaction.\n\n- api: transaction initiated via the merchant API\n- direct_post: transaction executed via direct POST request\n- fluentforms: transaction initialized from Fluent Forms integration\n- formidableforms: transaction initialized from Formidable Forms integration\n- givewp: transaction initialized from GiveWP integration\n- gravityforms: transaction initialized from Gravity Forms integration\n- hostbill: transaction initialized from Hostbill integration\n- import: transaction imported from external system\n- link: transaction initiated via shared link\n- magento: transaction initialized from Magento module\n- opencart: transaction initialized from OpenCart module\n- payform: transaction executed via the gateway payform\n- paymattic: transaction initialized from Paymattic integration\n- prestashop: transaction initialized from PrestaShop module\n- server_to_server: transaction executed via server to server API\n- shopify: transaction initialized from Shopify integration\n- web_office: transaction initiated via the merchant portal\n- whmcs: transaction initialized from WHMCS integration\n- woocommerce: transaction initialized from WooCommerce module\n- wpcharitable: transaction initialized from WPCharitable integration","enum":["api","direct_post","fluentforms","formidableforms","givewp","gravityforms","hostbill","import","link","magento","opencart","payform","paymattic","prestashop","server_to_server","shopify","web_office","whmcs","woocommerce","wpcharitable"],"uniqueKey":"transaction_data.flow","typeLabel":"enum\u003cstring>"},"processing_tx_id":{"type":"string","description":"ID of the transaction in the processing system.","uniqueKey":"transaction_data.processing_tx_id","typeLabel":"string"},"extra":{"type":"object","description":"Extra data associated with the selected payment method, if the Purchase was paid; an empty object otherwise. The dataset depends on the payment method. For card payment methods (`visa`, `mastercard`), the following fields are present when reported by the acquirer: `card_type: string` (funding type — `credit`, `debit`, or `prepaid`; may be missing), `card_brand: string` (card scheme; same as `payment_method` for cards), `masked_pan: string` (last 4 digits of the PAN; the BIN is not included), `expiry_month: int`, `expiry_year: int` (2-digit), `cardholder_name: string`, `card_issuer: string` (issuing bank), `card_issuer_country: string` (ISO 3166-1 alpha-2), `card_category: string` (e.g. `PERSONAL`, `CORPORATE`), `RRN: string` (Retrieval Reference Number), `authorization_approval_code: string`, `descriptor: string` (statement descriptor), and `three_d_secure: boolean`. See [Card response metadata](/chip-collect/overview/direct-post/card-response-metadata) for the full reference.","uniqueKey":"transaction_data.extra","typeLabel":"object"},"country":{"type":"string","description":"Country code (in the ISO 3166-1 alpha-2 format e.g. 'GB') where payment tool used originates (e.g. in case of card payments, the card issuing country). Will be blank if Purchase was not paid or country could not be detected.","uniqueKey":"transaction_data.country","typeLabel":"string"},"attempts":{"type":"array","description":"Will contain information about all the payment attempts made and errors encountered, if any.","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of action attempted","enum":["execute","authorize","release","capture","recurring_execute","delete_recurring_token","refund"],"uniqueKey":"transaction_data.attempts.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"successful":{"type":"boolean","description":"If this attempt was successful or not. For `false`, `error` of this attempt will be not null.","uniqueKey":"transaction_data.attempts.items.[INDEX].successful","typeLabel":"boolean"},"payment_method":{"type":"string","description":"Payment method used for this attempt.","uniqueKey":"transaction_data.attempts.items.[INDEX].payment_method","typeLabel":"string"},"extra":{"type":"object","description":"Extra data associated with the selected payment method for this attempt. The dataset depends on the payment method. For card payment methods (`visa`, `mastercard`), the same field set as `transaction_data.extra` is present: `card_type`, `card_brand`, `masked_pan`, `expiry_month`, `expiry_year`, `cardholder_name`, `card_issuer`, `card_issuer_country`, `card_category`, `RRN`, `authorization_approval_code`, `descriptor`, and `three_d_secure`. See [Card response metadata](/chip-collect/overview/direct-post/card-response-metadata) for the full reference.","uniqueKey":"transaction_data.attempts.items.[INDEX].extra","typeLabel":"object"},"country":{"type":"string","description":"Country code (in the ISO 3166-1 alpha-2 format e.g. 'GB') where payment tool used originates (e.g. in case of card payments, the card issuing country). Will be blank if country could not be detected.","uniqueKey":"transaction_data.attempts.items.[INDEX].country","typeLabel":"string"},"client_ip":{"type":"string","format":"ipv4","description":"IP the paying client made this attempt from, if available.","uniqueKey":"transaction_data.attempts.items.[INDEX].client_ip","typeLabel":"string\u003cipv4>"},"processing_time":{"type":"integer","description":"Time (if possible, fetched from the remote processing system) this attempt happened at.","format":"int64","example":1619740800,"uniqueKey":"transaction_data.attempts.items.[INDEX].processing_time","typeLabel":"integer\u003cint64>"},"error":{"oneOf":[{"type":"object","description":"Code and description of the error encountered. Not-null if `successful` parameter of this attempt is `false`.","properties":{"code":{"type":"string","description":"Available error codes:\n\n---\n\n`unknown_payment_method`: Unknown payment method\n\n---\n\n`invalid_card_number`: Invalid card number\n\n---\n\n`invalid_expires`: Invalid expires\n\n---\n\n`no_matching_terminal`: No matching terminal\n\n---\n\n`blacklisted_tx`: Blacklisted transaction: blocked (general)\n\n---\n\n`timeout_3ds_enrollment_check`: 3DS enrollment check timeout\n\n---\n\n`timeout_acquirer_status_check`: Timeout checking payment status with acquirer\n\n---\n\n`validation_card_details_missing`: Card data field values are missing from request\n\n---\n\n`validation_cvc_not_provided`: `cvc` field not provided\n\n---\n\n`validation_cardholder_name_not_provided`: `cardholder_name` field not provided\n\n---\n\n`validation_card_number_not_provided`: `card_number` field not provided\n\n---\n\n`validation_expires_not_provided`: `expires` field not provided\n\n---\n\n`validation_cvc_too_long`: `cvc` is too long\n\n---\n\n`validation_cardholder_name_too_long`: `cardholder_name` is too long\n\n---\n\n`validation_card_number_too_long`: `card_number` is too long\n\n---\n\n`validation_expires_too_long`: `expires` is too long\n\n---\n\n`validation_cvc_invalid`: `cvc` is invalid\n\n---\n\n`validation_cardholder_name_invalid`: `cardholder_name` is too long or invalid\n\n---\n\n`validation_card_number_invalid`: `card_number` is invalid\n\n---\n\n`validation_expires_invalid`: `expires` is invalid\n\n---\n\n`acquirer_connection_error`: Acquirer connection error\n\n---\n\n`blacklisted_tx_issuing_country`: Blacklisted transaction: issuing country\n\n---\n\n`s2s_not_supported`: Server-to-server flow not supported by processing\n\n---\n\n`timeout`: Operation timeout\n\n---\n\n`general_transaction_error`: Unrecognized transaction error\n\n---\n\n`antifraud_general`: Decline, fraud\n\n---\n\n`acquirer_internal_error`: Acquirer internal error\n\n---\n\n`exceeds_frequency_limit`: Exceeds frequency limit\n\n---\n\n`insufficient_funds`: Insufficient funds\n\n---\n\n`purchase_already_paid_for`: Purchase is already paid for\n\n---\n\n`issuer_not_available`: Issuer Not Available\n\n---\n\n`3ds_authentication_failed`: 3DS authentication failed\n\n---\n\n`do_not_honour`: Do not honour (the transaction was declined by the Issuer without definition or reason).\n\n---\n\n`exceeds_withdrawal_limit`: Exceeds withdrawal limit\n\n---\n\n`exceeded_account_limit`: Exceeded account limit\n\n---\n\n`expired_card`: Expired card\n\n---\n\n`blacklisted_tx_risk_score`: Blacklisted transaction: risk score\n\n---\n\n`transaction_not_supported_or_not_valid_for_card`: The transaction request presented is not supported or is not valid for the card number presented.\n\n---\n\n`exceeded_acquirer_refund_amount`: Exceeded refundable amount defined by acquirer\n\n---\n\n`transaction_not_permitted_on_terminal`: Transaction not permitted on terminal (this card does not support the type of transaction requested).\n\n---\n\n`acquirer_configuration_error`: Acquirer configuration error\n\n---\n\n`transaction_not_permitted_to_cardholder`: Transaction not permitted to cardholder\n\n---\n\n`invalid_issuer_number`: No such issuer (the Issuer number is not valid).\n\n---\n\n`restricted_card`: Restricted card\n\n---\n\n`merchant_response_timeout`: Timeout of merchant response exceeded\n\n---\n\n`reconcile_error`: Reconciliation error\n\n---\n\n`lost_card`: Lost card\n\n---\n\n`stolen_card`: Stolen card\n\n---\n\n`invalid_amount`: Invalid amount\n\n---\n\n`re_enter_transaction`: Re enter transaction\n\n---\n\n`security_violation`: Security violation\n\n---\n\n`partial_forbidden`: Intervene, bank approval required for partial amount\n\n---\n\n`suspected_fraud`: Decline, suspected fraud\n\n---\n\n`acquirer_routing_error`: Acquirer routing error\n\n---\n\n`payment_rejected_other_reason`: Payment rejected (other reason)\n\n---\n\n`authorization_failed`: Payment authorization failed\n\n---\n\n`acquirer_error_cs`: Internal acquirer error. Please, contact support.\n\n---\n\n`decline_irregular_transaction_pattern`: Declined by acquirer - irregular transaction pattern, please contact support\n\n---\n\n`invalid_card_data`: Invalid card data provided\n\n---\n\n`exceeded_terminal_limit`: Exceeded terminal limit\n\n---\n\n`recurring_token_expired`: recurring token expired\n\n---\n\n`soft_decline_contact_support`: Soft Decline - Please contact support for manual settlement of this purchase\n\n---\n\n`payment_method_details_missing`: Missing payment_method_details","uniqueKey":"transaction_data.attempts.items.[INDEX].error.oneOf.0.code","typeLabel":"string"},"message":{"type":"string","description":"Verbose name and explanation of this error.","uniqueKey":"transaction_data.attempts.items.[INDEX].error.oneOf.0.message","typeLabel":"string"}},"uniqueKey":"transaction_data.attempts.items.[INDEX].error.oneOf.0","typeLabel":"object"},{"type":"null","description":"Code and description of the error encountered. Not-null if `successful` parameter of this attempt is `false`.","properties":{"code":{"type":"string","description":"Available error codes:\n\n---\n\n`unknown_payment_method`: Unknown payment method\n\n---\n\n`invalid_card_number`: Invalid card number\n\n---\n\n`invalid_expires`: Invalid expires\n\n---\n\n`no_matching_terminal`: No matching terminal\n\n---\n\n`blacklisted_tx`: Blacklisted transaction: blocked (general)\n\n---\n\n`timeout_3ds_enrollment_check`: 3DS enrollment check timeout\n\n---\n\n`timeout_acquirer_status_check`: Timeout checking payment status with acquirer\n\n---\n\n`validation_card_details_missing`: Card data field values are missing from request\n\n---\n\n`validation_cvc_not_provided`: `cvc` field not provided\n\n---\n\n`validation_cardholder_name_not_provided`: `cardholder_name` field not provided\n\n---\n\n`validation_card_number_not_provided`: `card_number` field not provided\n\n---\n\n`validation_expires_not_provided`: `expires` field not provided\n\n---\n\n`validation_cvc_too_long`: `cvc` is too long\n\n---\n\n`validation_cardholder_name_too_long`: `cardholder_name` is too long\n\n---\n\n`validation_card_number_too_long`: `card_number` is too long\n\n---\n\n`validation_expires_too_long`: `expires` is too long\n\n---\n\n`validation_cvc_invalid`: `cvc` is invalid\n\n---\n\n`validation_cardholder_name_invalid`: `cardholder_name` is too long or invalid\n\n---\n\n`validation_card_number_invalid`: `card_number` is invalid\n\n---\n\n`validation_expires_invalid`: `expires` is invalid\n\n---\n\n`acquirer_connection_error`: Acquirer connection error\n\n---\n\n`blacklisted_tx_issuing_country`: Blacklisted transaction: issuing country\n\n---\n\n`s2s_not_supported`: Server-to-server flow not supported by processing\n\n---\n\n`timeout`: Operation timeout\n\n---\n\n`general_transaction_error`: Unrecognized transaction error\n\n---\n\n`antifraud_general`: Decline, fraud\n\n---\n\n`acquirer_internal_error`: Acquirer internal error\n\n---\n\n`exceeds_frequency_limit`: Exceeds frequency limit\n\n---\n\n`insufficient_funds`: Insufficient funds\n\n---\n\n`purchase_already_paid_for`: Purchase is already paid for\n\n---\n\n`issuer_not_available`: Issuer Not Available\n\n---\n\n`3ds_authentication_failed`: 3DS authentication failed\n\n---\n\n`do_not_honour`: Do not honour (the transaction was declined by the Issuer without definition or reason).\n\n---\n\n`exceeds_withdrawal_limit`: Exceeds withdrawal limit\n\n---\n\n`exceeded_account_limit`: Exceeded account limit\n\n---\n\n`expired_card`: Expired card\n\n---\n\n`blacklisted_tx_risk_score`: Blacklisted transaction: risk score\n\n---\n\n`transaction_not_supported_or_not_valid_for_card`: The transaction request presented is not supported or is not valid for the card number presented.\n\n---\n\n`exceeded_acquirer_refund_amount`: Exceeded refundable amount defined by acquirer\n\n---\n\n`transaction_not_permitted_on_terminal`: Transaction not permitted on terminal (this card does not support the type of transaction requested).\n\n---\n\n`acquirer_configuration_error`: Acquirer configuration error\n\n---\n\n`transaction_not_permitted_to_cardholder`: Transaction not permitted to cardholder\n\n---\n\n`invalid_issuer_number`: No such issuer (the Issuer number is not valid).\n\n---\n\n`restricted_card`: Restricted card\n\n---\n\n`merchant_response_timeout`: Timeout of merchant response exceeded\n\n---\n\n`reconcile_error`: Reconciliation error\n\n---\n\n`lost_card`: Lost card\n\n---\n\n`stolen_card`: Stolen card\n\n---\n\n`invalid_amount`: Invalid amount\n\n---\n\n`re_enter_transaction`: Re enter transaction\n\n---\n\n`security_violation`: Security violation\n\n---\n\n`partial_forbidden`: Intervene, bank approval required for partial amount\n\n---\n\n`suspected_fraud`: Decline, suspected fraud\n\n---\n\n`acquirer_routing_error`: Acquirer routing error\n\n---\n\n`payment_rejected_other_reason`: Payment rejected (other reason)\n\n---\n\n`authorization_failed`: Payment authorization failed\n\n---\n\n`acquirer_error_cs`: Internal acquirer error. Please, contact support.\n\n---\n\n`decline_irregular_transaction_pattern`: Declined by acquirer - irregular transaction pattern, please contact support\n\n---\n\n`invalid_card_data`: Invalid card data provided\n\n---\n\n`exceeded_terminal_limit`: Exceeded terminal limit\n\n---\n\n`recurring_token_expired`: recurring token expired\n\n---\n\n`soft_decline_contact_support`: Soft Decline - Please contact support for manual settlement of this purchase\n\n---\n\n`payment_method_details_missing`: Missing payment_method_details"},"message":{"type":"string","description":"Verbose name and explanation of this error."}},"uniqueKey":"transaction_data.attempts.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"uniqueKey":"transaction_data.attempts.items.[INDEX].error","typeLabel":"object | null"},"fee_amount":{"type":"integer","description":"Fee charged for this attempt, in the smallest currency unit. For a single-attempt `paid` Purchase, this equals the top-level `payment.fee_amount`.","uniqueKey":"transaction_data.attempts.items.[INDEX].fee_amount","typeLabel":"integer"},"markup_amount":{"type":"integer","description":"Markup (if any) on top of the processor fee for this attempt, in the smallest currency unit.","uniqueKey":"transaction_data.attempts.items.[INDEX].markup_amount","typeLabel":"integer"},"processing_fee":{"type":"integer","description":"Raw processor fee for this attempt, before any markup, in the smallest currency unit.","uniqueKey":"transaction_data.attempts.items.[INDEX].processing_fee","typeLabel":"integer"}},"uniqueKey":"transaction_data.attempts.items.[INDEX]","typeLabel":"object"},"uniqueKey":"transaction_data.attempts","typeLabel":"object[]"}},"uniqueKey":"transaction_data","typeLabel":"object"},"status":{"type":"string","description":"Purchase status. Can have the following values:\n\n- `created`: Purchase was created using POST /purchases/ or the merchant portal.\n- `sent`: Invoice for this purchase was sent over email.\n- `viewed`: The client has viewed the payform and/or invoice details for this purchase.\n- `error`: There was a failed payment attempt for this purchase because of a problem with customer's payment instrument (e.g. low account balance). You can analyze the `.transaction_data` to get information on reason of the failure.\n- `cancelled`: Purchase was cancelled using the `POST /purchases/{id}/cancel/` endpoint; payment for it is not possible anymore.\n- `overdue`: Purchase is past its `.due`, but payment for it is still possible (unless e.g. POST /purchases/{id}/cancel/ is used).\n- `expired`: Purchase is past its `.due` and payment for it isn't possible anymore (as a result of `purchase.due_strict` having been set to `true`).\n- `blocked`: Like `error`, but payment attempt was blocked due to fraud scoring below threshold or other security checks not passing.\n- `hold`: Funds are on hold for this Purchase (`.skip_capture: true` was used). You can now run `POST /capture/` or `POST /release/` for this payment to capture the payment or return funds to the client, respectively.\n- `released`: This Purchase previously had `hold` status, but funds have since been released and returned to the customer's card.\n- `pending_release`: release of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/release/` operation when it takes longer than expected to process on the acquirer side.\n- `pending_capture`: capture of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/capture/` operation when it takes longer than expected to process on the acquirer side.\n- `preauthorized`: A preauthorization of a card (authorization of card data without a financial transaction) was executed successfully using this Purchase. See the description of the `.skip_capture` field for more details.\n- `paid`: Purchase was successfully paid for.\n- `pending_execute`: Payment (or `hold` in case of `skip_capture`) for this Purchase is in processing, but is not finalized on the acquirer side yet.\n- `pending_charge`: Recurring payment for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/charge/` operation when it takes longer than expected to process on the acquirer side.\n- `cleared`: Funds for this Purchase (that was already `paid`) have been transferred for clearing in payment card network. All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in `paid` status instead.\n- `settled`: Settlement was issued for funds for this Purchase (that was already `paid`). All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in `paid` status instead.\n- `chargeback`: A chargeback was registered for this, previously paid, Purchase.\n- `pending_refund`: a refund (full or partial) for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/refund/` operation when it takes longer than expected to process on the acquirer side.\n- `refunded`: This Purchase had its payment refunded, fully or partially.","default":"created","enum":["created","sent","viewed","error","cancelled","overdue","expired","blocked","hold","released","pending_release","pending_capture","preauthorized","paid","pending_execute","pending_charge","cleared","settled","chargeback","pending_refund","refunded"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"status_history":{"type":"array","description":"History of status changes, latest last. Might contain entry about a related object, e.g. status change to `refunded` will contain a reference to the refund Payment.","items":{"properties":{"status":{"type":"string","description":"Purchase status. Can have the following values:\n\n- `created`: Purchase was created using POST /purchases/ or the merchant portal.\n- `sent`: Invoice for this purchase was sent over email.\n- `viewed`: The client has viewed the payform and/or invoice details for this purchase.\n- `error`: There was a failed payment attempt for this purchase because of a problem with customer's payment instrument (e.g. low account balance). You can analyze the `.transaction_data` to get information on reason of the failure.\n- `cancelled`: Purchase was cancelled using the `POST /purchases/{id}/cancel/` endpoint; payment for it is not possible anymore.\n- `overdue`: Purchase is past its `.due`, but payment for it is still possible (unless e.g. POST /purchases/{id}/cancel/ is used).\n- `expired`: Purchase is past its `.due` and payment for it isn't possible anymore (as a result of `purchase.due_strict` having been set to `true`).\n- `blocked`: Like `error`, but payment attempt was blocked due to fraud scoring below threshold or other security checks not passing.\n- `hold`: Funds are on hold for this Purchase (`.skip_capture: true` was used). You can now run `POST /capture/` or `POST /release/` for this payment to capture the payment or return funds to the client, respectively.\n- `released`: This Purchase previously had `hold` status, but funds have since been released and returned to the customer's card.\n- `pending_release`: release of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/release/` operation when it takes longer than expected to process on the acquirer side.\n- `pending_capture`: capture of funds for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/capture/` operation when it takes longer than expected to process on the acquirer side.\n- `preauthorized`: A preauthorization of a card (authorization of card data without a financial transaction) was executed successfully using this Purchase. See the description of the `.skip_capture` field for more details.\n- `paid`: Purchase was successfully paid for.\n- `pending_execute`: Payment (or `hold` in case of `skip_capture`) for this Purchase is in processing, but is not finalized on the acquirer side yet.\n- `pending_charge`: Recurring payment for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/charge/` operation when it takes longer than expected to process on the acquirer side.\n- `cleared`: Funds for this Purchase (that was already `paid`) have been transferred for clearing in payment card network. All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in `paid` status instead.\n- `settled`: Settlement was issued for funds for this Purchase (that was already `paid`). All non-card payment methods and some card payment methods (depends on configuration) don't use this status and Purchases paid using them stay in `paid` status instead.\n- `chargeback`: A chargeback was registered for this, previously paid, Purchase.\n- `pending_refund`: a refund (full or partial) for this Purchase is in processing, but is not finalized on the acquirer side yet. Is set by `POST /purchases/{id}/refund/` operation when it takes longer than expected to process on the acquirer side.\n- `refunded`: This Purchase had its payment refunded, fully or partially.","default":"created","enum":["created","sent","viewed","error","cancelled","overdue","expired","blocked","hold","released","pending_release","pending_capture","preauthorized","paid","pending_execute","pending_charge","cleared","settled","chargeback","pending_refund","refunded"],"uniqueKey":"status_history.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"timestamp":{"type":"integer","format":"int64","example":1619740800,"uniqueKey":"status_history.items.[INDEX].timestamp","typeLabel":"integer\u003cint64>"},"related_object":{"oneOf":[{"properties":{"type":{"type":"string","uniqueKey":"status_history.items.[INDEX].related_object.oneOf.0.type","typeLabel":"string"},"id":{"type":"string","format":"uuid","uniqueKey":"status_history.items.[INDEX].related_object.oneOf.0.id","typeLabel":"string\u003cuuid>"}},"type":"object","uniqueKey":"status_history.items.[INDEX].related_object.oneOf.0","typeLabel":"object"},{"properties":{"type":{"type":"string"},"id":{"type":"string","format":"uuid"}},"type":"null","uniqueKey":"status_history.items.[INDEX].related_object.oneOf.1","typeLabel":"null"}],"uniqueKey":"status_history.items.[INDEX].related_object","typeLabel":"object | null"}},"type":"object","uniqueKey":"status_history.items.[INDEX]","typeLabel":"object"},"uniqueKey":"status_history","typeLabel":"object[]"},"viewed_on":{"oneOf":[{"type":"integer","description":"Time the payment form or invoice page was first viewed on","format":"int64","example":1619740800,"uniqueKey":"viewed_on.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","uniqueKey":"viewed_on.oneOf.1","typeLabel":"null"}],"uniqueKey":"viewed_on","typeLabel":"integer\u003cint64> | null"},"company_id":{"type":"string","format":"uuid","uniqueKey":"company_id","typeLabel":"string\u003cuuid>"},"is_test":{"type":"boolean","description":"Indicates this is a test object, created using test API keys or using the merchant portal while in test mode.","uniqueKey":"is_test","typeLabel":"boolean"},"user_id":{"oneOf":[{"type":"string","format":"uuid","description":"ID of user who has created this object in the merchant portal, if applicable.","uniqueKey":"user_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID of user who has created this object in the merchant portal, if applicable.","uniqueKey":"user_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"user_id","typeLabel":"string\u003cuuid> | null"},"client_id":{"oneOf":[{"type":"string","format":"uuid","default":null,"description":"ID of a Client object used to initialize ClientDetails (`.client`) of this Purchase. Either this field or specifying `.client` object is required (you can only specify a value for one of these fields). All `ClientDetails` fields from the Client will be copied to `.client` object. Note that editing Client object won't change the respective fields in already created Purchases.\n\nIf you specify this field and your client saves a `recurring_token` (for instance, by saving their card), the respective ClientRecurringToken will be created. See the `/clients/{id}/recurring_tokens/` endpoint.","uniqueKey":"client_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","default":null,"description":"ID of a Client object used to initialize ClientDetails (`.client`) of this Purchase. Either this field or specifying `.client` object is required (you can only specify a value for one of these fields). All `ClientDetails` fields from the Client will be copied to `.client` object. Note that editing Client object won't change the respective fields in already created Purchases.\n\nIf you specify this field and your client saves a `recurring_token` (for instance, by saving their card), the respective ClientRecurringToken will be created. See the `/clients/{id}/recurring_tokens/` endpoint.","uniqueKey":"client_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"client_id","typeLabel":"string\u003cuuid> | null"},"send_receipt":{"type":"boolean","default":false,"description":"Whether to send receipt email for this Purchase when it's paid.","uniqueKey":"send_receipt","typeLabel":"boolean"},"is_recurring_token":{"type":"boolean","description":"Indicates whether a recurring token (e.g. for card payments - card token) was saved for this Purchase. If this is `true`, the `id` of this Purchase can be used as a `recurring_token` in `POST /purchases/{id}/charge/`, enabling you to pay for that Purchase using the same method (same card for card payments) that this one was paid with. This field answers \"can this Purchase be used as a token\", and is NOT the same as `recurring_token` below, which answers \"was this Purchase paid using a token\". A Purchase that is merely `paid` does not necessarily have this set to `true` - a token is saved only when `remember_card=on` (with `direct_post`) or `force_recurring=true` (hosted checkout) was used and the payment is completed.","uniqueKey":"is_recurring_token","typeLabel":"boolean"},"recurring_token":{"oneOf":[{"type":"string","format":"uuid","description":"ID of a recurring token (Purchase having `is_recurring_token == true`) that was used to pay this Purchase, if any. It is `null` when this Purchase was paid with a newly entered payment method rather than a saved token. A Purchase paid by a token therefore has this field set and `is_recurring_token` false, because it was billed with an existing token instead of creating a new one. This field answers \"was this Purchase paid using a token\", and is NOT the same as `is_recurring_token` above, which answers \"can this Purchase be used as a token\".","uniqueKey":"recurring_token.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID of a recurring token (Purchase having `is_recurring_token == true`) that was used to pay this Purchase, if any. It is `null` when this Purchase was paid with a newly entered payment method rather than a saved token. A Purchase paid by a token therefore has this field set and `is_recurring_token` false, because it was billed with an existing token instead of creating a new one. This field answers \"was this Purchase paid using a token\", and is NOT the same as `is_recurring_token` above, which answers \"can this Purchase be used as a token\".","uniqueKey":"recurring_token.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring_token","typeLabel":"string\u003cuuid> | null"},"skip_capture":{"type":"boolean","default":false,"description":"Card payment-specific: if set to true, only authorize the payment (place funds on hold) when payer enters his card data and pays. This option requires a `POST /capture/` or `POST /release/` later on.\n\nYou can use the preauthorization feature if you set this parameter to true and make the Purchase with `purchase.total == 0` (this can be achieved by providing a list of `purchase.products` with a total `price` of 0, or simply overriding the total using `purchase.total_override` to 0). The resulting Purchase can only be \"paid\" by the client (only cardholder data verification will happen, without a financial transaction) by card and will enforce saving the client's card. When this happens, the Purchase will have `status` of `preauthorized` and the `purchase.preauthorized` webhook callbacks will be emitted.\n\nTrying to use skip_capture (or preauthorization) without any payment methods that support the respective actions (this can be a result of `payment_method_whitelist` field being used) will result in an error on Purchase creation request step. Please check the `GET /payment_methods/` response for your desired Purchase parameters and/or consult with your account manager.","uniqueKey":"skip_capture","typeLabel":"boolean"},"force_recurring":{"type":"boolean","default":false,"description":"If the used payment method supports recurring payment functionality, forces the customer's payment credentials to be saved for possible later recurring payments, without giving the customer a choice in the matter.","uniqueKey":"force_recurring","typeLabel":"boolean"},"reference_generated":{"type":"string","description":"If you don't provide an invoice `reference` yourself, this autogenerated value will be used as a reference instead.","uniqueKey":"reference_generated","typeLabel":"string"},"reference":{"type":"string","description":"Invoice reference.","uniqueKey":"reference","typeLabel":"string"},"notes":{"type":"string","description":"Add any additional information.","uniqueKey":"notes","typeLabel":"string"},"issued":{"oneOf":[{"type":"string","description":"Value for 'Invoice issued' field. Display-only, does not get validated. If not provided, will be generated as the current date in `purchase.timezone` at the moment of Purchase's creation.","format":"date","example":"2020-04-30","uniqueKey":"issued.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","uniqueKey":"issued.oneOf.1","typeLabel":"null"}],"uniqueKey":"issued","typeLabel":"string\u003cdate> | null"},"due":{"oneOf":[{"type":"integer","description":"When the payment is due for this Purchase. The default behaviour is to still allow payment once this moment passes. To change that, set `purchase.due_strict` to true.","format":"int64","example":1619740800,"uniqueKey":"due.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","uniqueKey":"due.oneOf.1","typeLabel":"null"}],"uniqueKey":"due","typeLabel":"integer\u003cint64> | null"},"refund_availability":{"description":"Specifies, if the purchase can be refunded fully and partially, only fully, partially or not at all.","type":"string","enum":["all","full_only","partial_only","pis_all","pis_partial","none"],"uniqueKey":"refund_availability","typeLabel":"enum\u003cstring>"},"refundable_amount":{"type":"integer","description":"Amount of money as the smallest indivisible units of the currency. Examples: 100 is equivalent to RM 1.00.","x-summary":"Amount available for refunds.","uniqueKey":"refundable_amount","typeLabel":"integer"},"currency_conversion":{"oneOf":[{"type":"object","description":"This object is present when automatic currency conversion has occurred upon creation of the purchase. Purchase's original currency was changed and its original amount was converted using the exchange rate shown here.","properties":{"original_currency":{"type":"string","description":"Currency this purchase was initially created with","uniqueKey":"currency_conversion.oneOf.0.original_currency","typeLabel":"string"},"original_amount":{"type":"integer","description":"Amount this purchase was initially created with","uniqueKey":"currency_conversion.oneOf.0.original_amount","typeLabel":"integer"},"exchange_rate":{"type":"number","description":"Exchanged rate that was used for currency conversion. Original amount was multiplied by this number to calculate the new purchase amount.","uniqueKey":"currency_conversion.oneOf.0.exchange_rate","typeLabel":"number"}},"uniqueKey":"currency_conversion.oneOf.0","typeLabel":"object"},{"type":"null","description":"This object is present when automatic currency conversion has occurred upon creation of the purchase. Purchase's original currency was changed and its original amount was converted using the exchange rate shown here.","properties":{"original_currency":{"type":"string","description":"Currency this purchase was initially created with"},"original_amount":{"type":"integer","description":"Amount this purchase was initially created with"},"exchange_rate":{"type":"number","description":"Exchanged rate that was used for currency conversion. Original amount was multiplied by this number to calculate the new purchase amount."}},"uniqueKey":"currency_conversion.oneOf.1","typeLabel":"null"}],"uniqueKey":"currency_conversion","typeLabel":"object | null"},"payment_method_whitelist":{"type":"array","minItems":1,"description":"An optional whitelist of payment methods available for this purchase. Use this field if you want to restrict your payer to pay using only one or several specific methods.\n\nUsing this field and at the same time trying to use specific capabilities of a Purchase (e.g. `skip_capture` or charging it using a saved card token using `POST /purchases/{id}/charge/`) can cause a situation when there are no payment methods available for paying this Purchase. This will cause a validation error on Purchase creation. Please check the `GET /payment_methods/` response for your desired Purchase parameters and/or consult with your account manager.","items":{"type":"string","enum":["fpx","fpx_b2b1","crypto_coin","dnqr","duitnow_qr","maestro","mastercard","mpgs_apple_pay","mpgs_google_pay","razer_atome","razer_grabpay","razer_maybankqr","razer_shopeepay","razer_tng","shopee_pay","visa"],"description":"Payment method name as returned by `GET /payment_methods/`.","uniqueKey":"payment_method_whitelist.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"payment_method_whitelist","typeLabel":"enum\u003cstring>[]"},"success_redirect":{"type":"string","description":"When Purchase is paid for successfully, your customer will be taken to this link. Otherwise a standard screen will be displayed.","format":"url","maxLength":500,"uniqueKey":"success_redirect","typeLabel":"string\u003curl>"},"failure_redirect":{"type":"string","description":"If there's a payment failure for this Purchase, your customer will be taken to this link. Otherwise a standard screen will be displayed.","format":"url","maxLength":500,"uniqueKey":"failure_redirect","typeLabel":"string\u003curl>"},"cancel_redirect":{"type":"string","description":"If you provide this link, customer will have an option to go to it instead of making payment (a button with 'Return to seller' text will be displayed). Can't contain any of the following symbols: `\u003c>'\"` .\n\nBe aware that this does not cancel the payment (e.g. does not do the equivalent of doing the `POST /purchases/{id}/cancel/` request); the client will still be able to press 'Back' in the browser and perform the payment.","format":"url","maxLength":500,"uniqueKey":"cancel_redirect","typeLabel":"string\u003curl>"},"success_callback":{"type":"string","description":"When Purchase is paid for successfully, the `success_callback` URL will receive a POST request with the Purchase object's data in body.\n\nThe URL must not contain an explicit port. Only the scheme's default port is usable (`http` on 80, `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 supported; any other scheme is rejected with `webhooks_callback_scheme`. This restriction applies to `success_callback` and `Webhook.callback` only - see `success_redirect`, `failure_redirect` and `cancel_redirect`, which accept a custom port.","format":"url","maxLength":500,"uniqueKey":"success_callback","typeLabel":"string\u003curl>"},"creator_agent":{"type":"string","maxLength":32,"description":"Identification of software (e.g. an ecommerce module and version) used to create this purchase, if any.","uniqueKey":"creator_agent","typeLabel":"string"},"platform":{"type":"string","enum":["web","api","ios","android","macos","windows"],"description":"Platform this Purchase was created on.","uniqueKey":"platform","typeLabel":"enum\u003cstring>"},"product":{"type":"string","enum":["purchases"],"description":"Defines which gateway product was used to create this Purchase.","uniqueKey":"product","typeLabel":"enum\u003cstring>"},"created_from_ip":{"type":"string","format":"ipv4","description":"IP the Purchase was created from.","uniqueKey":"created_from_ip","typeLabel":"string\u003cipv4>"},"invoice_url":{"oneOf":[{"type":"string","description":"URL you will be able to access invoice for this Purchase at, if applicable","format":"url","maxLength":500,"uniqueKey":"invoice_url.oneOf.0","typeLabel":"string\u003curl>"},{"type":"null","uniqueKey":"invoice_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"invoice_url","typeLabel":"string\u003curl> | null"},"checkout_url":{"type":"string","description":"URL you will be able to access the checkout for this Purchase at, if payment for it is possible. When building integrations, redirect the customer to this URL once purchase is created.\n\nYou can add the `preferred` query arg to the `checkout_url` in order to force redirect the client straight to the checkout for a specific payment method (`?preferred={payment_method}`, where `{payment_method}` is the payment method name as returned by `GET /payment_methods/`). If this method redirects the client further to a different system and no customer data entry is needed on gateway's checkout page, your payer will be taken straight to that page (not seeing the gateway's checkout UI); otherwise, he will see the payment method entry UI on the gateway checkout page.\n\nYou can also add the `active` query arg to the `checkout_url` in order to pre-select a specific payment method on the default payment page without skipping it (`?active={payment_method}`, where `{payment_method}` is the payment method name as returned by `GET /payment_methods/`). Unlike `?preferred={payment_method}`, the customer still sees the default payment page and can switch to a different method. The `?active=` parameter does not restrict which methods are available.","format":"url","maxLength":500,"uniqueKey":"checkout_url","typeLabel":"string\u003curl>"},"direct_post_url":{"oneOf":[{"type":"string","description":"URL that can be used for Direct Post integration.\n\nThis functionality is activated for each merchant account individually. Please consult with your account manager if you wish to use it.\n\nWill be null if payment for purchase is not possible, `purchase.request_client_details` isn't empty or success_redirect/failure_redirect are not provided - these all break the usual direct post flow.\n\nTo leverage Direct Post checkout, create a `\u003cform>` having `method=\"POST\" action=\"\u003cdirect_post_url value>\"` and include the following inputs:\n\n`cardholder_name: text, Latin letters only (space and apostrophe (`'`), dot (`.`), dash (`-`) symbols are also allowed), max 30 chars`\n\n---\n\n`card_number: text, digits only, no whitespace, max 19 chars`\n\n---\n\n`expires: text in 'MM/YY' format, digits and a slash only /^\\d{2}\\/\\d{2}$/, max 5 chars`\n\n---\n\n`cvc: numeric string of 3 or 4 digits`\n\n---\n\n`remember_card: checkbox with value=\"on\" (the default when omitting value attribute of a checkbox input)`\n\nEnsure the validation as listed above! Validation errors will be treated as payment failures. Obviously, you can style this form to fit in with the rest of your website.\n\nWhen your payer submits this form (don't forget a `\u003cbutton>` or `\u003cinput type=\"submit\">`), he will POST the data directly to the gateway system. There, with minimal interaction with gateway's interface, payment will be processed. In the process, your customer might get redirected to authenticate against 3D Secure system of his card issuer bank (this depends on settings of his card and your account). After that, payer will be taken to `success_redirect` or `failure_redirect` depending on the payment result (as in the usual payment flow).\n\nBe aware, though, that while not having to process card data allows you not to comply with the entirety of PCI DSS SAQ D requirements, having sensitive cardholder data entry form on your website does raise your PCI DSS scope to SAQ A-EP. Contact your account manager to receive advisory and assistance for this integration method.","format":"url","maxLength":500,"uniqueKey":"direct_post_url.oneOf.0","typeLabel":"string\u003curl>"},{"type":"null","uniqueKey":"direct_post_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"direct_post_url","typeLabel":"string\u003curl> | null"},"marked_as_paid":{"type":"boolean","description":"True if a purchase was manually marked as paid.","uniqueKey":"marked_as_paid","typeLabel":"boolean"},"order_id":{"type":"string","description":"ID of corresponding order.","uniqueKey":"order_id","typeLabel":"string"},"upsell_campaigns":{"type":"array","description":"Upsell campaigns associated with this purchase.","items":{"type":"object","uniqueKey":"upsell_campaigns.items.[INDEX]","typeLabel":"object"},"uniqueKey":"upsell_campaigns","typeLabel":"object[]"},"referral_campaign_id":{"oneOf":[{"type":"string","format":"uuid","description":"ID of the referral campaign.","uniqueKey":"referral_campaign_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"ID of the referral campaign.","uniqueKey":"referral_campaign_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"referral_campaign_id","typeLabel":"string\u003cuuid> | null"},"referral_code":{"oneOf":[{"type":"string","description":"Referral code used.","uniqueKey":"referral_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Referral code used.","uniqueKey":"referral_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"referral_code","typeLabel":"string | null"},"referral_code_details":{"oneOf":[{"type":"object","description":"Details of the referral code.","uniqueKey":"referral_code_details.oneOf.0","typeLabel":"object"},{"type":"null","description":"Details of the referral code.","uniqueKey":"referral_code_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"referral_code_details","typeLabel":"object | null"},"referral_code_generated":{"oneOf":[{"type":"string","description":"Generated referral code.","uniqueKey":"referral_code_generated.oneOf.0","typeLabel":"string"},{"type":"null","description":"Generated referral code.","uniqueKey":"referral_code_generated.oneOf.1","typeLabel":"null"}],"uniqueKey":"referral_code_generated","typeLabel":"string | null"},"retain_level_details":{"oneOf":[{"type":"object","description":"Retain level details.","uniqueKey":"retain_level_details.oneOf.0","typeLabel":"object"},{"type":"null","description":"Retain level details.","uniqueKey":"retain_level_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"retain_level_details","typeLabel":"object | null"},"can_retrieve":{"type":"boolean","description":"Indicates if the purchase can be retrieved.","uniqueKey":"can_retrieve","typeLabel":"boolean"},"can_chargeback":{"type":"boolean","description":"Indicates if the purchase can be charged back.","uniqueKey":"can_chargeback","typeLabel":"boolean"},"can_reverse_chargeback":{"type":"boolean","description":"Indicates if the purchase can have its chargeback reversed.","uniqueKey":"can_reverse_chargeback","typeLabel":"boolean"},"tags":{"type":"array","description":"Tags associated with the purchase.","items":{"type":"string","uniqueKey":"tags.items.[INDEX]","typeLabel":"string"},"uniqueKey":"tags","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"id":"00000000-0000-0000-0000-000000000001","type":"purchase","status":"created","is_test":true,"company_id":"00000000-0000-0000-0000-000000000002","brand_id":"00000000-0000-0000-0000-000000000003","client_id":"00000000-0000-0000-0000-000000000004","reference_generated":"CH0001","reference":"test","issued":"2026-01-01T00:00:00.000Z","due":1735689600,"created_on":1735603200,"updated_on":1735603200,"created_from_ip":"127.0.0.1","platform":"api","product":"purchases","currency_conversion":null,"payment_method_whitelist":null,"success_redirect":"https://example.com/success","failure_redirect":"https://example.com/failure","cancel_redirect":"","success_callback":"","marked_as_paid":false,"force_recurring":false,"send_receipt":false,"is_recurring_token":false,"recurring_token":null,"skip_capture":false,"refund_availability":"none","refundable_amount":0,"upsell_campaigns":[],"tags":[],"viewed_on":null,"invoice_url":null,"checkout_url":"https://gate.chip-in.asia/p/00000000-0000-0000-0000-000000000001/","direct_post_url":null,"can_retrieve":false,"can_chargeback":false,"can_reverse_chargeback":false,"status_history":[{"status":"created","timestamp":1735603200}],"client":{"email":"buyer@example.com","full_name":"Test Buyer","phone":"","client_type":null,"personal_code":"","legal_name":"","brand_name":"","registration_number":"","tax_number":"","bank_account":"","bank_code":"","street_address":"","city":"","zip_code":"","country":"","state":"","shipping_street_address":"","shipping_city":"","shipping_zip_code":"","shipping_country":"","shipping_state":"","cc":[],"bcc":[],"delivery_methods":[{"method":"email","options":{}}]},"purchase":{"currency":"MYR","language":"en","notes":"","debt":0,"timezone":"UTC","due_strict":false,"email_message":"","single_attempt":false,"has_upsell_products":false,"metadata":{},"total":1000,"subtotal_override":null,"total_tax_override":null,"total_discount_override":null,"total_override":null,"request_client_details":[],"shipping_options":[],"payment_method_details":{},"products":[{"name":"Premium Subscription","price":1000,"quantity":"1.0000","discount":0,"tax_percent":"0.00","category":"","total_price_override":null}]},"payment":null,"issuer_details":{"brand_name":"CHIP","website":"https://www.chip-in.asia","legal_name":"","registration_number":"","tax_number":"","legal_street_address":"","legal_country":"","legal_city":"","legal_zip_code":"","bank_accounts":[]},"transaction_data":{"payment_method":"","flow":"payform","country":"","processing_tx_id":"","extra":{},"attempts":[]},"creator_agent":"","user_id":null,"billing_template_id":null,"order_id":null,"referral_campaign_id":null,"referral_code":null,"referral_code_details":null,"referral_code_generated":null,"retain_level_details":null},"examples":{"Example":{"title":"Example","value":{"id":"00000000-0000-0000-0000-000000000001","type":"purchase","status":"created","is_test":true,"company_id":"00000000-0000-0000-0000-000000000002","brand_id":"00000000-0000-0000-0000-000000000003","client_id":"00000000-0000-0000-0000-000000000004","reference_generated":"CH0001","reference":"test","issued":"2026-01-01T00:00:00.000Z","due":1735689600,"created_on":1735603200,"updated_on":1735603200,"created_from_ip":"127.0.0.1","platform":"api","product":"purchases","currency_conversion":null,"payment_method_whitelist":null,"success_redirect":"https://example.com/success","failure_redirect":"https://example.com/failure","cancel_redirect":"","success_callback":"","marked_as_paid":false,"force_recurring":false,"send_receipt":false,"is_recurring_token":false,"recurring_token":null,"skip_capture":false,"refund_availability":"none","refundable_amount":0,"upsell_campaigns":[],"tags":[],"viewed_on":null,"invoice_url":null,"checkout_url":"https://gate.chip-in.asia/p/00000000-0000-0000-0000-000000000001/","direct_post_url":null,"can_retrieve":false,"can_chargeback":false,"can_reverse_chargeback":false,"status_history":[{"status":"created","timestamp":1735603200}],"client":{"email":"buyer@example.com","full_name":"Test Buyer","phone":"","client_type":null,"personal_code":"","legal_name":"","brand_name":"","registration_number":"","tax_number":"","bank_account":"","bank_code":"","street_address":"","city":"","zip_code":"","country":"","state":"","shipping_street_address":"","shipping_city":"","shipping_zip_code":"","shipping_country":"","shipping_state":"","cc":[],"bcc":[],"delivery_methods":[{"method":"email","options":{}}]},"purchase":{"currency":"MYR","language":"en","notes":"","debt":0,"timezone":"UTC","due_strict":false,"email_message":"","single_attempt":false,"has_upsell_products":false,"metadata":{},"total":1000,"subtotal_override":null,"total_tax_override":null,"total_discount_override":null,"total_override":null,"request_client_details":[],"shipping_options":[],"payment_method_details":{},"products":[{"name":"Premium Subscription","price":1000,"quantity":"1.0000","discount":0,"tax_percent":"0.00","category":"","total_price_override":null}]},"payment":null,"issuer_details":{"brand_name":"CHIP","website":"https://www.chip-in.asia","legal_name":"","registration_number":"","tax_number":"","legal_street_address":"","legal_country":"","legal_city":"","legal_zip_code":"","bank_accounts":[]},"transaction_data":{"payment_method":"","flow":"payform","country":"","processing_tx_id":"","extra":{},"attempts":[]},"creator_agent":"","user_id":null,"billing_template_id":null,"order_id":null,"referral_campaign_id":null,"referral_code":null,"referral_code_details":null,"referral_code_generated":null,"retain_level_details":null}}},"exampleType":"examples"}},"exampleType":"examples"},"dec59f96-23d3-4621-bbf8-0d8d3ce56752":{"description":"No such object","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"916be330-fa6b-45e2-81fc-4278a059af56":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[]}}},"servers":{"b158211a-bed0-41c2-b0f4-83a17dfd9b9a":{"url":"https://gate.chip-in.asia/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"_openapi-chip-collect.yml"},"subdomain":"chipinsdnbhd","siteName":"CHIP API","title":"Delete a recurring token associated with a purchase - CHIP API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-27T13:42:31.051Z","originalFileLocation":"chip-collect/api-reference/purchases/delete-recurring-token.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=\"description\" content=\"Sets is_recurring_token to false. You won\u0026#x27;t be able to use this Purchase\u0026#x27;s ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted. If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.\">\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=\"Delete a recurring token associated with a purchase - CHIP API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sets is_recurring_token to false. You won\u0026#x27;t be able to use this Purchase\u0026#x27;s ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted. If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.\">\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/api-reference/purchases/delete-recurring-token\">\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=Purchases\u0026amp;title=Delete+a+recurring+token+associated+with+a+purchase\u0026amp;description=Sets+%60is_recurring_token%60+to+%60false%60.+You+won%27t+be+able+to+use+this+Purchase%27s+ID+as+a+%60recurring_token%60+anymore.+The+respective+%60ClientRecurringToken%60%2C+if+any%2C\u0026amp;theme=76944bc5cf62695feaaacb7a\u0026amp;signature=bb9b15d59618ddc42e55f47146d7fd8e6c6d0dcc13de27daf8e5b4e14a90fe3b\">\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=\"Delete a recurring token associated with a purchase - CHIP API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sets is_recurring_token to false. You won\u0026#x27;t be able to use this Purchase\u0026#x27;s ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted. If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://chipinsdnbhd.mintlify.app/_mintlify/api/og/v2?division=Purchases\u0026amp;title=Delete+a+recurring+token+associated+with+a+purchase\u0026amp;description=Sets+%60is_recurring_token%60+to+%60false%60.+You+won%27t+be+able+to+use+this+Purchase%27s+ID+as+a+%60recurring_token%60+anymore.+The+respective+%60ClientRecurringToken%60%2C+if+any%2C\u0026amp;theme=76944bc5cf62695feaaacb7a\u0026amp;signature=bb9b15d59618ddc42e55f47146d7fd8e6c6d0dcc13de27daf8e5b4e14a90fe3b\">\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/api-reference/purchases/delete-recurring-token\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/chip-collect/api-reference/purchases/delete-recurring-token.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/api-reference/purchases/delete-recurring-token#webpage\",\"url\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token\",\"name\":\"Delete a recurring token associated with a purchase\",\"description\":\"Sets is_recurring_token to false. You won't be able to use this Purchase's ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted. If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.\",\"dateModified\":\"2026-07-27T13:42:31.051Z\",\"isPartOf\":{\"@id\":\"https://docs.chip-in.asia#website\"},\"breadcrumb\":{\"@id\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/create\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Purchases\",\"item\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/create\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delete a recurring token associated with a purchase\",\"item\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token#apireference\",\"headline\":\"Delete a recurring token associated with a purchase\",\"name\":\"Delete a recurring token associated with a purchase\",\"description\":\"Sets is_recurring_token to false. You won't be able to use this Purchase's ID as a recurring_token anymore. The respective ClientRecurringToken, if any, will also be deleted. If this operation takes too long to be processed on the acquirer side, you will get a response with status code 200 and a corresponding Webhook callback for a purchase.pending_recurring_token_delete event. To be notified of a successful operation completion, please subscribe to the purchase.recurring_token_deleted callback event.\",\"url\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token\",\"mainEntityOfPage\":{\"@id\":\"https://docs.chip-in.asia/chip-collect/api-reference/purchases/delete-recurring-token#webpage\"},\"dateModified\":\"2026-07-27T13:42:31.051Z\",\"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","href":"/chip-collect/overview/online-purchases/custom"}]},{"title":"Callbacks","href":"/chip-collect/overview/callbacks"},{"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/","description":"Charge a purchase using a `recurring_token` provided in the request body. Its value should be an `id` of a Purchase that has `is_recurring_token == true`. This purchase will be paid using the same method (e.g. same card) as the one used to pay the `recurring_token` purchase.\n\nIf this operation takes too long to be processed on the acquirer side - you will get a response with status code 200 and a Purchase object having `status` = `pending_charge` in body (you will receive a corresponding Webhook callback too for a `purchase.pending_charge` event). To be notified of a successful operation completion, please subscribe to `purchase.paid` callback event - it will deliver an updated Purchase with `status` = `paid`. Alternatively, if charge fails, you will receive a `purchase.payment_failure` callback event.\n\nIf recurring charge fails due to payment processing error, you will receive HTTP response code 400 with error code `purchase_charge_error`. In this case, to get more details about the error, you should perform a `GET /purchases/{id}/` request for the Purchase you tried to charge. In `transaction_data.attempts[]` array (newest element first) you'll find the corresponding attempt with error code and description in `.error` parameter.\n\nIf the `recurring_token` you provide does not correspond to a valid, active token (e.g. it does not exist, refers to a Purchase that does not have `is_recurring_token == true`, or its token has been deleted), you will receive HTTP response code 400 with the following error body and **no webhook callback will be sent** (no charge was attempted on the acquirer side):\n\n```json\n{\n \"__all__\": [\n {\n \"message\": \"Invalid or inactive recurring token!\",\n \"code\": \"invalid_recurring_token\"\n }\n ]\n}\n```\n\nTo resolve this, verify the token by [retrieving the Purchase](/chip-collect/api-reference/purchases/retrieve) referenced by `recurring_token` and checking that `is_recurring_token` is `true`, or list the active tokens for the client via the [List Recurring Tokens API](/chip-collect/api-reference/clients/list-recurring-tokens).","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/","description":"Sets the Purchase's status to `paid` and marks `purchase.marked_as_paid` as `true` to distinguish it.","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"}]}]},"title":"Delete a recurring token associated with a purchase - CHIP API","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}