Cómo automatizamos la conciliación de pagos para 4 PSPs en Odoo 18

Un caso real automatizando conciliación de Stripe, PayPal, Klarna y Revolut — con números de producción

P

Pavel Brecs

27 de marzo de 2026 · 8 min de lectura

Panel de conciliación PSP con Stripe, PayPal, Klarna y Revolut

Stripe deposita 11.820 € — pero dentro hay 47 cargos, 3 reembolsos y 340 € en comisiones. PayPal envía 4.200 € sin desglose. Klarna liquida en SEK. Si usas Odoo con varios PSPs, conoces este dolor. Así pasamos de 6 horas de conciliación manual al mes a cero, con conciliación automática de pagos Odoo.

Por qué la conciliación en Odoo es dolorosa

Odoo 18 tiene una conciliación bancaria sólida para casos simples. Entra un pago de cliente, encaja con una factura, pulsas validar. Listo.

Pero los payouts de PSP no funcionan así. Cuando Stripe envía dinero a tu banco, no envía un pago por pedido. Agrupa días de cargos en un único depósito, resta los reembolsos y sus comisiones de procesamiento, y envía una suma total. Tu banco ve una línea: "STRIPE PAYOUT 11.820 €". Odoo no tiene ni idea de lo que hay dentro de ese número.

Stripe sí tiene un módulo de pago nativo en Odoo 18. Pero ojo con el matiz: solo funciona si Stripe está conectado directamente a tu web de Odoo. Si tus clientes pagan a través de una plataforma externa de e-commerce que enruta los pagos por Stripe, ese módulo es inútil.

¿PayPal? Sin conciliación nativa de payouts. ¿Klarna? Ni siquiera tiene módulo de pago nativo. ¿Revolut? Lo mismo. La comunidad lleva años pidiéndolo. Hilos de foros con miles de vistas describen el mismo dolor: exportaciones CSV manuales, reformateo en Excel, horas haciendo clic en el widget de conciliación.

PSP Nativo Externo Conciliación payout Nuestro
Stripe directo
PayPal básico
Klarna
Revolut

El módulo nativo de Stripe solo funciona cuando está conectado directamente a tu web de Odoo.

Nuestro setup: dos negocios, un Odoo

Gestionamos dos e-commerce desde una única instancia de Odoo 18 en Odoo.sh.

Empresa A es una operación retail local sobre una web Odoo. Los pagos van por Stripe y PayPal, liquidando en una cuenta bancaria EUR.

Empresa B maneja ventas internacionales en varios mercados europeos a través de una plataforma externa de e-commerce — completamente separada de Odoo. Los pagos entran por Stripe (no conectado a Odoo), Klarna (para clientes escandinavos que pagan en SEK, DKK, NOK) y Revolut.

Las cuentas bancarias de ambas empresas están conectadas a Odoo vía Saltedge. Los extractos bancarios llegan automáticamente. Pero ¿casar esas líneas bancarias con los pedidos reales de los clientes? Era totalmente manual.

Empresa A Retail local • Web Odoo Empresa B Internacional • Externa Stripe PayPal Stripe Klarna Revolut Cuenta bancaria A EUR Cuenta bancaria B EUR • SEK • DKK • NOK Cuenta bancaria C GBP • CHF Odoo 18 Saltedge

Cuatro PSPs, varias divisas, tres cuentas bancarias, dos empresas — todo convergiendo en una sola instancia de Odoo 18.

¿Y qué ocurre cuando Stripe envía un payout?

La mayoría de usuarios de Odoo no entienden del todo cómo funcionan los payouts de PSP. Esta es la realidad.

Un cliente hace un pedido de 899 €. Stripe crea un cargo. En los días siguientes, otros clientes compran más cosas. Stripe va acumulando todos esos cargos. El día del payout, Stripe calcula: todos los cargos menos los reembolsos menos sus comisiones de procesamiento. Y entonces envía una única transferencia a tu banco.

Tu banco muestra un único depósito. Odoo lo importa como una única línea de extracto bancario en una cuenta transitoria, esperando a que alguien averigüe qué significa.

Anatomía de un payout de Stripe
47 cargos+12.340 €
3 reembolsos−180 €
Comisiones Stripe (2,7 %)−340 €
Depósito bancario=11.820 €
⚠ Odoo ve: 1 línea bancaria por 11.820 €

Odoo no sabe: qué hay dentro

Construyendo la solución, un PSP cada vez

No nos propusimos construir un motor universal de conciliación. Empezamos con un problema y seguimos adelante.

Mes 1 — Stripe primero. El plan era simple: conectar a la API de Stripe, traer todos los cargos, casar cada uno con un pedido de venta por referencia, auto-conciliar. Funcionó para un 80 % de las transacciones el primer día.

Mes 2 — Se suma PayPal. PayPal era otra bestia. A diferencia de Stripe, PayPal no tiene API de liquidación. Tuvimos que inventar "payouts sintéticos": encontrar líneas bancarias que contengan "PAYPAL" y averiguar qué transacciones encajan en cada depósito por rango de fecha e importe.

