Down payments a una factura de cliente

Somos una empresa de entregas. Nuestros clientes pueden pagar los paquetes mediante un monedero virtual (lo recargan previamente y luego usan ese saldo para pagar facturas).

En SAP, ese monedero lo modelamos como anticipos (down payments). Cuando el cliente recarga su monedero en nuestra plataforma:

  • Se crea un anticipo (down payment) en SAP.

  • Automáticamente se genera un pago entrante (incoming payment) que cierra ese anticipo.

  • El resultado es un crédito a favor del cliente, disponible para futuras facturas.

Al momento de crear una factura (por las entregas realizadas), si el cliente usa su monedero, obtenemos los anticipos con crédito disponible y los enviamos dentro del mismo POST de creación de la factura, en un campo llamado DownPaymentsToDraw. SAP aplica correctamente esos anticipos a la factura recién creada.

Cuando el monedero está sin fondos, creamos la factura sin enviar DownPaymentsToDraw. La factura queda en SAP sin anticipos aplicados y, en nuestra plataforma, se marca como fallida en el cobro.
Posteriormente, el cliente recarga su monedero – con lo cual ya existe un anticipo disponible – y quiere pagar esa factura ya creada.

Para solucionarlo, intentamos un PATCH a /Invoices(<DocEntry>) enviando nuevamente el campo DownPaymentsToDraw con los datos del anticipo. Pero al parecer ese campo no es modificable en una factura ya contabilizada (revisando la documentación y haciendo pruebas, el sistema lo ignora o devuelve error).

¿Existe alguna forma, ya sea mediante una transacción estándar, un BAPI, una acción especial de la API OData/REST, o algún truco, que permita aplicar anticipos a una factura de ventas ya existente (sin tener que cancelar y volver a emitir la factura)?

Hemos revisado opciones como Cancel + Copy to New Invoice, pero buscamos una solución que no requiera anular el documento original, ya que eso impacta procesos downstream (notas de crédito, reportes, etc.).

Agradecemos cualquier experiencia o referencia técnica, especialmente si alguien ha enfrentado un escenario similar de “pago diferido con anticipo” sobre una factura ya emitida.

Muchas gracias de antemano.

Eso manual o automaticamente es una reconciliación interna.