Skip to main content

Transform Help Center

What are assignments to payments?

In billwerk's data processing the most fundamental feature is the assignment to payments. As a part of constant improvement we transitioned from ledger-based thinking to the new one - various types of payments are assigned to the proper invoice.

General information

Within typical subscription contracts, we could assume that an incoming payment always belongs to the oldest open invoice. What if that is not the case? Customer could not pay the January invoice, but paid the February one? Last payment is not assigned to the oldest open invoice, that would be incorrect.

To make all operations more transparent we needed to assign the right amount of money to the correct operation. So the payments must be assigned to the correct invoices that have been issued as German tax law requires to determine exactlywhat is to be settled with a payment.


The assignments procedure recognizes types of operations on a contract's account. It defines positive and negative ledger entries to make relations between them by following a set of rules. Each positive ledger entry can be assigned to any negative ledger entry. Reasons to proceed with assignments could be interpreted as the way of building relations between ledger entries.

There are several types of ledger entries in billwerk and they have their assignments preferences as listed below:






Payment was triggered after an invoice was created, or via reconciliation



Chargeback was done to a payment



Refund was done on a payment

Liability (negative receivable)


One invoice reverses an another one

Write-offWhat is the write-off?


Invoice was written-off

Prepaid card


A credit from a prepaid card was applied to an invoice


Payment gets assigned to the invoice by making the invoice the target for the source - the payment. Assignments make billwerk define those ledger entries as primary side (target) and the secondary side (source).

In summary, an assignment is a connection between ledger entries that links source to its target.


Each assignment has its reason. billwerk manages many complex relations at once, but we needed to create sequence to prioritize operations. We have implemented an algorithm to find the fitting pairs of ledger entries and ordering them by priority number. Reasons with their conditions are listed below.

  • SamePaymentTransaction - new ledger entry is created within a payment transaction with opposite sign, then it is assigned to the existing entry for that transaction. Here, the algorithm uses older transactions than the current ledger entry

  • PrepaidCard - prepaid card assigned to its document

  • PaymentPurpose- Selection of the target, when the payment is triggered. It orders the preferences from the Payment Transaction's preference list.

  • OpenBalance - whatever is unpaid at the time the assignment happens. It chooses a ledger entry that was already assigned to this source, otherwise it selects the oldest open ledger entry.

Accounting considerations

There’s a new option in DATEV accounting exports given for payment postings - you can Directly assign payments. This means, a payment posting gets a Document number in case the associated payment has assignment preferences. The Document number appears in the Belegfeld 1 column of the export:


Let's consider the example of two payments: one targeting a single invoice, and another targeting two invoices.



Enabling Directly assign payments for the first time causes all payments with preferred assignments to get correction postings.

Respectively, when an overpayment occurs (e.g. through account reconciliation), the payment posting group consists of two postings - one with an invoice target and one empty:


Another common case of a chargeback occuring on a payment:

Use Case

This contract has four ledger entries (from the bottom):

  • Invoice R-0001

  • Transaction Payment

  • Credit Note G-0001

  • Invoice R-0002


Usage of assignments to payments let us follow each operation. Due to its transparency we have better overview about all processes.

In the example above we showed you the scenario how assignments works when one invoice R-0001 is overpaid. First, we create the Invoice R-0001 and afterwards, we add the transaction of payment to settle the R-0001 invoice. The third ledger entity is the Credit Note G-0001 (Reversal Invoice) that is linked to the R-0001 invoice.