Internal deal transactions in Blackpurl generate both revenue and cost of goods (COGS) entries, which can be confusing when the same unit also generates revenue at the point of sale. This article explains how that accounting works, why it is designed that way, and how to control the pricing and GL accounts used for internal transactions.
Overview: Types of Internal Deal Transactions
Blackpurl supports three types of internal deal transactions. Each serves a distinct purpose in the workflow of preparing and selling a stocked unit.
Transaction Type | When It Applies |
Internal service on stock unit | Work is performed on a stocked unit that has not yet been sold — for example, adding options to inventory. The cost is added to the unit's cost, not to a deal. |
Deal service | A stocked unit is being sold and installed options have been added to the unit deal, requiring a deal service to be completed by the service department. |
Deal merchandise | A stocked unit is being sold and non-installed options have been added to the unit deal, requiring a deal merchandise transaction to be completed by the parts department. |
Blackpurl supports inter-departmental (internal) transactions so that profit is realized in the correct department. This is why internal transactions generate their own revenue and COGS entries, separate from the revenue generated when the unit itself is sold.
Why Internal Transactions Generate Revenue and COGS
Internal transactions generate revenue and COGS amounts for the following reasons:
The service or parts department can realize a profit on the work they completed on behalf of a deal.
The unit sales department shows a profit, loss, or break-even depending on what they charge the end customer for that same work.
The price charged by the parts or service department for any deal service item becomes the cost of that item on the deal — this is the core reason for the separation.
The same logic applies to deal merchandise transactions.
Worked Example: Deal Merchandise
The following example uses a Deal Merchandise transaction and a single part. Deal Service behaves the same way, except it typically includes labor as well.
Scenario:
A unit deal is processed. The unit sales department sells the unit for $5,000 with a cost of $3,500.
A part is added to the deal as an option, to be fulfilled by the parts department. The part has a retail price of $100 and a cost of $50.
The unit salesperson discounts the part on the deal to $80 for the customer.
When the options are committed on this deal, a Deal Merchandise transaction is generated. This transaction handles everything related to the part: committing inventory, special ordering if necessary, and reducing inventory when the Deal Merchandise transaction is finalized.
The price of the part on the Deal Merchandise transaction is controlled by the Internal Price Level setting — see Internal Pricing Controls below. The GL accounts used are controlled by the deal transaction type configuration — see Internal Accounting Controls below.
Deal Merchandise Journal Entry
The Deal Merchandise transaction generates two pairs of accounting entries:
First pair: The deal merchandise invoices the unit deal, and the price on the deal merchandise becomes the cost of the items on the unit deal. Those items are treated as part of the unit — this is why the credit to part revenue is offset by a debit to the unit inventory account.
Second pair: The part inventory is relieved. A credit to parts inventory is offset by a debit to parts COGS.
The part revenue and part COGS GL accounts used here are determined by how the deal transaction type is configured.
Deal Invoice Journal Entries
When the deal itself is invoiced, all deal part and labor option revenues are recorded under the same revenue GL account assigned to the unit, using the price charged to the customer on the deal.
The COGS journal entry on the deal invoice records the costs that were added to the unit inventory account by the Deal Merchandise transaction.
Departmental Profit Breakdown
Isolating just the part from the example above, the effect on departmental profitability works as follows:
Parts department profit is based on the difference between the cost of the item ($50) and the price the Deal Merchandise transaction charged to the deal (the internal price level amount). In this example, the parts department realized a profit of $50.
Sales department profit is based on the difference between what the parts department charged for the item and what the sales department charged the customer ($80). Because the salesperson gave the customer a discount, the sales department realized a loss of $20 on this item.
All costs of part and labor options — which were added to the unit inventory GL by the deal merchandise transaction and given a cost on the deal equal to the price charged on the deal merchandise transaction — are reflected in the final COGS entries on the deal invoice.
Internal Pricing Controls
The Internal Pricing Controls section explains how to set the price level used for parts and labor on internal deal transactions. The price of parts and labor on deal merchandise and deal service transactions is determined by the Price Level selected as the internal price level in System Settings > Settings & Controls > Price Settings — Default price level on internal service.
How you configure this price level depends on how much profit your dealership wants to allocate to the parts and service departments for parts and labor sold internally. Typical approaches are:
Retail pricing internally: Parts and labor are priced at retail so those departments receive their expected profit margin.
Reduced internal pricing: Parts and labor are priced at a discounted value so those departments still receive a portion of their profit, with the remainder available for the sales department to capture based on how they price items to the customer.
Cost pricing internally: Parts and labor are priced at cost, meaning the parts and service departments realize no profit on these items — all profit is captured by the sales department.
Internal Accounting Controls
The Internal Accounting Controls section explains which GL accounts are used for revenue and COGS on internal transactions. The revenue and COGS GL accounts for parts and labor used in deal merchandise or deal service transactions are determined by how you configure the deal service transaction type in System Settings > Accounting Integration > Transaction Types > Categories.
If the Part and Labor Categories on the transaction type are set to Default, the category assigned to each part or labor code dictates which revenue and COGS GL accounts are used. This means internal revenues and costs are recorded in exactly the same way as retail parts and labor — they will not be separated on your profit and loss (P&L) statement. This is not recommended.
The recommended approach is to create dedicated Part and Labor categories for internal sales transactions, with internal-specific revenue and cost GL accounts assigned to them. Then assign those categories to the deal service transaction type.
Internal sales transactions will then appear separately on your P&L, distinct from retail transactions.
Removing Internal Revenue and COGS from Your P&L
If you do not want internal revenue and COGS for parts and labor to appear on your P&L at all, you can configure the system so these entries net to zero. To do this:
1. Set your Internal Price Level to price parts and labor at cost.
2. Create a new Parts Category for internal use. Assign the same GL account to both the Income GL and the COGS GL fields. The two entries will offset each other.
3. Create a new Labour Category for internal use, applying the same approach — assign the same Income GL account to both the Income GL and COGS GL fields.
4. On the Transaction Type, assign the new Labour Category and Part Category to the relevant fields under Sales Type: Service Deal Service and Service Stock Unit.
With this configuration, your P&L will show activity in only one GL account for these transactions. An amount will only appear there if there is a minor discrepancy between the internal price level value and the actual cost of the item sold internally.








