diff --git a/src/components/RefundInvoiceForm.vue b/src/components/RefundInvoiceForm.vue
new file mode 100644
index 000000000..1b545103a
--- /dev/null
+++ b/src/components/RefundInvoiceForm.vue
@@ -0,0 +1,173 @@
+<script setup>
+import { ref, reactive } from 'vue';
+import { useI18n } from 'vue-i18n';
+import { useRouter } from 'vue-router';
+import { useDialogPluginComponent } from 'quasar';
+import VnRow from 'components/ui/VnRow.vue';
+import FetchData from 'components/FetchData.vue';
+import VnSelect from 'components/common/VnSelect.vue';
+import FormPopup from './FormPopup.vue';
+import axios from 'axios';
+import useNotify from 'src/composables/useNotify.js';
+
+const $props = defineProps({
+    invoiceOutData: {
+        type: Object,
+        default: () => {},
+    },
+});
+
+const { dialogRef } = useDialogPluginComponent();
+const { t } = useI18n();
+const router = useRouter();
+const { notify } = useNotify();
+
+const rectificativeTypeOptions = ref([]);
+const siiTypeInvoiceOutsOptions = ref([]);
+const inheritWarehouse = ref(true);
+const invoiceParams = reactive({
+    id: $props.invoiceOutData?.id,
+});
+const invoiceCorrectionTypesOptions = ref([]);
+
+const refund = async () => {
+    const params = {
+        id: invoiceParams.id,
+        cplusRectificationTypeFk: invoiceParams.cplusRectificationTypeFk,
+        siiTypeInvoiceOutFk: invoiceParams.siiTypeInvoiceOutFk,
+        invoiceCorrectionTypeFk: invoiceParams.invoiceCorrectionTypeFk,
+    };
+
+    try {
+        const { data } = await axios.post('InvoiceOuts/refundAndInvoice', params);
+        notify(t('Refunded invoice'), 'positive');
+        const [id] = data?.refundId || [];
+        if (id) router.push({ name: 'InvoiceOutSummary', params: { id } });
+    } catch (err) {
+        console.error('Error refunding invoice', err);
+    }
+};
+</script>
+
+<template>
+    <FetchData
+        url="CplusRectificationTypes"
+        :filter="{ order: 'description' }"
+        @on-fetch="
+            (data) => (
+                (rectificativeTypeOptions = data),
+                (invoiceParams.cplusRectificationTypeFk = data.filter(
+                    (type) => type.description == 'I – Por diferencias'
+                )[0].id)
+            )
+        "
+        auto-load
+    />
+    <FetchData
+        url="SiiTypeInvoiceOuts"
+        :filter="{ where: { code: { like: 'R%' } } }"
+        @on-fetch="
+            (data) => (
+                (siiTypeInvoiceOutsOptions = data),
+                (invoiceParams.siiTypeInvoiceOutFk = data.filter(
+                    (type) => type.code == 'R4'
+                )[0].id)
+            )
+        "
+        auto-load
+    />
+    <FetchData
+        url="InvoiceCorrectionTypes"
+        @on-fetch="(data) => (invoiceCorrectionTypesOptions = data)"
+        auto-load
+    />
+
+    <QDialog ref="dialogRef">
+        <FormPopup
+            @on-submit="refund()"
+            :custom-submit-button-label="t('Accept')"
+            :default-cancel-button="false"
+        >
+            <template #form-inputs>
+                <VnRow>
+                    <VnSelect
+                        :label="t('Rectificative type')"
+                        :options="rectificativeTypeOptions"
+                        hide-selected
+                        option-label="description"
+                        option-value="id"
+                        v-model="invoiceParams.cplusRectificationTypeFk"
+                        :required="true"
+                    />
+                </VnRow>
+                <VnRow>
+                    <VnSelect
+                        :label="t('Class')"
+                        :options="siiTypeInvoiceOutsOptions"
+                        hide-selected
+                        option-label="description"
+                        option-value="id"
+                        v-model="invoiceParams.siiTypeInvoiceOutFk"
+                        :required="true"
+                    >
+                        <template #option="scope">
+                            <QItem v-bind="scope.itemProps">
+                                <QItemSection>
+                                    <QItemLabel>
+                                        {{ scope.opt?.code }} -
+                                        {{ scope.opt?.description }}
+                                    </QItemLabel>
+                                </QItemSection>
+                            </QItem>
+                        </template>
+                    </VnSelect>
+                </VnRow>
+
+                <VnRow>
+                    <VnSelect
+                        :label="t('Type')"
+                        :options="invoiceCorrectionTypesOptions"
+                        hide-selected
+                        option-label="description"
+                        option-value="id"
+                        v-model="invoiceParams.invoiceCorrectionTypeFk"
+                        :required="true"
+                    /> </VnRow
+                ><VnRow>
+                    <div>
+                        <QCheckbox
+                            :label="t('Inherit warehouse')"
+                            v-model="inheritWarehouse"
+                        />
+                        <QIcon name="info" class="cursor-info q-ml-sm" size="sm">
+                            <QTooltip>{{ t('Inherit warehouse tooltip') }}</QTooltip>
+                        </QIcon>
+                    </div>
+                </VnRow>
+            </template>
+        </FormPopup>
+    </QDialog>
+</template>
+
+<i18n>
+en:
+    Refund invoice: Refund invoice
+    Rectificative type: Rectificative type
+    Class: Class
+    Type: Type
+    Refunded invoice: Refunded invoice
+    Inherit warehouse: Inherit the warehouse
+    Inherit warehouse tooltip: Select this option to inherit the warehouse when refunding the invoice
+    Accept: Accept
+    Error refunding invoice: Error refunding invoice
+es:
+    Refund invoice: Abonar factura
+    Rectificative type: Tipo rectificativa
+    Class: Clase
+    Type: Tipo
+    Refunded invoice: Factura abonada
+    Inherit warehouse: Heredar el almacén
+    Inherit warehouse tooltip: Seleccione esta opción para heredar el almacén al abonar la factura.
+    Accept: Aceptar
+    Error refunding invoice: Error abonando factura
+</i18n>
diff --git a/src/components/TransferInvoiceForm.vue b/src/components/TransferInvoiceForm.vue
index 23c988ee7..f7050cdba 100644
--- a/src/components/TransferInvoiceForm.vue
+++ b/src/components/TransferInvoiceForm.vue
@@ -2,13 +2,12 @@
 import { ref, reactive } from 'vue';
 import { useI18n } from 'vue-i18n';
 import { useRouter } from 'vue-router';
