> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # CreateRefund # Package: payments # Namespace: RefundService # Method link: https://dev.wix.com/docs/api-reference/business-management/payments/refunds/create-refund.md ## Permission Scopes: Manage Refunds: SCOPE.DC-PAYMENTS.MANAGE-REFUNDS ## Introduction Creates a refund. The refunding process starts immediately after a refund entity is created. If you specify an `amount`, you must also specify a `currency_code`. This currency should be the same as the currency of the charge. If `amount` and `currency_code` are not specified, the refund is created for the full charge amount. If the charge was already partially refunded, this refund will fail. --- ## REST API ### Schema ``` Method: createRefund Description: Creates a refund. The refunding process starts immediately after a refund entity is created. If you specify an `amount`, you must also specify a `currency_code`. This currency should be the same as the currency of the charge. If `amount` and `currency_code` are not specified, the refund is created for the full charge amount. If the charge was already partially refunded, this refund will fail. URL: https://www.wixapis.com/payments/refunds/v1/refunds Method: POST # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: refund, refund.chargeId Method parameters: param name: previouslyRefundedAmount | type: previouslyRefundedAmount | description: Amount of the charge that was previously refunded. Specify this to compare your records of previously refunded amounts against those on the server. If they don't match, this method will return an error with the code `PREVIOUSLY_REFUNDED_AMOUNT_MISMATCH`. Learn more about [preventing unintended refunds](https://dev.wix.com/docs/rest/business-management/payments/refunds/introduction.md#preventing-unintended-refunds). param name: refund | type: Refund | description: The refund object. A refund object is the record of an attempt to return charged funds. | required: true - name: extendedFields | type: ExtendedFields | description: Custom field data for the refund object. [Extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: chargeId | type: string | description: GUID of the charge to refund. | required: true - name: currencyCode | type: string | description: Refund currency. Should be the same as the charge currency. - name: amount | type: string | description: Amount being returned to the buyer in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. - name: reason | type: string | description: Reason this refund was issued. - name: note | type: string | description: Note providing additional information about this refund. Return type: CreateRefundResponse - name: refund | type: Refund | description: The created refund. - name: id | type: string | description: Refund GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the refund is updated. Ignored when creating a refund. - name: createdDate | type: string | description: Date and time the refund was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#coordinated_Universal_Time_(UTC)) format. For example, "2024-01-30T13:30:00". - name: updatedDate | type: string | description: Date and time the refund was last updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#coordinated_Universal_Time_(UTC)) format. For example, "2024-01-30T13:30:00". - name: extendedFields | type: ExtendedFields | description: Custom field data for the refund object. [Extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: chargeId | type: string | description: GUID of the charge to refund. - name: currencyCode | type: string | description: Refund currency. Should be the same as the charge currency. - name: amount | type: string | description: Amount being returned to the buyer in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. - name: returnedApplicationFee | type: string | description: Application fee returned to the merchant from Wix in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. Only included if an application fee was returned. - name: returnedProcessingFee | type: string | description: Processing fee returned to the merchant from the payment service provider in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. This field is empty when the processing fee is unknown. - name: full | type: boolean | description: Whether the refund is for the entire amount of the charge. - name: status | type: Status | description: Status of the refund. Learn more about the [refund lifecycle](https://dev.wix.com/docs/rest/business-management/payments/refunds/introduction.md#lifecycle-of-a-refund>). - enum: - PENDING: Refund is in progress. - SUCCEEDED: Refund succeeded. - FAILED: Refund failed. - REVERSED: Refund had succeeded, but has since been reversed. - name: providerRefundId | type: string | description: Payment service provider's GUID for the refund. - name: reason | type: string | description: Reason this refund was issued. - name: statusInfo | type: StatusInfo | description: Details about the refund status. Used to provide additional information about why a refund was given its status. - name: code | type: string | description: Reason code with detailed information about the refund status. See the full list of [reason codes](https://dev.wix.com/docs/rest/business-management/payments/service-plugins/payment-service-provider-service-plugin/reason-codes.md#refund-declined). - name: description | type: string | description: Description of the status. - name: acquirerReferenceNumber | type: string | description: Unique number assigned to a refund. This number is shared across all parties involved in processing the refund. It allows the merchant to track the refund with their bank. - name: note | type: string | description: Note providing additional information about this refund. Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: REFUND_CURRENCY_MISMATCH | Description: Refund currency doesn't match the charge currency. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: REFUND_CURRENCY_MISSING | Description: The `currency_code` field is required when specifying an `amount`. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PREVIOUSLY_REFUNDED_AMOUNT_MISMATCH | Description: The `previously_refunded_amount` doesn't match the server's calculated amount. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: REFUND_AMOUNT_OUT_OF_BOUNDS | Description: Refund amount is outside the allowed range. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PARTIAL_REFUND_NOT_SUPPORTED | Description: Payment service provider doesn't support partial refunds. Refund the full amount. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: ONLINE_REFUND_NOT_SUPPORTED | Description: Charge was made at a POS terminal and must be refunded on that terminal. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: MERCHANT_BALANCE_INSUFFICIENT | Description: Merchant account balance is insufficient to process the refund. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PAYMENT_METHOD_NOT_SUPPORTED | Description: Payment method doesn't support refunds. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PROVIDER_NOT_SUPPORTED | Description: Payment service provider doesn't support refunds for this charge. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PROVIDER_DOWN | Description: Payment service provider is temporarily unavailable. Try again later. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_UNPAID | Description: Charge is unpaid and can't be refunded. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUND_PERIOD_ENDED | Description: Charge is too old to refund. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_DISPUTED | Description: Charge is disputed and can't be refunded. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUND_IN_PROGRESS | Description: Another refund is in progress for this charge. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUNDED | Description: Charge was already fully refunded. ``` ### Examples ### Create refund Creates a full refund for a charge ```curl curl -X POST \ 'https://www.wixapis.com/payments/refunds/v1/refunds' \ -H 'Authorization: ' \ -H 'Content-Type: application/json' \ --data-binary '{ "refund": { "chargeId": "602b516f-e8a2-4e1a-9a17-0708099a74db" } }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.payments.RefundService.createRefund(refund, options) Description: Creates a refund. The refunding process starts immediately after a refund entity is created. If you specify an `amount`, you must also specify a `currency_code`. This currency should be the same as the currency of the charge. If `amount` and `currency_code` are not specified, the refund is created for the full charge amount. If the charge was already partially refunded, this refund will fail. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: refund, refund.chargeId Method parameters: param name: options | type: CreateRefundOptions none - name: previouslyRefundedAmount | type: string | description: Amount of the charge that was previously refunded. Specify this to compare your records of previously refunded amounts against those on the server. If they don't match, this method will return an error with the code `PREVIOUSLY_REFUNDED_AMOUNT_MISMATCH`. Learn more about [preventing unintended refunds](https://dev.wix.com/docs/rest/business-management/payments/refunds/introduction.md#preventing-unintended-refunds). param name: refund | type: Refund | description: The refund object. A refund object is the record of an attempt to return charged funds. | required: true - name: extendedFields | type: ExtendedFields | description: Custom field data for the refund object. [Extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: chargeId | type: string | description: GUID of the charge to refund. | required: true - name: currencyCode | type: string | description: Refund currency. Should be the same as the charge currency. - name: amount | type: string | description: Amount being returned to the buyer in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. - name: reason | type: string | description: Reason this refund was issued. - name: note | type: string | description: Note providing additional information about this refund. Return type: PROMISE - name: _id | type: string | description: Refund GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the refund is updated. Ignored when creating a refund. - name: _createdDate | type: Date | description: Date and time the refund was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#coordinated_Universal_Time_(UTC)) format. For example, "2024-01-30T13:30:00". - name: _updatedDate | type: Date | description: Date and time the refund was last updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#coordinated_Universal_Time_(UTC)) format. For example, "2024-01-30T13:30:00". - name: extendedFields | type: ExtendedFields | description: Custom field data for the refund object. [Extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: chargeId | type: string | description: GUID of the charge to refund. - name: currencyCode | type: string | description: Refund currency. Should be the same as the charge currency. - name: amount | type: string | description: Amount being returned to the buyer in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. - name: returnedApplicationFee | type: string | description: Application fee returned to the merchant from Wix in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. Only included if an application fee was returned. - name: returnedProcessingFee | type: string | description: Processing fee returned to the merchant from the payment service provider in the refund currency's main units (such as dollars or euros). For example, `"12.95"`. This field is empty when the processing fee is unknown. - name: full | type: boolean | description: Whether the refund is for the entire amount of the charge. - name: status | type: Status | description: Status of the refund. Learn more about the [refund lifecycle](https://dev.wix.com/docs/rest/business-management/payments/refunds/introduction.md#lifecycle-of-a-refund>). - enum: - PENDING: Refund is in progress. - SUCCEEDED: Refund succeeded. - FAILED: Refund failed. - REVERSED: Refund had succeeded, but has since been reversed. - name: providerRefundId | type: string | description: Payment service provider's GUID for the refund. - name: reason | type: string | description: Reason this refund was issued. - name: statusInfo | type: StatusInfo | description: Details about the refund status. Used to provide additional information about why a refund was given its status. - name: code | type: string | description: Reason code with detailed information about the refund status. See the full list of [reason codes](https://dev.wix.com/docs/rest/business-management/payments/service-plugins/payment-service-provider-service-plugin/reason-codes.md#refund-declined). - name: description | type: string | description: Description of the status. - name: acquirerReferenceNumber | type: string | description: Unique number assigned to a refund. This number is shared across all parties involved in processing the refund. It allows the merchant to track the refund with their bank. - name: note | type: string | description: Note providing additional information about this refund. Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: REFUND_CURRENCY_MISMATCH | Description: Refund currency doesn't match the charge currency. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: REFUND_CURRENCY_MISSING | Description: The `currency_code` field is required when specifying an `amount`. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PREVIOUSLY_REFUNDED_AMOUNT_MISMATCH | Description: The `previously_refunded_amount` doesn't match the server's calculated amount. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: REFUND_AMOUNT_OUT_OF_BOUNDS | Description: Refund amount is outside the allowed range. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PARTIAL_REFUND_NOT_SUPPORTED | Description: Payment service provider doesn't support partial refunds. Refund the full amount. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: ONLINE_REFUND_NOT_SUPPORTED | Description: Charge was made at a POS terminal and must be refunded on that terminal. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: MERCHANT_BALANCE_INSUFFICIENT | Description: Merchant account balance is insufficient to process the refund. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PAYMENT_METHOD_NOT_SUPPORTED | Description: Payment method doesn't support refunds. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PROVIDER_NOT_SUPPORTED | Description: Payment service provider doesn't support refunds for this charge. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: PROVIDER_DOWN | Description: Payment service provider is temporarily unavailable. Try again later. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_UNPAID | Description: Charge is unpaid and can't be refunded. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUND_PERIOD_ENDED | Description: Charge is too old to refund. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_DISPUTED | Description: Charge is disputed and can't be refunded. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUND_IN_PROGRESS | Description: Another refund is in progress for this charge. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: CHARGE_REFUNDED | Description: Charge was already fully refunded. ``` ### Examples ### createRefund ```javascript import { refunds } from '@wix/payments'; async function createRefund(refund,options) { const response = await refunds.createRefund(refund,options); }; ``` ### createRefund (with elevated permissions) ```javascript import { refunds } from '@wix/payments'; import { auth } from '@wix/essentials'; async function myCreateRefundMethod(refund,options) { const elevatedCreateRefund = auth.elevate(refunds.createRefund); const response = await elevatedCreateRefund(refund,options); } ``` ### createRefund (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { refunds } from '@wix/payments'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { refunds }, // Include the auth strategy and host as relevant }); async function createRefund(refund,options) { const response = await myWixClient.refunds.createRefund(refund,options); }; ``` ---