SAP Finance and Controlling Upload Templates

11 Excel templates for SAP financial and controlling postings: GL journal entries, full GL documents, accrual and deferral documents, vendor invoices and credit memos, customer invoices and credit memos, document reversals, asset acquisitions, activity allocations and statistical key figures.

Jump to a template (11)
  1. FB50GL Journal Entry
  2. FB01GL Document, full entry
  3. FBS1Accrual / Deferral Document
  4. FB60Vendor Invoice
  5. FB65Vendor Credit Memo
  6. FB70Customer Invoice
  7. FB75Customer Credit Memo
  8. FB08Document Reversal
  9. ABZONAsset Acquisition with Automatic Offsetting Entry
  10. KB21NDirect Activity Allocation
  11. KB31NStatistical Key Figure Posting
Finance and controlling templates on GitHubFree under the MIT licence, with a README and FAQ for this area.
View on GitHub →

Loading order and dependencies

One thing to understand before loading any of the accounting templates: the amount does not live on the line item. The line item structure carries the account and the assignments but no amount at all. Every figure sits in a separate currency table, joined back to its line by an item number, and the sign on the amount is what makes the line a debit or a credit. Get that join wrong and the document is unbalanced with no useful error message. Each template handles the join for you and documents it on the BAPI Mapping tab.

Use this sequence whenever these files serve as SAP migration templates in an S/4HANA migration, and again for mass loads after go live.

Using these templates with the SAP Migration Cockpit or LSMW

Finance data comes after master data in an SAP data migration, and these templates cover it. The column to field mapping is the same mapping the SAP Migration Cockpit and LSMW both need for the initial load. Many teams use them to collect and cleanse GL, vendor and open item data before an S/4HANA migration go live, then keep them for the mass change postings that follow.

FB50FinanceHeader and detail rows 8 of 24 columns mandatory

SAP GL Journal Entry Upload Template (FB50)

A general ledger journal entry with no sub-ledger line. Every line is a GL account.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The standard SAP interface this template posts through. Same business logic as FB50, no screen and no recording.

T-codeFB50

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Step by step FB50 upload guide

Mandatory fields 8 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODECompany code the document posts in.
Document DateDOCUMENTHEADERDOC_DATEDate on the source document. YYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEDrives the posting period. Period must be open. YYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPESA general journal, AB general document.
CurrencyCURRENCYAMOUNTCURRENCYDocument currency.
Line ItemACCOUNTGLITEMNO_ACCSequential line number. The key that joins ACCOUNTGL to CURRENCYAMOUNT.
GL AccountACCOUNTGLGL_ACCOUNTMust be postable. A reconciliation account will be rejected.
AmountCURRENCYAMOUNTAMT_DOCCURAlways positive here. Sign applied from the S/H indicator.
FB01FinanceHeader and detail rows 7 of 24 columns mandatory

SAP GL Document Upload Template (FB01)

The general posting transaction. Use it when a document mixes GL, vendor and customer lines, which FB50 cannot do.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The standard SAP interface this template posts through. FB01 is the general entry screen; this is the interface behind it.

T-codeFB01

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Step by step FB01 upload guide

Mandatory fields 7 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODECompany code the document posts in.
Document DateDOCUMENTHEADERDOC_DATEYYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEDrives the posting period. YYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPESA, KR, DR, AB.
CurrencyCURRENCYAMOUNTCURRENCYDocument currency.
Line ItemACCOUNTGLITEMNO_ACCMust be unique across GL, vendor and customer lines in one document.
AmountCURRENCYAMOUNTAMT_DOCCURAlways positive here.
FBS1FinanceHeader and detail rows 10 of 21 columns mandatory

SAP Accrual / Deferral Document Upload Template (FBS1)

A journal entry that carries its own reversal date, so the reversal can be run later with F.81.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The same interface as any FI document. What makes it an accrual is the reversal date and reason carried on the header.

T-codeFBS1

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Mandatory fields 10 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODE
Document DateDOCUMENTHEADERDOC_DATEYYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEUsually the period end. YYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPESA, or a dedicated accrual type.
CurrencyCURRENCYAMOUNTCURRENCY
Reversal DateDOCUMENTHEADERREVERSAL_DATEWhen the reversal will post. Usually the first day of the next period. YYYYMMDD.
Reversal ReasonDOCUMENTHEADERREASON_REVMust allow an alternative posting date if the reversal falls in a later period.
Line ItemACCOUNTGLITEMNO_ACCJoins ACCOUNTGL to CURRENCYAMOUNT.
GL AccountACCOUNTGLGL_ACCOUNT
AmountCURRENCYAMOUNTAMT_DOCCURAlways positive here.
FB60FinanceHeader and detail rows 10 of 27 columns mandatory