-import { useQuasar } from 'quasar';
+import { useQuasar, useDialogPluginComponent } from 'quasar';
 import VnConfirm from 'components/ui/VnConfirm.vue';
 import VnRow from 'components/ui/VnRow.vue';
 import FetchData from 'components/FetchData.vue';
 import VnSelect from 'components/common/VnSelect.vue';
 import FormPopup from './FormPopup.vue';
-import { useDialogPluginComponent } from 'quasar';
 import axios from 'axios';
 import useNotify from 'src/composables/useNotify.js';
 
@@ -18,18 +17,19 @@ const $props = defineProps({
         default: () => {},
     },
 });
+
 const { dialogRef } = useDialogPluginComponent();
 const quasar = useQuasar();
 const { t } = useI18n();
 const router = useRouter();
 const { notify } = useNotify();
+
+const rectificativeTypeOptions = ref([]);
+const siiTypeInvoiceOutsOptions = ref([]);
 const checked = ref(true);
 const transferInvoiceParams = reactive({
     id: $props.invoiceOutData?.id,
 });
-
-const rectificativeTypeOptions = ref([]);
-const siiTypeInvoiceOutsOptions = ref([]);
 const invoiceCorrectionTypesOptions = ref([]);
 
 const selectedClient = (client) => {
@@ -43,9 +43,9 @@ const makeInvoice = async () => {
     const params = {
         id: transferInvoiceParams.id,
         cplusRectificationTypeFk: transferInvoiceParams.cplusRectificationTypeFk,
+        siiTypeInvoiceOutFk: transferInvoiceParams.siiTypeInvoiceOutFk,
         invoiceCorrectionTypeFk: transferInvoiceParams.invoiceCorrectionTypeFk,
         newClientFk: transferInvoiceParams.newClientFk,
-        siiTypeInvoiceOutFk: transferInvoiceParams.siiTypeInvoiceOutFk,
         makeInvoice: checked.value,
     };
 
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue b/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue
index 0ded54688..6a3bb5a78 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutDescriptorMenu.vue
@@ -5,6 +5,7 @@ import { useRouter } from 'vue-router';
 import { useQuasar } from 'quasar';
 
 import TransferInvoiceForm from 'src/components/TransferInvoiceForm.vue';
+import RefundInvoiceForm from 'src/components/RefundInvoiceForm.vue';
 import SendEmailDialog from 'components/common/SendEmailDialog.vue';
 
 import useNotify from 'src/composables/useNotify';
@@ -37,7 +38,6 @@ const { openConfirmationModal } = useVnConfirm();
 const quasar = useQuasar();
 const salixUrl = ref();
 const invoiceFormType = ref('pdf');
-const defaultEmailAddress = ref($props.invoiceOutData.client?.email);
 
 const showInvoicePdf = () => {
     const url = `api/InvoiceOuts/${$props.invoiceOutData.id}/download?access_token=${token}`;
@@ -54,12 +54,6 @@ const showSendInvoiceDialog = (type) => {
     invoiceFormType.value = type;
     quasar.dialog({
         component: SendEmailDialog,
-        componentProps: {
-            data: {
-                address: defaultEmailAddress.value,
-            },
-            promise: sendEmailInvoice,
-        },
     });
 };
 
@@ -141,6 +135,15 @@ const showTransferInvoiceForm = async () => {
         },
     });
 };
