Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response’s refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.
In addition to standard signature errors, this endpoint can return:
Code
Name
Meaning
2010
TransactionNotFound
transactionNumber does not match a transaction, or the transaction is not in Success status.
2042
FailedToRequestRefund
Generic refund failure. The message names the specific cause, e.g. a refund is already in progress for this transaction, the requested amount exceeds what’s still available to refund, the channel doesn’t support partial refunds, or the provider is unavailable for this channel.
2044
MissingRequireField
reason was not supplied.
2094
InvalidTenantProfile
Tenant could not be resolved (no session tenant and no tenantId in the request body).
2124
RequestRefundTimeOut
The provider’s refund API timed out while processing the request.
2130
ChannelNotSupportRefund
The original transaction’s channel is configured to not support refunds.
2160
InvalidPaymentGatewaySetting
The channel’s provider settings are missing or misconfigured for this tenant.
A refund amount of 0 (or negative) is also rejected via FailedToRequestRefund (2042), with the message “Refund amount cannot be 0”.
The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of 1000 translates to 10.00 in the system backend).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CommercePay","colors":{"primary":"#5D40E6","light":"#9546E9","dark":"#5834E9"},"logo":{"light":"https://mintcdn.com/commercepay/zbo4Bt5Hnzxuhmp1/logo/commercepay-logo-cropped.png?fit=max\u0026auto=format\u0026n=zbo4Bt5Hnzxuhmp1\u0026q=85\u0026s=2818942319162624de2b3de633ee42ed","dark":"https://mintcdn.com/commercepay/zbo4Bt5Hnzxuhmp1/logo/commercepay-logo-cropped.png?fit=max\u0026auto=format\u0026n=zbo4Bt5Hnzxuhmp1\u0026q=85\u0026s=2818942319162624de2b3de633ee42ed"},"favicon":"https://mintcdn.com/commercepay/7PrnGTffSwt18xAA/favicon.ico?fit=max\u0026auto=format\u0026n=7PrnGTffSwt18xAA\u0026q=85\u0026s=5bc0f4406b0009f6658b13dd37c95f37","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"mailto:payments@commerce.asia","label":"Support"}]},"seo":{"metatags":{"google-site-verification":"dUzHLcHfcaknXY13Nu97zc6gj2DguWeqMvoJWcgBCa4","og:image":"/images/commercepay-og-image.png","twitter:image":"/images/commercepay-og-image.png"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"commercepay","hasAudioNarration":false,"actualSubdomain":"commercepay","customDomains":["docs.commercepay.asia"],"gitSource":{"type":"github","owner":"commerceasia","repo":"commercepay-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae2d375bf78690ab5d17709","collectionId":"968a6a75-68b2-4ecd-bf32-e8fd916b1562","liveDeploymentHistoryId":"6ae2d375bf78690ab5d17709","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae2d375bf78690ab5d17709","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":17},{"language":"default","tag":"Documentation","count":15},{"language":"default","tag":"All APIs","count":13},{"language":"default","tag":"PaymentGateway","count":10},{"language":"default","tag":"Get Started","count":7},{"language":"default","tag":"Payout APIs","count":3},{"language":"default","tag":"Payins","count":3},{"language":"default","tag":"Payouts","count":3},{"language":"default","tag":"Channel","count":2},{"language":"default","tag":"Payin APIs","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img.nav-logo{height:2.25rem!important;width:auto!important}"}],"page":{"pagePath":"api-reference/refund-payment","slug":"/api-reference/refund-payment","pageMetadata":{"title":"Refund Payment","description":"**The payment gateway requests a refund payment**\n\nInitiate a full or partial refund for a successful payment transaction. See [Refund Integration](/refund-integration) for full vs. partial refund behavior and bank support. The response's `refundStatus` reflects the outcome directly — if it comes back as `ProcessingRefund`, use [Query Refund Payment](/api-reference/query-refund-payment) to check when it completes.","deprecated":null,"version":null,"sidebarTitle":"Refund Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RefundPayment","href":"/api-reference/refund-payment","autogeneratedByOpenApi":true},"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 a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"The payment gateway requests a refund payment\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Initiate a full or partial refund for a successful payment transaction. See \", _jsx(_components.a, {\n href: \"/refund-integration\",\n children: \"Refund Integration\"\n }), \" for full vs. partial refund behavior and bank support. The response’s \", _jsx(_components.code, {\n children: \"refundStatus\"\n }), \" reflects the outcome directly — if it comes back as \", _jsx(_components.code, {\n children: \"ProcessingRefund\"\n }), \", use \", _jsx(_components.a, {\n href: \"/api-reference/query-refund-payment\",\n children: \"Query Refund Payment\"\n }), \" to check when it completes.\"]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={blockquote:`blockquote`,code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Note,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`amount`}),` only when issuing a `,_jsx(_components.strong,{children:`partial refund`}),`. Omit it (or leave it null) when issuing a `,_jsx(_components.strong,{children:`full refund`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsx(_components.p,{children:`In addition to standard signature errors, this endpoint can return:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Code`}),_jsx(_components.th,{children:`Name`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2010`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`TransactionNotFound`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`transactionNumber`}),` does not match a transaction, or the transaction is not in `,_jsx(_components.code,{children:`Success`}),` status.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2042`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`FailedToRequestRefund`})}),_jsx(_components.td,{children:`Generic refund failure. The message names the specific cause, e.g. a refund is already in progress for this transaction, the requested amount exceeds what’s still available to refund, the channel doesn’t support partial refunds, or the provider is unavailable for this channel.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2044`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`MissingRequireField`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`reason`}),` was not supplied.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2094`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`InvalidTenantProfile`})}),_jsxs(_components.td,{children:[`Tenant could not be resolved (no session tenant and no `,_jsx(_components.code,{children:`tenantId`}),` in the request body).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2124`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`RequestRefundTimeOut`})}),_jsx(_components.td,{children:`The provider’s refund API timed out while processing the request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2130`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`ChannelNotSupportRefund`})}),_jsx(_components.td,{children:`The original transaction’s channel is configured to not support refunds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2160`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`InvalidPaymentGatewaySetting`})}),_jsx(_components.td,{children:`The channel’s provider settings are missing or misconfigured for this tenant.`})]})]})]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`A refund amount of `,_jsx(_components.code,{children:`0`}),` (or negative) is also rejected via `,_jsx(_components.code,{children:`FailedToRequestRefund`}),` (2042), with the message “Refund amount cannot be 0”.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Refund Payment","description":"**The payment gateway requests a refund payment**\n\nInitiate a full or partial refund for a successful payment transaction. See [Refund Integration](/refund-integration) for full vs. partial refund behavior and bank support. The response's `refundStatus` reflects the outcome directly — if it comes back as `ProcessingRefund`, use [Query Refund Payment](/api-reference/query-refund-payment) to check when it completes.","deprecated":null,"version":null,"sidebarTitle":"Refund Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RefundPayment","href":"/api-reference/refund-payment","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Errors","slug":"errors","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["PaymentGateway"],"operationId":"ApiServicesAppPaymentgatewayRefundpaymentPost","requestBody":"443999f1-98a2-4ab4-a4d4-9bda4969d906","responses":{"200":"cd1aca39-54da-4fe7-b1b5-ee5b6a17fbbe","400":"7da6a579-0c5d-4e89-bf38-ab4637cbf405"},"summary":"Refund Payment","x-mint":{"href":"/api-reference/refund-payment","metadata":{"title":"Refund Payment","sidebarTitle":"Refund Payment"},"content":"\u003cNote>\nPass `amount` only when issuing a **partial refund**. Omit it (or leave it null) when issuing a **full refund**.\n\u003c/Note>\n\n## Errors\n\nIn addition to standard signature errors, this endpoint can return:\n\n| Code | Name | Meaning |\n| ---- | ---- | ------- |\n| 2010 | `TransactionNotFound` | `transactionNumber` does not match a transaction, or the transaction is not in `Success` status. |\n| 2042 | `FailedToRequestRefund` | Generic refund failure. The message names the specific cause, e.g. a refund is already in progress for this transaction, the requested amount exceeds what's still available to refund, the channel doesn't support partial refunds, or the provider is unavailable for this channel. |\n| 2044 | `MissingRequireField` | `reason` was not supplied. |\n| 2094 | `InvalidTenantProfile` | Tenant could not be resolved (no session tenant and no `tenantId` in the request body). |\n| 2124 | `RequestRefundTimeOut` | The provider's refund API timed out while processing the request. |\n| 2130 | `ChannelNotSupportRefund` | The original transaction's channel is configured to not support refunds. |\n| 2160 | `InvalidPaymentGatewaySetting` | The channel's provider settings are missing or misconfigured for this tenant. |\n\n> A refund amount of `0` (or negative) is also rejected via `FailedToRequestRefund` (2042), with the message \"Refund amount cannot be 0\"."},"description":"**The payment gateway requests a refund payment**\n\nInitiate a full or partial refund for a successful payment transaction. See [Refund Integration](/refund-integration) for full vs. partial refund behavior and bank support. The response's `refundStatus` reflects the outcome directly — if it comes back as `ProcessingRefund`, use [Query Refund Payment](/api-reference/query-refund-payment) to check when it completes.","parameters":["10741856-3123-447d-9982-5bd3ab255d4a","8801bdb3-7628-483a-97a0-1f2145d7cae2","10f69fad-0a84-4612-89c6-d9461da5af7a"],"method":"post","type":"path","servers":["64f6ba68-f659-4eb6-aced-7af162de9cb4"],"security":[],"path":"/api/services/app/PaymentGateway/RefundPayment","baseUrlOptions":["https://staging-payments.commerce.asia"],"title":"Refund Payment","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"10741856-3123-447d-9982-5bd3ab255d4a":{"schema":{"type":"string","isRequired":true,"description":"Your unique Merchant ID assigned by CommercePay.","uniqueKey":"","typeLabel":"string"},"in":"header","name":"Abp-TenantId","required":true,"description":"Your unique Merchant ID assigned by CommercePay."},"8801bdb3-7628-483a-97a0-1f2145d7cae2":{"schema":{"type":"string","isRequired":true,"description":"Your API credentials used for authentication (typically a Bearer token).","uniqueKey":"","typeLabel":"string"},"in":"header","name":"Authorization","required":true,"description":"Your API credentials used for authentication (typically a Bearer token)."},"10f69fad-0a84-4612-89c6-d9461da5af7a":{"schema":{"type":"string","isRequired":true,"description":"A unique security hash used to verify the integrity of the request body. See [Generate Signature](/generate-signature) for how to generate this.","uniqueKey":"","typeLabel":"string"},"in":"header","name":"cap-signature","required":true,"description":"A unique security hash used to verify the integrity of the request body. See [Generate Signature](/generate-signature) for how to generate this."}},"requestBody":{"content":{"application/json-patch+json":{"schema":{"type":"object","additionalProperties":false,"required":["transactionNumber","reason","timestamp"],"properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transactionNumber","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"reason","typeLabel":"string | null"},"timestamp":{"type":"integer","format":"int64","description":"Numeric timestamp in milliseconds representing request validation freshness, generated via `new Date().getTime()`. Example: `1621851652617`.","example":1621851652617,"isRequired":true,"uniqueKey":"timestamp","typeLabel":"integer\u003cint64>"},"amount":{"oneOf":[{"type":"integer","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"amount","typeLabel":"integer\u003cint32> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transactionNumber":"\u003cstring>","reason":"Purchase wrong item","timestamp":1621851652617,"amount":123}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["transactionNumber","reason","timestamp"],"properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transactionNumber","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"reason","typeLabel":"string | null"},"timestamp":{"type":"integer","format":"int64","description":"Numeric timestamp in milliseconds representing request validation freshness, generated via `new Date().getTime()`. Example: `1621851652617`.","example":1621851652617,"isRequired":true,"uniqueKey":"timestamp","typeLabel":"integer\u003cint64>"},"amount":{"oneOf":[{"type":"integer","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"amount","typeLabel":"integer\u003cint32> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transactionNumber":"\u003cstring>","reason":"Purchase wrong item","timestamp":1621851652617,"amount":123}}},"exampleType":"generated"},"text/json":{"schema":{"type":"object","additionalProperties":false,"required":["transactionNumber","reason","timestamp"],"properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transactionNumber","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"reason","typeLabel":"string | null"},"timestamp":{"type":"integer","format":"int64","description":"Numeric timestamp in milliseconds representing request validation freshness, generated via `new Date().getTime()`. Example: `1621851652617`.","example":1621851652617,"isRequired":true,"uniqueKey":"timestamp","typeLabel":"integer\u003cint64>"},"amount":{"oneOf":[{"type":"integer","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"amount","typeLabel":"integer\u003cint32> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transactionNumber":"\u003cstring>","reason":"Purchase wrong item","timestamp":1621851652617,"amount":123}}},"exampleType":"generated"},"application/*+json":{"schema":{"type":"object","additionalProperties":false,"required":["transactionNumber","reason","timestamp"],"properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"isRequired":true,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transactionNumber","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","example":"Purchase wrong item","isRequired":true,"uniqueKey":"reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"reason","typeLabel":"string | null"},"timestamp":{"type":"integer","format":"int64","description":"Numeric timestamp in milliseconds representing request validation freshness, generated via `new Date().getTime()`. Example: `1621851652617`.","example":1621851652617,"isRequired":true,"uniqueKey":"timestamp","typeLabel":"integer\u003cint64>"},"amount":{"oneOf":[{"type":"integer","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.0","typeLabel":"integer\u003cint32>"},{"type":"null","description":"The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of `1000` translates to `10.00` in the system backend).","format":"int32","uniqueKey":"amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"amount","typeLabel":"integer\u003cint32> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"transactionNumber":"\u003cstring>","reason":"Purchase wrong item","timestamp":1621851652617,"amount":123}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"cd1aca39-54da-4fe7-b1b5-ee5b6a17fbbe":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"x-internal":false,"properties":{"tenantId":{"type":"integer","format":"int64","description":"Your unique Merchant ID assigned by CommercePay.","uniqueKey":"tenantId","typeLabel":"integer\u003cint64>"},"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionNumber","typeLabel":"string | null"},"refundTransactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundTransactionNumber","typeLabel":"string | null"},"referenceCode":{"oneOf":[{"type":"string","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"referenceCode","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Please take note: The Amount parameter only accepts integer units. For example, 1000 is equivalent to 10.00 for the backend.\r\n\r\nInvalid Format: 1,000.00","example":100,"uniqueKey":"amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"currencyCode","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundStatus","typeLabel":"enum\u003cinteger>"},"responseMessage":{"oneOf":[{"type":"string","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"responseMessage","typeLabel":"string | null"},"paymentSessionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"paymentSessionNumber","typeLabel":"string | null"},"refundPaymentList":{"title":"RefundPaymentListDto","type":"object","properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.transactionNumber","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Refund Amount.","example":100,"uniqueKey":"refundPaymentList.amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.currencyCode","typeLabel":"string | null"},"refundReason":{"oneOf":[{"type":"string","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.refundReason","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundPaymentList.refundStatus","typeLabel":"enum\u003cinteger>"}},"uniqueKey":"refundPaymentList","typeLabel":"RefundPaymentListDto · object"}},"x-examples":{"Example 1":{"tenantId":0,"transactionNumber":"string","paymentSessionNumber":"string","refundTransactionNumber":"string","referenceCode":"string","amount":0,"currencyCode":"string","refundStatus":0,"refundPaymentList":[{"transactionNumber":"string","amount":0,"currencyCode":"string","refundReason":"string","refundStatus":0}],"responseMessage":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example 1":{"title":"Example 1","value":{"tenantId":0,"transactionNumber":"string","refundTransactionNumber":"string","referenceCode":"string","amount":0,"currencyCode":"string","refundStatus":11,"responseMessage":"string","paymentSessionNumber":"string","refundPaymentList":{"transactionNumber":"string","amount":0,"currencyCode":"string","refundReason":"string","refundStatus":11}}}},"exampleType":"examples"},"text/json":{"schema":{"type":"object","additionalProperties":false,"x-internal":false,"properties":{"tenantId":{"type":"integer","format":"int64","description":"Your unique Merchant ID assigned by CommercePay.","uniqueKey":"tenantId","typeLabel":"integer\u003cint64>"},"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionNumber","typeLabel":"string | null"},"refundTransactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundTransactionNumber","typeLabel":"string | null"},"referenceCode":{"oneOf":[{"type":"string","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"referenceCode","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Please take note: The Amount parameter only accepts integer units. For example, 1000 is equivalent to 10.00 for the backend.\r\n\r\nInvalid Format: 1,000.00","example":100,"uniqueKey":"amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"currencyCode","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundStatus","typeLabel":"enum\u003cinteger>"},"responseMessage":{"oneOf":[{"type":"string","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"responseMessage","typeLabel":"string | null"},"paymentSessionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"paymentSessionNumber","typeLabel":"string | null"},"refundPaymentList":{"title":"RefundPaymentListDto","type":"object","properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.transactionNumber","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Refund Amount.","example":100,"uniqueKey":"refundPaymentList.amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.currencyCode","typeLabel":"string | null"},"refundReason":{"oneOf":[{"type":"string","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.refundReason","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundPaymentList.refundStatus","typeLabel":"enum\u003cinteger>"}},"uniqueKey":"refundPaymentList","typeLabel":"RefundPaymentListDto · object"}},"x-examples":{"Example 1":{"tenantId":0,"transactionNumber":"string","paymentSessionNumber":"string","refundTransactionNumber":"string","referenceCode":"string","amount":0,"currencyCode":"string","refundStatus":0,"refundPaymentList":[{"transactionNumber":"string","amount":0,"currencyCode":"string","refundReason":"string","refundStatus":0}],"responseMessage":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tenantId":123,"transactionNumber":"\u003cstring>","refundTransactionNumber":"\u003cstring>","referenceCode":"\u003cstring>","amount":100,"currencyCode":"MYR","refundStatus":11,"responseMessage":"\u003cstring>","paymentSessionNumber":"\u003cstring>","refundPaymentList":{"transactionNumber":"\u003cstring>","amount":100,"currencyCode":"MYR","refundReason":"\u003cstring>","refundStatus":11}}}},"exampleType":"generated"},"text/plain":{"schema":{"type":"object","additionalProperties":false,"x-internal":false,"properties":{"tenantId":{"type":"integer","format":"int64","description":"Your unique Merchant ID assigned by CommercePay.","uniqueKey":"tenantId","typeLabel":"integer\u003cint64>"},"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number of the original payment being refunded.","maxLength":24,"uniqueKey":"transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionNumber","typeLabel":"string | null"},"refundTransactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number for the refund transaction itself, distinct from the original payment's transactionNumber.","uniqueKey":"refundTransactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundTransactionNumber","typeLabel":"string | null"},"referenceCode":{"oneOf":[{"type":"string","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"The merchant-side unique order reference or invoice tracking sequence code.","uniqueKey":"referenceCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"referenceCode","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Please take note: The Amount parameter only accepts integer units. For example, 1000 is equivalent to 10.00 for the backend.\r\n\r\nInvalid Format: 1,000.00","example":100,"uniqueKey":"amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"currencyCode","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundStatus","typeLabel":"enum\u003cinteger>"},"responseMessage":{"oneOf":[{"type":"string","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable status message for the refund request.","uniqueKey":"responseMessage.oneOf.1","typeLabel":"null"}],"uniqueKey":"responseMessage","typeLabel":"string | null"},"paymentSessionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Session Number","maxLength":24,"uniqueKey":"paymentSessionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"paymentSessionNumber","typeLabel":"string | null"},"refundPaymentList":{"title":"RefundPaymentListDto","type":"object","properties":{"transactionNumber":{"oneOf":[{"type":"string","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique CommercePay Transaction Number","maxLength":24,"uniqueKey":"refundPaymentList.transactionNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.transactionNumber","typeLabel":"string | null"},"amount":{"type":"number","format":"double","description":"Refund Amount.","example":100,"uniqueKey":"refundPaymentList.amount","typeLabel":"number\u003cdouble>"},"currencyCode":{"oneOf":[{"type":"string","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.0","typeLabel":"string"},{"type":"null","description":"Currency code with a 3-letter ISO 4217 standard code (e.g., `MYR`).","example":"MYR","maxLength":3,"uniqueKey":"refundPaymentList.currencyCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.currencyCode","typeLabel":"string | null"},"refundReason":{"oneOf":[{"type":"string","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.0","typeLabel":"string"},{"type":"null","description":"A description for refund.","uniqueKey":"refundPaymentList.refundReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"refundPaymentList.refundReason","typeLabel":"string | null"},"refundStatus":{"enum":[11,12,13,16,17,18],"type":"integer","format":"int32","x-enumNames":["Refunded","ProcessingRefund","FailedRefund","RefundWithCharges","RefundReverse","Voided"],"description":"Status of the refund itself (not the original payment).\n\n| Value | Name | Meaning |\n| ----- | ---- | ------- |\n| 11 | `Refunded` | Refund completed successfully. |\n| 12 | `ProcessingRefund` | Refund request accepted, being processed by the provider. |\n| 13 | `FailedRefund` | Refund attempt failed. |\n| 16 | `RefundWithCharges` | Refund completed, but provider/processing charges were deducted from the refunded amount. |\n| 17 | `RefundReverse` | A previously completed refund was reversed by the provider. |\n| 18 | `Voided` | The original transaction was voided instead of refunded, e.g. same-day cancellation. |","uniqueKey":"refundPaymentList.refundStatus","typeLabel":"enum\u003cinteger>"}},"uniqueKey":"refundPaymentList","typeLabel":"RefundPaymentListDto · object"}},"x-examples":{"Example 1":{"tenantId":0,"transactionNumber":"string","paymentSessionNumber":"string","refundTransactionNumber":"string","referenceCode":"string","amount":0,"currencyCode":"string","refundStatus":0,"refundPaymentList":[{"transactionNumber":"string","amount":0,"currencyCode":"string","refundReason":"string","refundStatus":0}],"responseMessage":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tenantId":123,"transactionNumber":"\u003cstring>","refundTransactionNumber":"\u003cstring>","referenceCode":"\u003cstring>","amount":100,"currencyCode":"MYR","refundStatus":11,"responseMessage":"\u003cstring>","paymentSessionNumber":"\u003cstring>","refundPaymentList":{"transactionNumber":"\u003cstring>","amount":100,"currencyCode":"MYR","refundReason":"\u003cstring>","refundStatus":11}}}},"exampleType":"generated"}},"exampleType":"examples"},"7da6a579-0c5d-4e89-bf38-ab4637cbf405":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"integer","description":"See the Errors table above.","uniqueKey":"code","typeLabel":"integer"},"message":{"oneOf":[{"type":"string","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"message.oneOf.1","typeLabel":"null"}],"uniqueKey":"message","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"TransactionNotFound":{"title":"TransactionNotFound","value":{"code":2010,"message":"transactionNumber does not match a transaction, or the transaction is not in Success status."}},"FailedToRequestRefund":{"title":"FailedToRequestRefund","value":{"code":2042,"message":"Refund amount cannot be 0"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{},"servers":{"64f6ba68-f659-4eb6-aced-7af162de9cb4":{"description":"Staging","url":"https://staging-payments.commerce.asia"}}},"originalFileLocation":"openapi.json"},"subdomain":"commercepay","siteName":"CommercePay","title":"Refund Payment - CommercePay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T05:02:49.742Z","originalFileLocation":"api-reference/refund-payment.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"system\"}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=\"The payment gateway requests a refund payment Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response\u0026#x27;s refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CommercePay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_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/commercepay/GH8Bb27qvn280PyP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Refund Payment - CommercePay\">\u003cmeta data-mint-head property=\"og:description\" content=\"The payment gateway requests a refund payment Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response\u0026#x27;s refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CommercePay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.commercepay.asia/api-reference/refund-payment\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://commercepay.mintlify.site/images/commercepay-og-image.png\">\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=\"Refund Payment - CommercePay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The payment gateway requests a refund payment Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response\u0026#x27;s refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://commercepay.mintlify.site/images/commercepay-og-image.png\">\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/commercepay/GH8Bb27qvn280PyP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CommercePay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5D40E6\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"dUzHLcHfcaknXY13Nu97zc6gj2DguWeqMvoJWcgBCa4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.commercepay.asia/api-reference/refund-payment\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/refund-payment.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.commercepay.asia/#organization\",\"name\":\"CommercePay\",\"url\":\"https://docs.commercepay.asia\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/commercepay/zbo4Bt5Hnzxuhmp1/logo/commercepay-logo-cropped.png?fit=max\u0026auto=format\u0026n=zbo4Bt5Hnzxuhmp1\u0026q=85\u0026s=2818942319162624de2b3de633ee42ed\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.commercepay.asia#website\",\"name\":\"CommercePay\",\"url\":\"https://docs.commercepay.asia\",\"publisher\":{\"@id\":\"https://docs.commercepay.asia/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.commercepay.asia/api-reference/refund-payment#webpage\",\"url\":\"https://docs.commercepay.asia/api-reference/refund-payment\",\"name\":\"Refund Payment\",\"description\":\"The payment gateway requests a refund payment Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response's refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.\",\"dateModified\":\"2026-10-29T05:02:49.742Z\",\"isPartOf\":{\"@id\":\"https://docs.commercepay.asia#website\"},\"breadcrumb\":{\"@id\":\"https://docs.commercepay.asia/api-reference/refund-payment#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.commercepay.asia/api-reference/refund-payment#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CommercePay\",\"item\":\"https://docs.commercepay.asia\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Refund Payment\",\"item\":\"https://docs.commercepay.asia/api-reference/refund-payment\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.commercepay.asia/api-reference/refund-payment#apireference\",\"headline\":\"Refund Payment\",\"name\":\"Refund Payment\",\"description\":\"The payment gateway requests a refund payment Initiate a full or partial refund for a successful payment transaction. See Refund Integration for full vs. partial refund behavior and bank support. The response's refundStatus reflects the outcome directly — if it comes back as ProcessingRefund, use Query Refund Payment to check when it completes.\",\"url\":\"https://docs.commercepay.asia/api-reference/refund-payment\",\"mainEntityOfPage\":{\"@id\":\"https://docs.commercepay.asia/api-reference/refund-payment#webpage\"},\"image\":\"https://docs.commercepay.asia/images/commercepay-og-image.png\",\"dateModified\":\"2026-10-29T05:02:49.742Z\",\"publisher\":{\"@id\":\"https://docs.commercepay.asia/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.commercepay.asia#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CommercePay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CommercePay","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/overview"}]},{"tab":"API Reference","groups":[{"group":"Authentication","pages":[{"title":"Get Access Token","deprecated":null,"version":null,"sidebarTitle":"Get Access Token","openapi":"/openapi.json post /api/TokenAuth/Authenticate","href":"/api-reference/get-access-token"}]},{"group":"Channel APIs","pages":[{"title":"Get Channel List","deprecated":null,"version":null,"sidebarTitle":"Get Channel List","openapi":"/openapi.json get /api/services/app/Channel/GetTenantChannelsByCountry","href":"/api-reference/get-tenant-channels-by-country"},{"title":"Get Provider Channels","deprecated":null,"version":null,"sidebarTitle":"Get Provider Channels","openapi":"/openapi.json get /api/services/app/Channel/GetProviderChannels","href":"/api-reference/get-provider-channels"}]},{"group":"Payin APIs","pages":[{"title":"Direct Integration","api":"POST https://staging-payments.commerce.asia/api/services/app/PaymentGateway/RequestPayment","href":"/api-reference/direct-integration-api-request-payment"},{"title":"Hosted Session Checkout","deprecated":null,"version":null,"sidebarTitle":"Hosted Session Checkout","openapi":"/openapi.json post /api/services/app/PaymentGateway/InitialSession","href":"/api-reference/initial-session"},{"title":"Query Payment","deprecated":null,"version":null,"sidebarTitle":"Query Payment","openapi":"/openapi.json get /api/services/app/PaymentGateway/Query","href":"/api-reference/query-payment"}]},{"group":"Saved Payment APIs","pages":[{"title":"Add Saved Payment","deprecated":null,"version":null,"sidebarTitle":"Add Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/AddSavePayment","href":"/api-reference/add-saved-payment"},{"title":"Check Saved Payment","deprecated":null,"version":null,"sidebarTitle":"Check Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/CheckSavedPayment","href":"/api-reference/check-saved-payment"},{"title":"Revoke Saved Payment","deprecated":null,"version":null,"sidebarTitle":"Revoke Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RevokeTokenize","href":"/api-reference/revoke-saved-payment"}]},{"group":"Payout APIs","pages":[{"title":"Request Payout","api":"POST https://staging-payments.commerce.asia/api/services/app/PaymentGateway/RequestPayment","href":"/api-reference/payout-api-requestpayout"},{"title":"Query Wallets","api":"POST https://staging-payments.commerce.asia/api/services/app/PaymentGateway/QueryWallets","href":"/api-reference/payout-api-querywallets"},{"title":"Query Wallet Histories","description":"Retrieve a wallet's transaction history within a date range, including balance, amount, and reference code per transaction.","api":"POST https://staging-payments.commerce.asia/api/services/app/PaymentGateway/QueryWalletHistory","href":"/api-reference/payout-api-querywallethistories"}]},{"group":"Refund APIs","pages":[{"title":"Refund Payment","deprecated":null,"version":null,"sidebarTitle":"Refund Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RefundPayment","href":"/api-reference/refund-payment"},{"title":"Query Refund Payment","description":"**The payment gateway requests a query refund payment status**\n\nCheck the status of a refund previously requested via [Refund Payment](/api-reference/refund-payment). Use this to confirm whether a refund has completed, is still processing, or failed.","deprecated":null,"version":null,"sidebarTitle":"Query Refund Payment","openapi":"/openapi.json get /api/services/app/PaymentGateway/QueryRefund","href":"/api-reference/query-refund-payment"}]},{"group":"All APIs","pages":[{"group":"TokenAuth","pages":[{"title":"Get Access Token","deprecated":null,"version":null,"sidebarTitle":"Get Access Token","openapi":"/openapi.json post /api/TokenAuth/Authenticate","href":"/api-reference/get-access-token"}]},{"group":"Channel","pages":[{"title":"Get Channel List","deprecated":null,"version":null,"sidebarTitle":"Get Channel List","openapi":"/openapi.json get /api/services/app/Channel/GetTenantChannelsByCountry","href":"/api-reference/get-tenant-channels-by-country"},{"title":"Get Provider Channels","deprecated":null,"version":null,"sidebarTitle":"Get Provider Channels","openapi":"/openapi.json get /api/services/app/Channel/GetProviderChannels","href":"/api-reference/get-provider-channels"}]},{"group":"PaymentGateway","pages":[{"title":"Query Payment","deprecated":null,"version":null,"sidebarTitle":"Query Payment","openapi":"/openapi.json get /api/services/app/PaymentGateway/Query","href":"/api-reference/query-payment"},{"title":"Request Payment","deprecated":null,"version":null,"sidebarTitle":"Request Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RequestPayment","href":"/api-reference/paymentgateway/request-payment"},{"title":"Process Payment","deprecated":null,"version":null,"sidebarTitle":"Process Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/ProcessPayment","href":"/api-reference/paymentgateway/process-payment"},{"title":"Check Saved Payment","deprecated":null,"version":null,"sidebarTitle":"Check Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/CheckSavedPayment","href":"/api-reference/check-saved-payment"},{"title":"Add Saved Payment","deprecated":null,"version":null,"sidebarTitle":"Add Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/AddSavePayment","href":"/api-reference/add-saved-payment"},{"title":"Revoke Saved Payment","description":"**Revoke a customer's saved payment method in Payment Gateway**\n\nAllow merchants to permanently remove a customer's previously saved (tokenized) payment details for a given channel. Once revoked, the saved payment method can no longer be used for future payments — the customer must save their payment method again (via the [Add Saved Payment](/api-reference/add-saved-payment)) if they wish to pay this way again.\n\n> - Merchants shall pass their customer's Unique Id to the **\"username\"** parameter — the same Unique Id originally supplied to `customer.username` when the payment method was saved.\n> - Channel Id may refer to the [Get Channel List](/api-reference/get-tenant-channels-by-country).\n> - Only channels/providers that support saved payments can be revoked through this endpoint. If the channel does not support it, or no saved payment is found for the given username on that channel, the request will fail.\n> - This endpoint returns no response body on success (HTTP 200, empty). Treat the absence of an error as confirmation the saved payment method was revoked.","deprecated":null,"version":null,"sidebarTitle":"Revoke Saved Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RevokeTokenize","href":"/api-reference/revoke-saved-payment"},{"title":"Refund Payment","deprecated":null,"version":null,"sidebarTitle":"Refund Payment","openapi":"/openapi.json post /api/services/app/PaymentGateway/RefundPayment","href":"/api-reference/refund-payment"},{"title":"Query Refund Payment","description":"**The payment gateway requests a query refund payment status**\n\nCheck the status of a refund previously requested via [Refund Payment](/api-reference/refund-payment). Use this to confirm whether a refund has completed, is still processing, or failed.","deprecated":null,"version":null,"sidebarTitle":"Query Refund Payment","openapi":"/openapi.json get /api/services/app/PaymentGateway/QueryRefund","href":"/api-reference/query-refund-payment"},{"title":"Query Wallets","deprecated":null,"version":null,"sidebarTitle":"Query Wallets","openapi":"/openapi.json post /api/services/app/PaymentGateway/QueryWallets","href":"/api-reference/paymentgateway/query-wallets"},{"title":"Hosted Session Checkout","deprecated":null,"version":null,"sidebarTitle":"Hosted Session Checkout","openapi":"/openapi.json post /api/services/app/PaymentGateway/InitialSession","href":"/api-reference/initial-session"}]}]}]}]},"basePath":"","title":"Refund Payment - CommercePay","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}