Impuestos

M√ļltiples impuestos

Supongamos que se quieren a√Īadir varios impuestos a una misma l√≠nea de producto. En este caso se deber√° hacer uso de la API avanzada de productos de Facturae-PHP a trav√©s de la clase FacturaeItem:

// Vamos a a√Īadir un producto utilizando la API avanzada
// que tenga IVA al 10% e IRPF al 15%
$fac->addItem(new FacturaeItem([
  "name" => "Una línea con varios impuestos",
  "description" => "Esta línea es solo para probar Facturae-PHP",
  "quantity" => 1, // Esto es opcional, es el valor por defecto si se omite
  "unitPrice" => 43.64,
  "taxes" => [
    Facturae::TAX_IVA  => 10,
    Facturae::TAX_IRPF => 15
  ]
]));

Esta API también permite indicar el importe unitario del producto sin incluir impuestos (base imponible), ya que por defecto Facturae-PHP asume lo contrario:

// Vamos a a√Īadir 3 bombillas LED con un coste de 6,50 ‚ā¨ ...
// ... pero con los impuestos NO INCLU√ćDOS en el precio unitario
$fac->addItem(new FacturaeItem([
  "name" => "Bombilla LED",
  "quantity" => 3,
  "unitPriceWithoutTax" => 6.5, // NOTA: no confundir con unitPrice
  "taxes" => [Facturae::TAX_IVA => 21]
]));

Debe tenerse en cuenta que, por defecto, Facturae-PHP interprenta al IRPF como un impuesto retenido (aquellos que se restan a la base imponible) y al resto de impuestos como repercutidos (se suman a la base imponible).

Si necesitas crear una factura ‚Äúespecial‚ÄĚ es posible sobreescribir el comportamiento por defecto a trav√©s de la propiedad isWithheld:

// Para rizar un poco el rizo vamos a a√Īadir una l√≠nea con IVA (repercutido)
// al 21% y también con impuestos especiales retenidos al 4%
$fac->addItem(new FacturaeItem([
  "name" => "Llevo impuestos retenidos",
  "quantity" => 1,
  "unitPrice" => 10,
  "taxes" => [
    Facturae::TAX_IVA => 21,
    Facturae::TAX_IE  => ["rate"=>4, "isWithheld"=>true]
  ]
]));

IVA con recargo de equivalencia

Para a√Īadir un recargo de equivalencia al IVA (‚Äúequivalence surcharge‚ÄĚ en ingl√©s) se debe especificar el porcentaje de recargo dentro de la propiedad surcharge:

$fac->addItem(new FacturaeItem([
  "name" => "Llevo IVA con recargo de equivalencia",
  "quantity" => 1,
  "unitPrice" => 10,
  "taxes" => [
    Facturae::TAX_IVA  => ["rate"=>21, "surcharge"=>5.2],
    Facturae::TAX_IRPF => 19
  ]
]));

Fiscalidad especial

Algunas operaciones son subjetivas de una fiscalidad especial (special taxable event en inglés). Por ejemplo, determinados productos se ven exentos de impuestos. Habitualmente, la forma en la que se declaran estos casos es marcando la línea de producto con IVA al 0% y especificando la justificación de la fiscalidad especial:

$fac->addItem(new FacturaeItem([
  "name" => "Un producto exento de IVA",
  "unitPrice" => 100,

  // Se marca la línea con IVA 0%
  "taxes" => [Facturae::TAX_IVA => 0],

  // Se declara el producto como exento de IVA
  "specialTaxableEventCode" => FacturaeItem::SPECIAL_TAXABLE_EVENT_EXEMPT,

  // Se detalla el motivo
  "specialTaxableEventReason" => "El motivo detallado de la exención de impuestos"
]));