+
+const showRefundInvoiceForm = () => {
+    quasar.dialog({
+        component: RefundInvoiceForm,
+        componentProps: {
+            invoiceOutData: $props.invoiceOutData,
+        },
+    });
+};
 </script>
 
 <template>
@@ -228,19 +231,14 @@ const showTransferInvoiceForm = async () => {
         </QItemSection>
         <QMenu anchor="top end" self="top start">
             <QList>
-                <QItem v-ripple clickable @click="refundInvoice(true, false)">
+                <QItem v-ripple clickable @click="refundInvoice(true)">
                     <QItemSection>{{ t('With warehouse, no invoice') }}</QItemSection>
                 </QItem>
-                <QItem v-ripple clickable @click="refundInvoice(false, false)">
+                <QItem v-ripple clickable @click="refundInvoice(false)">
                     <QItemSection>{{ t('Without warehouse, no invoice') }}</QItemSection>
                 </QItem>
-                <QItem v-ripple clickable @click="refundInvoice(true, true)">
-                    <QItemSection>{{ t('With warehouse, with invoice') }}</QItemSection>
-                </QItem>
-                <QItem v-ripple clickable @click="refundInvoice(false, true)">
-                    <QItemSection>{{
-                        t('Without warehouse, with invoice')
-                    }}</QItemSection>
+                <QItem v-ripple clickable @click="showRefundInvoiceForm()">
+                    <QItemSection>{{ t('Invoiced') }}</QItemSection>
                 </QItem>
             </QList>
         </QMenu>
@@ -265,8 +263,7 @@ es:
     Send CSV: Enviar CSV
     With warehouse, no invoice: Con almacén, sin factura
     Without warehouse, no invoice: Sin almacén, sin factura
-    With warehouse, with invoice: Con almacén, con factura
-    Without warehouse, with invoice: Sin almacén, con factura
+    Invoiced: Facturado
     Without warehouse: Sin almacén
     InvoiceOut deleted: Factura eliminada
     Confirm deletion: Confirmar eliminación