API status

Client requirements for tax collection

The following diagram shows how Upvest and clients should handle tax collection events.


In general, clients must perform the following during this process:

  1. In the case of Vorabpauschale, inform users about the upcoming process, so that they are:

    a - properly aware of potential sell-to-cover orders

    b - able to potentially create a tax exemption in advance.

  2. Subscribe to the Tax Collection Events webhooks and process all event notifications. These webhooks allow clients to track the collection process in real-time.

  3. Prepare a follow-up process with end-users to resolve any issues that could arise during an ongoing collection. For more information, refer to the Resolving issues - Tax collection cancellation section below.

  4. Monitor both the Order Event and Execution Event webhooks for state changes to the sell-to-cover orders. Respective sell-to-cover orders can be identified by the initiation_flow attribute in the events, see example in the next section.

  5. Update the user’s cash balance, e.g., by using the Cash Balance Event. Use the Cash Transaction Event webhook with the transaction type TAX_PREPAYMENT_DE for transaction data. Depending on the client specific cash setup, clients may want to distribute or reinvest any cash remainders on behalf of their users (e.g. by triggering a virtual cash balance decrease).

  6. Use the reports endpoint and related webhooks to access PDF versions of the billing reports and forward them to the end users (report type: TAX_PREPAYMENT_DE).

  7. Mark the tax payment as processed.

After the sell order has executed, the proceeds are locked until the taxes are paid. This means that the “available for trading” position on the cash balance will not immediately update and the user will not be able to use this cash for buy orders.

After the taxes have been paid and the order settled, usually at the T+2 session, the respective cash lock is released and the remainder can be withdrawn.

Resolving issues - Tax collection cancellation

Clients should prepare a manual follow-up process with end users to resolve any issues that may arise during the tax collection process. You should also closely align with your associated client launch manager to ensure a smooth resolution of any issues. In practice, Upvest’s tax operations team will let you know about any uncollectible cases and agree on the appropriate measures.

For issues that trigger a TAX_COLLECTION.CANCELLED event, Upvest will classify the outstanding tax collection as non-collectible. This results in a situation where users must be reported to the financial authorities (see, § 44 Abs. 1 S. 10 EStG).

Edge cases - Additional Processes

There are also potential edge cases that require additional processing to complete the tax collection. Since there is a gap from when the tax is assessed, (December 31st of the tax year) and when the tax is collected, it is possible for an end user to fall into one of the following use cases:

Full Netting: if an end user completely closes their position before the tax collection can be triggered (i.e., in the first half of January):

  • In this case Upvest will process a tax collection and a parallel tax refund - resulting in a net zero tax collection for the user.
  • In such a case, Upvest will obviously not trigger any sell-to-cover orders and also not generate any additional webhooks.
  • For this reporting-only case, Upvest will provide two PDF reports for the impacted user (types: TAX_REFUND and TAX_PREPAYMENT_DE).

Partial Netting: if an end user sells a portion of their position in the instrument during the start of January before the tax collection can be triggered (i.e., in the first half of January):

  • This case is basically a combination of the standard sell-to-cover flow and the full netting. However, the tax refund will be smaller than the outstanding tax collection.
  • In this case, Upvest will reduce the outstanding collection amount by the parallel tax refund and trigger a sell-to-cover order for the reduced amount.
  • Otherwise, the individual steps remain the same.

Please also note; in certain cases the assigned buffer on the first sell-order might not prove to be sufficient to pay all outstanding taxes. In those cases, Upvest would trigger multiple orders until the taxes are completely collected. This would potentially also entail using different sell-to-cover strategies. The sequence of methods we are using is (ordered by priority):

  1. Sell-to-cover order of the concrete affected position (e.g., ISIN).
  2. Sell-to-cover order of the biggest position in the account instead of the concrete instrument.
  3. Cover with cash (in joint alignment with the client).