Importar ventas desde otros sistemas

Importar una venta puede ser un reto, especialmente si proviene de un sistema externo. Muchas plataformas generan facturas con errores que pueden provocar resultados fiscales distintos a los esperados en Dinaup.

Por ejemplo, es común que se aplique IVA nacional en entregas destinadas a Canarias, Ceuta o Melilla, cuando en realidad deberían tener un tratamiento diferente.

Qué tener en cuenta al importar una venta

Uno de los errores más habituales es basar la aplicación del tipo de venta únicamente en los datos fiscales del cliente. Es mucho más fiable apoyarse en la dirección de entrega (si está disponible). En su defecto, se puede usar la dirección donde se consume el servicio o, como última opción, la dirección fiscal.

Escenarios contemplados

Dinaup identifica automáticamente los siguientes tipos de operación:

  • Venta simplificada

  • Venta nacional (España, excepto Canarias, Ceuta y Melilla)

  • Venta No TAI (territorios fuera de aplicación del IVA como Canarias, Ceuta y Melilla)

  • Operación intracomunitaria (VIES)

  • OSS (One-Stop Shop)

  • Exportación fuera de la UE

¿Cómo se detecta cada caso?

El sistema sigue este orden para determinar la ubicación fiscal:

  1. Dirección de entrega (si existe)

  2. Dirección de consumo del servicio (si aplica)

  3. Dirección fiscal del cliente (como última opción)

Según la ubicación, Dinaup clasifica la venta de la siguiente forma:

Caso
¿Cuándo aplica?

Nacional

Si la dirección está en España excepto Canarias, Ceuta o Melilla

No TAI

Si la dirección está en Canarias, Ceuta o Melilla

VIES

Si el destino está en la UE y el cliente está dado de alta en el VIES

OSS

Si vendes a particulares de la UE bajo el régimen especial OSS. Si una empresa de la UE no está en el VIES se considera como particular en términos tributarios.

Exportación

Si el envío o prestación de servicio es a un país fuera de la Unión Europea

Para utilizar este código necesitarás estar utilizando Dinaup SDK (.NET) con un client logueado.





VatTerritoriality territorialityResult = ClassifyVatTerritoriality(vatID, countryCode, postalCode, isVies);

switch (territorialityResult)
{
    case VatTerritoriality.Unknown:
        // lógica para desconocido
        break;

    case VatTerritoriality.Simplified:
        // lógica para venta simplificada
        break;

    case VatTerritoriality.National:
        // lógica para venta nacional
        break;

    case VatTerritoriality.OutOfVatTerritory:
        // lógica para Canarias, Ceuta o Melilla
        break;

    case VatTerritoriality.IntraCommunity:
        // lógica para operación intracomunitaria
        break;

    case VatTerritoriality.OneStopShop:
        // lógica para OSS
        break;

    case VatTerritoriality.Export:
        // lógica para exportación fuera de la UE
        break;
}

Última actualización