Tips básicos para implementar la contabilidad de un e-commerce

La contabilidad es clave en cualquier negocio, ya que es el elemento con el que se conoce la salud económica de la empresa, permite evaluar las tendencias y ayuda a anticiparse en momentos complicados.

A día de hoy, dentro de este campo, hay un actor que es cada vez más protagonista: el e-commerce. El mundo digital en que vivimos no concibe ya las nuevas formas de consumo sin el comercio electrónico.

En España, por ejemplo, el segundo semestre de 2018 cerró con un crecimiento de más de un 27%.Pero el e-commerce no es solo cosa de contables, los desarrolladores también tenemos mucho que aportar.

Y en este post veremos precisamente algunos consejos (desde el punto de vista de un perfil técnico) para ayudarte a implementar la contabilidad de un e-commerce. Consejos basados en una experiencia real que te ayudarán a prevenir errores.

1. Glosario

Trabaja con tu Product Owner para poner en claro términos clave y fórmulas para comprender la contabilidad que tienes que codificar. Esfuérzate por usar el mismo idioma que el equipo contable y vuestra comunicación será más fácil y fluida.

Algunos conceptos importantes a los que se hará referencia en el post son:

  • Apunte contable: es una anotación que detalla cualquier movimiento comercial o económico que modifique el patrimonio de la empresa.
  • Cierre contable: es el proceso en el que se recogen la totalidad de las operaciones realizadas. Puede ser diario, mensual y, obligatoriamente, anual.
  • Beneficio bruto: de forma general, es el total de ventas menos el coste de los bienes vendidos, es el valor que te permite evaluar los resultados de tu negocio. Cada tienda implementa su propia fórmula en función de la naturaleza del negocio.
  • Stock contable: es el total de unidades disponibles en un almacén. En un cierre contable, el stock contable puede suponer pérdidas ya que es material comprado, no vendido y, además, ocupa espacio.

2. Las fechas

Almacenar las fechas en la contabilidad es mucho más que una cuestión de auditoría. Además de registrar el momento exacto en el que se produce la venta, te recomendamos almacenar otras fechas que tal vez no parezcan tan relevantes como, por ejemplo, la fecha en la que se registró el pedido, la fecha de devolución o la fecha en que entró en tu almacén el producto que estás vendiendo.

Es decir, cualquier momento clave del flujo y no solo el registro del apunte contable. Algunas fórmulas podrían trabajar con fechas distintas a la fecha de venta.

Supongamos que tu e-commerce no dispone de un almacén al uso y compras mercancía en base a los pedidos que vas recibiendo. Y, supongamos que a nivel de BBDD, en cada apunte contable por artículo vendido, anotas la información de la compra de mercancía.

Cuando se va a cerrar la contabilidad para el mes, has vendido dos unidades de un artículo el día 25, y tú has comprado la mercancía en dos días distintos, una el día 31 y la otra el día 1 del mes siguiente.

Cuando se procede al cierre mensual (o más importante, anual), no se pueden tratar por igual ambas filas, si sólo tienes en cuenta los apuntes por su fecha de pedido, la compra del día 1 quedará descuadrada.

Otra cuestión importante relativa a las fechas es el formato en el que se almacenan. Evita problemas con las zonas horarias guardando tus fechas en Hora Zulú, que hará que no importe dónde se alojen tus servidores, ni el país de origen de tus clientes ya que todas las fechas estarán alineadas.

La Hora Zulú designa el Tiempo Universal Coordinado (UTC) y es la hora en la longitud 0° que atraviesa el meridiano de Greenwich en referencia al cual se establecen los husos horarios del planeta. ¿Te suena haber visto la hora 7:30Z? Corresponde con las 8:30 en GMT+1 (nuestro horario de invierno) y las 9:30 en GMT+2 (nuestro horario de verano).

3. Los importes

Es importante, desde el primer momento, tener claro el número de decimales que se quieren almacenar (dos, tres o incluso cuatro)  y cómo se redondea. Hay que ser coherente en todos los puntos donde se trabaje con importes para evitar descuadres de céntimos.