Mes 2,5 — Entra Klarna. Klarna trajo la sorpresa multidivisa. Los clientes en Escandinavia pagan en SEK, pero Klarna liquida en EUR. Nuestra comprobación de cobertura comparaba importes en divisas distintas. Nos costó dos días rastrear ese bug.

Mes 3 — Revolut completa el cuadro. La integración más simple: un cargo, un payout. Pero incluso esta tenía un detalle — los pedidos del viernes se liquidan el lunes, así que la ventana de matching tenía que contemplar los fines de semana.

Mes 1
Integración Stripe
Mes 2
+PayPal, payouts sintéticos
Mes 2,5
+Klarna, multidivisa
Mes 3
+Revolut, matching 1:1
Ahora
Auto-undo, backfill, fix de comisiones

Los problemas que no esperábamos

Las integraciones iniciales eran la parte fácil. El trabajo de verdad fue lidiar con los casos límite que solo aparecen en producción.

Cargos huérfanos

Stripe tenía cargos que no casaban con ningún pedido en Odoo. Transacciones de prueba, cargos manuales, cargos de una web que no sabíamos que estaba en la misma cuenta de Stripe. La primera versión se caía con estos. Ahora los marca como excepciones y sigue adelante.

Odoo "ayudando" demasiado

El modelo de conciliación integrado de Odoo es entusiasta — coge líneas bancarias y las concilia parcialmente antes de que corra nuestro módulo. Matches incorrectos, asientos a medio hacer. Tuvimos que construir lógica de auto-undo: detectar, revertir, rehacer correctamente.

La API de liquidación que falta en PayPal

Stripe y Klarna tienen endpoints de liquidación. PayPal no. Aplicamos ingeniería inversa a los payouts desde las líneas bancarias por huecos de fechas e importes. Entre los casos límite está PayPal reteniendo fondos por seguridad — las reservas potenciales por reembolso pueden retrasar las liquidaciones de 7 a más de 49 días.

Comisiones y multidivisa

Cada PSP descuenta comisiones de forma distinta — por transacción, por payout o silenciosamente desde la liquidación. Añade multidivisa encima (Klarna cobra en SEK, liquida en EUR) y los números nunca cuadran al primer intento. Hay muchas situaciones espinosas con el manejo de comisiones que solo afloran en producción.

Cómo funciona ahora

Un módulo de Odoo. Cinco tareas programadas cron diarias. Cero intervención manual, pura automatización de facturación, cobros y pagos.

HoraQué ocurre
05:30Sincronizar referencias de pedidos desde plataformas externas
06:00Traer transacciones desde las APIs de los cuatro PSPs
06:30Casar transacciones con pedidos, payouts con líneas bancarias
07:00Conciliar — reescribir asientos contables, imputar comisiones
09:15Informe matinal por Telegram

Si algo sale mal — una referencia de pedido ausente, una factura aún no creada — la transacción se marca como excepción con un motivo claro. Un contable puede resolverla mediante un asistente que muestra los matches sugeridos.

Si la conciliación integrada de Odoo interfiere, entra el auto-undo, revierte el estropicio y reintenta.

Los resultados: números reales de producción

Estos números provienen de nuestra instancia de Odoo en producción, cubriendo aproximadamente 2,5 meses de operación con conciliación bancaria automatizada.

231
transacciones
243 K €
conciliados
74
payouts procesados
4
PSPs integrados
99,6 %
tasa de éxito
3,5 K €
comisiones registradas
~6 h
ahorradas al mes
2
empresas

Una excepción entre 231 transacciones — un cargo de PayPal sin referencia de pedido extraíble. En nuestro último mes: 31 payouts por un total de 99.674 € entre los cuatro PSPs.

PSPTXPayoutsTX media
Stripe163334,5
PayPal47212,0
Klarna1091,1
Revolut11111,0

Antes y después

Antes
47 transacciones que casar a mano
× 4 minutos cada una
= 3+ horas de trabajo manual
Errores de redondeo, apuntes en transitoria
Estrés de fin de mes
Después
1 cron diario automatizado
0 intervención manual
0 en transitoria
Informe de Telegram a las 9 de la mañana
Hora del café

Si esto te suena familiar

Si gestionas un e-commerce sobre Odoo con varios proveedores de servicios de pago (PSPs) y tu contable se pasa horas casando extractos bancarios con pedidos — hemos estado exactamente donde tú estás.

Nuestro módulo corre diariamente, gestiona cuatro PSPs, dos empresas y varias divisas. Lo construimos para nuestros propios negocios y podemos adaptarlo también al tuyo.

¿Quieres hablar de tu setup?

Estaremos encantados de repasar cómo podría funcionar la conciliación automatizada de PSPs en tu instancia de Odoo.

Ponte en contacto →

¿Necesitas ayuda con esto?

Construimos Odoo y automatización IA en producción para empresas de la UE. Hablemos de tu proyecto.

Hablemos →
LECTURA RELACIONADA

Más artículos del Journal