SAP Vendor Invoice Upload Template (FB60)

Post supplier invoices that are not tied to a purchase order. An H row is the invoice, D rows are the expense lines.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The general accounting interface. One header, one payable line built from the header, and as many expense lines as you need, with every amount in a separate table.

T-codeFB60

What to watchMoney does not live on the line item. ACCOUNTGL carries the account and the assignments but no amount at all. Every figure sits in CURRENCYAMOUNT, joined back to its line by ITEMNO_ACC, and the sign in AMT_DOCCUR is what makes the line a debit or a credit. Get the join wrong and the document is unbalanced with no useful message.

Step by step FB60 upload guide

Mandatory fields 10 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODE
Document DateDOCUMENTHEADERDOC_DATEThe date on the supplier's invoice. YYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEPeriod must be open. YYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPEKR is the usual vendor invoice type.
CurrencyCURRENCYAMOUNTCURRENCYDocument currency. Goes on every amount row.
VendorACCOUNTPAYABLEVENDOR_NO
Gross AmountCURRENCYAMOUNTAMT_DOCCURThe payable line. Loaded as a negative amount against the vendor.
Line ItemACCOUNTGLITEMNO_ACCThe join key. Must be unique within the document.
GL AccountACCOUNTGLGL_ACCOUNTTen characters, zero padded.
AmountCURRENCYAMOUNTAMT_DOCCURNet of tax where the tax code calculates.
FB65FinanceHeader and detail rows 11 of 24 columns mandatory

SAP Vendor Credit Memo Upload Template (FB65)

A credit from a supplier with no purchase order reference. Use MIRO when the credit relates to a PO and a goods receipt.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The same interface as FB60. What makes it a credit memo is the document type and the direction of the amounts.

T-codeFB65

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Mandatory fields 11 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODE
VendorACCOUNTPAYABLEVENDOR_NOMust exist in this company code.
Document DateDOCUMENTHEADERDOC_DATEThe supplier's credit note date. YYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEYYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPEKG vendor credit memo.
ReferenceDOCUMENTHEADERREF_DOC_NOThe supplier's credit note number.
Gross AmountCURRENCYAMOUNTAMT_DOCCURTotal credit including tax. Posted as a DEBIT on the vendor line.
CurrencyCURRENCYAMOUNTCURRENCY
Line ItemACCOUNTGLITEMNO_ACC
GL AccountACCOUNTGLGL_ACCOUNTThe expense being credited back.
AmountCURRENCYAMOUNTAMT_DOCCURNet line amount, always positive here.
FB70FinanceHeader and detail rows 11 of 24 columns mandatory

SAP Customer Invoice Upload Template (FB70)

A customer invoice posted directly in FI, with no sales order or delivery behind it. Use VF01 for invoices from the sales process.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The same interface as any FI document. The customer line lives in ACCOUNTRECEIVABLE rather than ACCOUNTPAYABLE.

T-codeFB70

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Mandatory fields 11 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODE
CustomerACCOUNTRECEIVABLECUSTOMERMust exist in this company code.
Document DateDOCUMENTHEADERDOC_DATEYYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEYYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPEDR customer invoice.
ReferenceDOCUMENTHEADERREF_DOC_NOYour invoice number.
Gross AmountCURRENCYAMOUNTAMT_DOCCURTotal receivable including tax.
CurrencyCURRENCYAMOUNTCURRENCY
Line ItemACCOUNTGLITEMNO_ACC
GL AccountACCOUNTGLGL_ACCOUNTRevenue account.
AmountCURRENCYAMOUNTAMT_DOCCURNet line amount, always positive here.
FB75FinanceHeader and detail rows 11 of 23 columns mandatory

SAP Customer Credit Memo Upload Template (FB75)

A credit to a customer posted directly in FI. Use a credit memo request and VF01 when the credit belongs in the sales process.

Posts throughBAPI_ACC_DOCUMENT_POSTWatch Demo

The same interface as FB70, with the direction of the amounts reversed.

T-codeFB75

What to watchThe one thing that catches people: ITEMNO_ACC is the join. A line's account data sits in ACCOUNTGL or the sub-ledger table, and its money sits in CURRENCYAMOUNT. They are linked only by ITEMNO_ACC. Miss the link and the line posts with no value, or the document will not balance.

