Sales Prepayment invoicing

3 minute read time.

In X3 V12, patch 27 (2021 R3) it now possible for a customer to pre-pay for a sales order, through a pre-payment invoice.

This is through the function GESPREPI (A/P-A/R accounting->Invoicing->Prepayment invoice).

The process can be as follows:

    (1) Create a normal sales Order for some customer.

    (2) Create a prepayment invoice against the sales order(GESPREPI), usually not for the full amount of the order.

    (3) Make a payment against the prepayment invoice.

   (4) Allocate to the order and ship.

   (5) Invoice the shipment.

   (6) Make a payment against this invoice.

   (7) X3 will make an adjustment in amounts for this invoice according to how much was already paid through the prepayment invoice.

This functionality requires quite a few set ups in order to use it.

I will walk through a specific set up as an illustration.

1. General Parameters (ADPVAL)

TC Common Data 

INV Invoicing rules->PREFUN Prepayment management = Prepayment Invoices

TRS Acc Payable/Acc Receivable

INV Invoicing rules -> TYPINVCUS Customer Invoice type = ZAINV

PIM Prepayment invoice management -> PAYFINC, PREPAYC, PRPRVC, REVPRE, TRFINJ, TRPAYJ

PPY Prepayment management -> DENINSRCP Prepayment receipt accounting code = PPRNT

TDC Early discounts/late charges

2. Automatic Journals and Document Types

Automatic Journals:                                                   Legislation/journal codes:                                    Document Types

ACPT (Prepayment transfer)                                     evalue(func SUBTFO.FC("APG"))                       ZAGEN (Miscellaneous entry)

BPCPI (Customer Invoice - Prepayment)                  evalue(func SUBTFO.FC("BCG"))                       INVTYP=1,3->ZAINV(Sales Invoices); INVTYP=2,4 ->ZACCN (Customer Credit Notes )

BPCFI (Customer Invoice - Final)                              evalue(func SUBTFO.FC("PPJ"))                        ZASNV (Receivable Invoices)

PRPAY (Payment Transfer)                                        evalue(func SUBTFO.FC("PPI"))                        ZAREC (Payment Receipt )

SIHRE (Sales Invoice Reversal)                                evalue(func SUBTFO.FC("PPR"))                       ZACCN (Customer Credit Notes )

3. Payment Attributes

PPRINT Pre-Payment Receipt or PPRT Pre-Payment Receipt with Tax set on General parameter DENINSRCP

4. Sales Order

Prepayment Invoice Management

Prepayment Invoice Created (Customer BP invoice )

Journal Entry – posted prepayment invoice

Payment on prepayment open item

Pre Payment Journal Entry

Payment Inquiry

5. Final Invoice and Payment

Sales Invoice reflecting the whole invoice amount of 2300

Invoice journal entry

Invoice inquiry shows the amount due as 1150.00 as 50% has already been prepaid

Open Item for 

Payment Receipt

Final payment journal entry is for 50% of the whole invoice as prepayment was 50% of sales invoice

Perfectly matched

This simple scenario was to illustrate how the enhanced sales invoice prepayment process works. 

A more complicated scenario could be conjured up such as several pre-payment invoices and a variance between sales invoice and sales order or shipment.

The new functionality works flawlessly even for these convoluted scenarios..