Hay que saber también calcular el precio unitario a partir de un total porque aunque puede parecer trivial, podemos obtener distintos resultados. Veamos un ejemplo:

Con una promoción de 3×2 un cliente compra 3 unidades de un artículo de 5€ pagando 10€.

  • Podríamos registrar 2 unidades a 5€ y una unidad a 0€. Esta decisión nos supone un problema en caso de devolución, ya que si nos devuelven uno sólo de los tres artículos, ¿qué importe devolvemos al cliente? ¿Y cómo registramos el apunte contable?
  • Si calculamos el precio unitario dividiendo los 10€ entre las 3 unidades, nos sale a 3.33€ la unidad (y perdemos 1 céntimo en el cálculo).
  • Podemos afinar el punto anterior y tener un algoritmo que ajuste esta pérdida ajustandola a uno de los tres artículos, tendríamos dos unidades a 3.33€ y una unidad a 3.34€

Las anteriores son algunas casuísticas que nos podrían pedir implementar desde negocio, pero el simple hecho de que haya varias opciones nos obliga a tener claras las fórmulas a aplicar a los importes desde el primer momento.

4. Los impuestos

Cuando se registra el apunte contable correspondiente a la venta de un artículo, parece natural guardar el precio de venta al público.

Ahora bien, si sólo disponemos del precio de venta al público en el momento de calcular el beneficio bruto y tenemos una fórmula de beneficio bruto que trabaja con importes sin impuestos, tendríamos que descontar el IVA a cada importe de nuestros apuntes contables y podríamos sacar el IVA del artículo de una tabla de maestros.

Parece sonar bien, pero hay que tener en cuenta que el IVA es un dato que puede cambiar con el tiempo, ya sea porque se cambie el tipo impositivo del artículo o por alguna subida o bajada del IVA. Es por esto que recomendamos, al registrar un apunte contable, almacenar el precio de venta al público así como el precio sin impuestos del artículo.

5. El valor absoluto

Tiene todo el sentido pensar que los gastos tendrán signo negativo y las ganancias signo positivo, pero si registras estos signos en los apuntes contables, las fórmulas a aplicar pueden resultar desconcertantes.

Por ejemplo, con un gasto de -5€ y un ingreso de 6€, la fórmula (simplificada) de beneficio bruto sería:

Beneficio Bruto = ∑ingresos + ∑gastos

Beneficio Bruto = 6 + (-5) = 1

Ingresos más gastos. Suena raro, ¿verdad? Si lo que registras son valores absolutos, con un gasto de 5€ y un ingreso de 6€, la fórmula quedaría más intuitiva:

Beneficio Bruto = ∑ingresos – ∑gastos

Beneficio Bruto = 6 – 5 = 1

6. Gestión de stock

La gestión de stock es útil de cara al cliente para saber si puedes ofrecerle o no un artículo. Pero también puedes necesitar, en algún momento, hacer un tratamiento contable de dicho stock. Es decir, evaluar el coste que te suponen los artículos que tienes en tu almacén y que aún no has vendido.

Para ello, trabajaremos con unidades disponibles por cada artículo, que habrá que incrementar con cada compra o devolución o decrementar en cada venta.

Cuando se trata de incrementar o decrementar unidades, en entornos concurrentes, hay que garantizar el dato así que necesitaremos transaccionalidad.

En nuestra experiencia, mejor que un proceso de lectura y actualización del dato dentro de una transacción, es utilizar, siempre que sea posible, operaciones atómicas, por ejemplo, el $inc de MongoDB o el update de SQL (SET value = value + 1) que garantizan la atomicidad de la operación.

Conclusiones

Estos consejos están planteados para ayudarte independientemente de las tecnologías y arquitecturas con las que implementes tu e-commerce, para ser la base de los procesos de cálculo más importantes para tu negocio.

Dado que no podemos garantizar un código libre de bugs, un proceso tan exigente como la contabilidad requiere hacer uso de todos los medios a nuestro alcance para recuperarnos fácilmente en caso de error.

Esto incluye una comprensión profunda de los algoritmos, una comunicación fluida con nuestro PO y/o departamento contable y los mecanismos para aportar sencillez y claridad al proceso.

Escribe un comentario