Mandatory fields 11 fields
ColumnSAP structureSAP fieldNote
Company CodeDOCUMENTHEADERCOMP_CODE
CustomerACCOUNTRECEIVABLECUSTOMER
Document DateDOCUMENTHEADERDOC_DATEYYYYMMDD.
Posting DateDOCUMENTHEADERPSTNG_DATEYYYYMMDD.
Document TypeDOCUMENTHEADERDOC_TYPEDG customer credit memo.
ReferenceDOCUMENTHEADERREF_DOC_NOYour credit note number.
Gross AmountCURRENCYAMOUNTAMT_DOCCURTotal credit including tax.
CurrencyCURRENCYAMOUNTCURRENCY
Line ItemACCOUNTGLITEMNO_ACC
GL AccountACCOUNTGLGL_ACCOUNTThe revenue being reversed.
AmountCURRENCYAMOUNTAMT_DOCCURAlways positive here.
FB08FinanceOne row per record 6 of 11 columns mandatory

SAP Document Reversal Upload Template (FB08)

Reverse posted accounting documents in bulk. One row is one reversal.

Posts throughBAPI_ACC_DOCUMENT_REV_POSTWatch Demo

The reversal counterpart to BAPI_ACC_DOCUMENT_POST. It creates a new document that reverses an existing one.

T-codeFB08

What to watchThe thing that trips people up: this BAPI does not identify the source document by document number, company code and year. It identifies it by OBJ_TYPE and OBJ_KEY, which are the AWTYP and AWKEY of the original document in table BKPF. Your file needs those, or a lookup step that reads BKPF first.

Mandatory fields 6 fields
ColumnSAP structureSAP fieldNote
Object TypeREVERSALOBJ_TYPEThe AWTYP of the document being reversed. Read from BKPF.
Object KeyREVERSALOBJ_KEYThe AWKEY of the document being reversed. Read from BKPF.
Document NumberREVERSALAC_DOC_NOThe original document number. Used for your own reconciliation.
Company CodeREVERSALCOMP_CODE
Reversal Posting DateREVERSALPSTNG_DATEWhen the reversal posts. Period must be open. YYYYMMDD.
Reversal ReasonREVERSALREASON_REV01 wrong in FI, 02 reversal in FI, 05 accrual reversal.
ABZONAsset AccountingOne row per record 9 of 26 columns mandatory

SAP Asset Acquisition Upload Template (ABZON)

Capitalise assets with the offsetting entry generated automatically. One row is one acquisition posting.

Posts throughBAPI_ASSET_ACQUISITION_POSTWatch Demo

A dedicated asset posting interface, not the general accounting one. It is the only one of the two that carries an asset transaction type and an offsetting account.

T-codeABZON

What to watchDo not reach for BAPI_ACC_DOCUMENT_POST here. Its line item structure carries an asset number and a sub number but no asset transaction type field at all, which is why SAP publishes a note about error AA326 on exactly that path. BAPI_ASSET_ACQUISITION_POST has both the transaction type and the offsetting account, which is what ABZON actually needs.

Mandatory fields 9 fields
ColumnSAP structureSAP fieldNote
Company CodeGENERALPOSTINGDATACOMP_CODE
Asset NumberGENERALPOSTINGDATAASSETMAINOTwelve characters. The asset must already exist.
Asset SubnumberGENERALPOSTINGDATAASSETSUBNO0000 where there are no sub numbers.
Asset Transaction TypeGENERALPOSTINGDATAASSETTRTYP100 for an external acquisition. Three characters.
Document DateGENERALPOSTINGDATADOC_DATEYYYYMMDD.
Posting DateGENERALPOSTINGDATAPSTNG_DATEPeriod must be open. YYYYMMDD.
AmountACQUISITIONDATAAMOUNTThe capitalised value.
CurrencyACQUISITIONDATACURRENCY
Offsetting AccountACQUISITIONDATAOFFSET_ACCOUNTThe automatic offsetting entry. This is what makes it ABZON rather than F-90.
KB21NControllingHeader and detail rows 8 of 26 columns mandatory

SAP Direct Activity Allocation Upload Template (KB21N)

Allocate activity quantities from a sending cost centre to a receiver. An H row is the CO document, D rows are the allocations.

Posts throughBAPI_ACC_ACTIVITY_ALLOC_POSTWatch Demo

A CO document, not an FI one. There is no company code on the header, only a controlling area.

T-codeKB21N

What to watchSender and receiver use different data elements for the same idea and the names transpose easily. SEND_CCTR is the sender cost centre, REC_CCTR the receiver, and ACTTYPE is the sender's activity type while RECACTTYPE is the receiver's. A sheet that maps its one Cost Center column to the receiver and leaves the sender blank fails with no sender, which reads like a master data problem and is not.

