diff --git a/15/umbraco-commerce/SUMMARY.md b/15/umbraco-commerce/SUMMARY.md index 8852f839981..ee21df07c85 100644 --- a/15/umbraco-commerce/SUMMARY.md +++ b/15/umbraco-commerce/SUMMARY.md @@ -110,6 +110,9 @@ * [Fixed Rate Shipping](reference/shipping/fixed-rate-shipping.md) * [Dynamic Rate Shipping](reference/shipping/dynamic-rate-shipping.md) * [Realtime Rate Shipping](reference/shipping/realtime-rate-shipping.md) +* [Payments](reference/payments/README.md) + * [Configure Refunds](reference/payments/refund-configs.md) + * [Issue Refunds](reference/payments/issue-a-refund.md) * [Taxes](reference/taxes/README.md) * [Fixed Tax Rates](reference/taxes/fixed-tax-rates.md) * [Calculated Tax Rates](reference/taxes/calculated-tax-rates.md) diff --git a/15/umbraco-commerce/key-concepts/payment-providers.md b/15/umbraco-commerce/key-concepts/payment-providers.md index bb69586fb96..132f3e84b3e 100644 --- a/15/umbraco-commerce/key-concepts/payment-providers.md +++ b/15/umbraco-commerce/key-concepts/payment-providers.md @@ -73,7 +73,7 @@ The implementable management methods are: * **FetchPaymentStatusAsync** - The `FetchPaymentStatusAsync` method communicates with the 3rd party payment gateway in order to fetch the current status of the given transaction. * **CapturePaymentAsync** - The `CapturePaymentAsync` method communicates with the 3rd party payment gateway to capture a previously authorized payment associated with the given transaction. * **CancelPaymentAsync** - The `CancelPaymentAsync` method communicates with the 3rd party payment gateway to cancel a previously authorized payment associated with the given transaction. -* **RefundPaymentAsync** - The `RefundPaymentAsync` method communicates with the 3rd party payment gateway to refund a previously captured payment associated with the given transaction. +* **RefundPaymentAsync** - The `RefundPaymentAsync` method communicates with the 3rd party payment gateway to refund a previously captured payment associated with the given transaction. The implementation of this method sends a refund request to the 3rd party payment gateway. This will allow Umbraco Commerce to update the payment details, or throw an exception to indicate that the refund action should be ignored. The method supports both full and partial refunds. For each implemented method above, developers should also implement a corresponding boolean property returning a `true` value. This is to let Umbraco Commerce know that the given feature is supported by the Payment Provider. @@ -81,6 +81,7 @@ For each implemented method above, developers should also implement a correspond * **CanCapturePayments** * **CanCancelPayments** * **CanRefundPayments** +* **CanPartiallyRefundPayments** (*available from version 15.3.0*) ## Payment Provider Meta Data @@ -124,4 +125,4 @@ Umbraco Commerce will automatically look for the following entries: | `ucPaymentProviders_{providerAlias}MetaData{metaDataAlias}Label` | A label for a provider transaction metadata item | | `ucPaymentProviders_{providerAlias}MetaData{metaDataAlias}Description` | A description of a provider transaction metadata item | -Here `{providerAlias}` is the alias of the provider, `{settingAlias}` is the alias of a setting, and `{metaDataAlias}` is the alias of a transaction meta data item. \ No newline at end of file +Here `{providerAlias}` is the alias of the provider, `{settingAlias}` is the alias of a setting, and `{metaDataAlias}` is the alias of a transaction meta data item. diff --git a/15/umbraco-commerce/reference/payments/README.md b/15/umbraco-commerce/reference/payments/README.md new file mode 100644 index 00000000000..17db5356604 --- /dev/null +++ b/15/umbraco-commerce/reference/payments/README.md @@ -0,0 +1,15 @@ +--- +description: Payment management in Umbraco Commerce. +--- + +# Payments + +Umbraco Commerce offers a user-friendly interface within the backoffice to efficiently manage order payments. + +## Refunds + +Umbraco Commerce supports issuing full and partial refunds directly from the backoffice for payment methods. This includes invoicing, Stripe, PayPal, and more. +- [Configure refunds](refund-configs.md) +- [Issue refunds](issue-a-refund.md) + + diff --git a/15/umbraco-commerce/reference/payments/images/order_list.png b/15/umbraco-commerce/reference/payments/images/order_list.png new file mode 100644 index 00000000000..74603829a70 Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/order_list.png differ diff --git a/15/umbraco-commerce/reference/payments/images/order_refund_modal.png b/15/umbraco-commerce/reference/payments/images/order_refund_modal.png new file mode 100644 index 00000000000..a0b36b3b8d5 Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/order_refund_modal.png differ diff --git a/15/umbraco-commerce/reference/payments/images/payment_details_button.png b/15/umbraco-commerce/reference/payments/images/payment_details_button.png new file mode 100644 index 00000000000..8cb9ec2b887 Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/payment_details_button.png differ diff --git a/15/umbraco-commerce/reference/payments/images/payment_method_refund_section.png b/15/umbraco-commerce/reference/payments/images/payment_method_refund_section.png new file mode 100644 index 00000000000..11aea4d907b Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/payment_method_refund_section.png differ diff --git a/15/umbraco-commerce/reference/payments/images/payment_methods_list.png b/15/umbraco-commerce/reference/payments/images/payment_methods_list.png new file mode 100644 index 00000000000..051c195e5ed Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/payment_methods_list.png differ diff --git a/15/umbraco-commerce/reference/payments/images/refund_payment_button.png b/15/umbraco-commerce/reference/payments/images/refund_payment_button.png new file mode 100644 index 00000000000..8cb9ec2b887 Binary files /dev/null and b/15/umbraco-commerce/reference/payments/images/refund_payment_button.png differ diff --git a/15/umbraco-commerce/reference/payments/issue-a-refund.md b/15/umbraco-commerce/reference/payments/issue-a-refund.md new file mode 100644 index 00000000000..776b96ecb90 --- /dev/null +++ b/15/umbraco-commerce/reference/payments/issue-a-refund.md @@ -0,0 +1,38 @@ +--- +description: This page guides you through the steps to issue a refund for a captured order using Umbraco Commerce. +--- + +# Issue Refunds + +{% hint style="info" %} +You can issue a refund only if the payment method used supports refunds. Learn how to enable payment refunds [in the Configure Refunds](refund-configs.md) article. +{% endhint %} + +To refund an order, follow the steps outlined below: + +1. Go to **Settings** in the Umbraco backoffice. +2. Open the **Commerce** section. +3. Select your store from the **Stores** section. +4. Go to **Orders**. + +![Order list](images/order_list.png) + +5. Select the order that you want to refund. +6. Click **Refund Payment** on the Order Details page. + +![Refund Payment button](images/refund_payment_button.png) + +7. Fill in the fields in the Order Refund modal: + - **Order Lines section** (*only available if partial refunds are enabled*): Enter the quantity you want to refund from each order line. + - **Restock Products toggle**: This is a flag that tells Umbraco Commerce to restock the refunded products. + - **Refund Amount textbox**: Displays the amount that will be refunded. Its value is auto-populated, but you can enter any positive number smaller than the refundable amount. + - **Refund button**: Clicking on this button will issue a refund with the **Refund Amount** above. + - **Refund All button**: Clicking on this button will issue a refund for the remaining refundable amount of the order. + +![Order refund modal](images/order_refund_modal.png) + +8. Click on the **Refund** button to refund the desired amount or the **Refund All** button to refund the full refundable amount (*only available if partial refunds are enabled*). + +Find the refund history by clicking on the information icon at the top-right corner of the Payment Details section. + +![Payment Details button](images/payment_details_button.png) diff --git a/15/umbraco-commerce/reference/payments/refund-configs.md b/15/umbraco-commerce/reference/payments/refund-configs.md new file mode 100644 index 00000000000..a971bfbf90c --- /dev/null +++ b/15/umbraco-commerce/reference/payments/refund-configs.md @@ -0,0 +1,23 @@ +--- +description: This page will guide you on how to enable the refund feature for a payment method. +--- + +# Configure Refunds + +To enable the refund feature for a payment method, follow the steps outlined below: + +1. Go to **Settings** in the Umbraco backoffice. +2. Select your store from the **Stores** section. +3. Go to **Payment Methods**. + +![Payment Methods](images/payment_methods_list.png) + +4. Select the payment method you want to configure. The **Invoicing** payment method is used as an example in this guide. + +5. Toggle **Refund Payments** and **Partially Refund Payments** if needed. + +![Refund settings](images/payment_method_refund_section.png) + +6. Click **Save**. + +Once refunds are enabled, you can issue refunds for a captured order. Learn how refunds are issued in the [Issue Refunds](issue-a-refund.md) article.