What B1 has, and what it doesn't.

Search the SAP Business One 10.0 help for returnable packaging, deposits or a pallet account and you find nothing: B1 has no packaging balance per business partner and no deposit model. What it does have are the building blocks.

  • Items without stock. In Item Master Data you can deselect Inventory Item. Such an item can go on a delivery or invoice with a price, but it never moves stock. This is the usual way to charge a deposit.
  • Items with stock. An ordinary inventory item for each packaging type, in a warehouse or bin of its own, so your own pallets are counted like any other stock.
  • Negative lines. B1 allows documents with negative totals: A/R and A/P invoices and credit memos, deliveries, A/R returns, goods receipts PO and goods returns. So "two pallets out, three back" fits on one delivery. The help adds a recommendation: two separate documents are more transparent in accounting.
  • Package types. Administration > Setup > Inventory > Package Types and the packing slip on a delivery describe how a shipment is packed. That is a description of the parcels, not stock and not a balance.

Two models are common, often side by side. With exchange, the driver takes back as many empty pallets as were delivered full, and what is not exchanged becomes a balance. With a deposit, the packaging is charged on the invoice and credited when it comes back. Both can be built from the blocks above.

Option 1: a non-inventory item with a deposit price.

Create one item per packaging type, for example EPAL for a Euro pallet, with Inventory Item deselected and Sales Item and Purchasing Item selected. For a deposit, give it a price in the price lists; for a pure exchange, price 0. On the delivery, the pallets that go out are a line with a positive quantity and the ones that come back a line with a negative quantity. When the delivery is copied to the A/R invoice, the deposit goes along; an exchange line shows 0.

  • For: quick to set up, no stock to count, no bin needed, and the deposit reaches the invoice without extra work.
  • Against: B1 does not know how many pallets you own or have in the yard. The balance per partner exists only as a query over the documents.

Ask your accountant how VAT applies to deposits before you set the tax group on these items. The rules differ per country, and we know of no single answer that holds everywhere.

Option 2: an inventory item in its own warehouse or bin.

Here the packaging type is an ordinary inventory item, kept in a separate packaging warehouse or, in a warehouse with bin locations, on a bin of its own. A delivery with pallets going out lowers that stock; a negative line for pallets coming back raises it. Your own pallets then show up in the stock reports and in an inventory count.

  • For: you see your own packaging as stock, counted and valued like everything else.
  • Against: every posting needs stock and, with bin locations, a bin. If there are not enough pallets in stock or the bin is missing, B1 refuses the whole document, goods included. The pallets also carry a value, so each movement posts to the stock and cost accounts from your G/L account determination.

Some companies combine the two: a non-inventory item for the line on the delivery and the invoice, and an inventory item for the pallets in the yard, corrected with goods receipts and goods issues or a count. That gives the most information, and the most work. See G/L account determination in SAP Business One for where the postings of option 2 go.

A balance per business partner.

B1 has no pallet account, so the balance is a sum over the documents that carry the packaging lines. For customers: what went out on deliveries minus what came back on A/R returns. For suppliers the other way round: goods receipts PO against goods returns. Negative lines on a delivery count with their sign, so they are already netted.

A user query in the Query Manager does this. On SQL Server, the customer side looks like this: SELECT T0.CardCode, SUM(T1.Quantity) FROM ODLN T0 JOIN DLN1 T1 ON T1.DocEntry = T0.DocEntry WHERE T1.ItemCode = 'EPAL' AND T0.CANCELED = 'N' GROUP BY T0.CardCode

Do the same for A/R returns (ORDN and RDN1) and subtract. CANCELED = 'N' leaves out cancelled documents and the cancellation documents themselves. On SAP HANA, put the table and field names in double quotes. Include every document type you actually use: if pallets also go on A/R invoices without a delivery, add OINV/INV1 and ORIN/RIN1. More in SQL queries in SAP Business One.

A driver who brings pallets back without any goods still needs a document: an A/R return, or a delivery with only the packaging lines at price 0. Without a document, the balance in B1 is wrong from that day on.

What to agree with customers and carriers.

  • Which packaging is exchanged and which is charged: Euro pallets, block pallets, crates, roll containers.
  • The deposit per type, and whether it is credited in full or minus a fee.
  • What counts as exchangeable: damaged or unmarked pallets are often refused. Agree who decides, and that it is decided at the door.
  • Who holds the balance when a carrier delivers: the customer, or the carrier who takes the empties along.
  • Proof: a packaging note signed by the driver with the numbers out and back. B1 has no signature field; keep the note on the Attachments tab of the document or on paper.
  • Statements: how often you send the balance, and when an old balance is settled or invoiced.

Checklist before you start.

  • Choose per packaging type: exchange, deposit, or both.
  • Choose a non-inventory or an inventory item; for inventory items, a packaging warehouse or bin and an opening stock.
  • Create the items, with price lists for deposits and a tax group your accountant has confirmed.
  • Decide which documents carry packaging: deliveries, A/R returns, goods receipts PO, goods returns, invoices.
  • Decide how a loose exchange at the door is posted.
  • Enter the opening balance per partner, for example one delivery or return per partner on a fixed date.
  • Write and test the balance query, and give it to sales and the warehouse.
  • Try it in a test company first: a delivery with a negative line, the invoice from it, and the balance afterwards.

How KoonScan does it.

KoonScan, our scanner app, works with option 1 or 2, whichever you set up in B1, and adds nothing to the SAP database. The administrator links each packaging type to an existing B1 item, with or without stock, and marks it as exchange or deposit. On a delivery, a receipt, a return or a counter sale, the warehouse enters per type how many go out and how many come back. KoonScan posts them as extra lines on the same B1 document through the Service Layer: back as a negative quantity, exchange at price 0, deposit at the partner's price list price. A loose exchange at the door becomes a delivery or goods receipt PO with only packaging lines and no invoice. The screen shows the partner's balance, read from the B1 documents with a saved query.

The limits: we tested pallet exchange against our simulated SAP, so try it in your own test company first. There is no balance overview or statement across all partners, and no record of the pallets' condition, the driver or a signature. Items with batches or serial numbers cannot be a packaging type. An inventory item in a warehouse with bin locations needs a packaging bin, or B1 refuses the document; we advise a non-inventory item. If the document tables are not on the Service Layer's allowlist for queries, the balance shows as unknown and posting still works. VAT on deposits stays a question for your accountant.

Sources: SAP Business One 10.0 help documentation (Item Master Data, Creating Sales and Purchasing Documents with Negative Totals, Package Types - Setup, Creating and Printing Packing Slips, Sales Document: Attachments Tab, Query Manager); the SAP Business One 10.0 database reference (OITM, ODLN/DLN1, ORDN/RDN1, OPDN/PDN1, ORPD/RPD1, OINV/INV1, ORIN/RIN1); the KoonScan documentation. SAP and SAP Business One are trademarks of SAP SE.