Mandatory fields 8 fields
ColumnSAP structureSAP fieldNote
Controlling AreaDOC_HEADERCO_AREAThere is no company code on this header.
Document DateDOC_HEADERDOCDATEYYYYMMDD.
Posting DateDOC_HEADERPOSTGDATEYYYYMMDD.
Line ItemDOC_ITEMSITEMNO_ACCSequential within the document.
Sender Cost CenterDOC_ITEMSSEND_CCTRData element SKOST. The sender, not the receiver.
Sender Activity TypeDOC_ITEMSACTTYPEData element LSTAR. The sender's activity type.
Activity QuantityDOC_ITEMSACTVTY_QTY
Activity UnitDOC_ITEMSACTIVITYUNH for hours.
KB31NControllingHeader and detail rows 5 of 22 columns mandatory

SAP Statistical Key Figure Upload Template (KB31N)

Post statistical key figures such as headcount or floor area. An H row is the CO document, D rows are the figures.

Posts throughBAPI_ACC_STAT_KEY_FIG_POSTWatch Demo

The one sided sibling of direct activity allocation. Everything here is a receiver, because a statistical key figure has no sender.

T-codeKB31N

What to watchThere is no unit of measure field in this interface at all. BAPISKFITM carries STAT_QTY and nothing to qualify it, unlike the activity allocation item which has both a unit and an ISO unit. The unit comes from the key figure's own master record, so the number you load is read in whatever unit KK01 says. A sheet with a unit column will have nowhere to send it.

Mandatory fields 5 fields
ColumnSAP structureSAP fieldNote
Controlling AreaDOC_HEADERCO_AREA
Document DateDOC_HEADERDOCDATEYYYYMMDD.
Posting DateDOC_HEADERPOSTGDATEYYYYMMDD.
Statistical Key FigureDOC_ITEMSSTATKEYFIGSix characters. Created in KK01.
QuantityDOC_ITEMSSTAT_QTYThe unit comes from the key figure master, not from this sheet.

After the template

Posting these templates to SAP

Filling in a template is the easy half. PostNow.ai is the other half: it loads the sheet, checks every row against your live SAP system, and posts it through the same SAP interface named on the template, under your own SAP user and authorisations. Nothing is written that you could not write yourself in the SAP GUI, and every row that fails is reported with the SAP message that caused it.

  • Load the sheet
  • Check every row in live SAP
  • Post through the SAP interface
Start your 14 day free trial Runs under your own SAP login and authorisations.

FAQ

Frequently asked questions

Which SAP interface posts a GL journal entry from Excel?

BAPI_ACC_DOCUMENT_POST. It is the general accounting interface and it handles GL journals, vendor invoices, customer invoices, credit memos and accrual documents, which is why six templates on this page share it. The document type and the line item structures are what differentiate them.

Why is my BAPI posting unbalanced when the Excel adds up correctly?

Almost always because the amounts are not joined to the right lines. In the accounting interface the line item table holds no amount, and every figure sits in a separate currency table linked by an item number. If that item number does not match, or if a line has no matching amount row, the document is unbalanced even though the spreadsheet totals are right. The templates on this page keep the join explicit in a column you can see.

How do I post journal entries to SAP in bulk from Excel?

PostNow.ai posts the filled journal template through BAPI_ACC_DOCUMENT_POST, one document per header row, validating every line against your live SAP system first. It runs under your own SAP user, so period controls, tolerance groups and authorisation checks apply exactly as they would in FB50.

Can I test a financial posting before it hits the ledger?

Yes. SAP provides a check function with an identical signature to the posting function that validates everything and writes nothing. Run the whole file through it first and you will catch missing cost objects, closed periods and unbalanced documents before a single document is created.

How do I reverse documents in bulk?

Use the reversal template on this page. It posts through BAPI_ACC_DOCUMENT_REV_POST and takes the original document number, company code, fiscal year and a reversal reason. The reversal reason controls the posting date, so a reason that forces the original date will fail if that period is closed.

Which interface should I use for an asset acquisition?

BAPI_ASSET_ACQUISITION_POST, not the general accounting interface. The accounting interface carries an asset number field but has no asset transaction type and no offsetting account, which is why postings attempted that way fail with error AA326. The asset template on this page uses the correct interface.

Can I load CO plan data and allocations as well as FI postings?

Yes. This page includes templates for direct activity allocation and statistical key figures, and the master data page carries cost centre and activity price planning. CO planning interfaces use a four table structure joined by an index table, which is the single most common reason a plan upload returns success and plans nothing. PostNow.ai builds that index for you.

Keep going

More SAP upload templates