Actuals Uploading
Upload paired AR and W&D files, validate them, and commit matched actuals into ProFeT.
The actuals uploader brings sales-side AR data and W&D cost data into ProFeT as one managed import. Both files are required, both are validated together, and the upload records what happened without rewriting already-posted invoice rows.
For the broader Actuals feature, see Actuals.
Courier parcel profiles are not part of this import. Uploaded W&D is treated as the actual landed cost for the order, regardless of how courier forecasting is configured elsewhere.
Before you upload
Make sure these prerequisites are in place first:
- your Customers are created with the correct external customer IDs
- your SKUs exist and their item identifiers match the upload data
- any stock you want actuals to consume has been added as received production batches, not just planned ones
- your AR and W&D source files both use the expected columns and matching order references
Upload Flow
Navigate to Data → Actuals and click Upload paired actuals.
The uploader is split into two sides:
- Left: Actuals / AR
- Right: W&D
You can drag files in or click either side to choose a file. The upload stays blocked until:
- both files are present
- both files parse successfully
- validation passes
Supported file types:
- CSV
- XLSX
Expected Templates
The uploader provides downloadable template CSVs, and example upload pairs live in docs/Example CSVs for uploads/.
Actuals / AR columns
| Column | Purpose |
|---|---|
ExternalId | Customer external identifier |
InvoiceNumber | Invoice reference |
Reference | Order number used to match W&D |
InvoiceDate | Sale date in YYYY-MM-DD |
InventoryItemCode | SKU identifier |
Description | Line description |
Quantity | Units/cases sold |
UnitAmount | Price per unit/case |
LineAmount | Total line value |
Type | Document type, e.g. ACCREC |
W&D columns
| Column | Purpose |
|---|---|
Client | Customer external identifier |
Order | Order number used to match AR |
Invoice Date | W&D date in YYYY-MM-DD |
Total Cost | Total W&D cost for the row |
Comments | Optional note |
Matching Rules
During validation, ProFeT checks:
ExternalId/Clientmust match a customer identifier stored in ProFeTInventoryItemCodemust match a configured SKU identifierReferenceandOrderare used as the AR↔W&D join key- AR rows without W&D are allowed to post with
£0W&D and are sent to Review - W&D rows without AR are kept visible in Review until resolved
- all AR rows for a single order must agree on invoice and customer identity
Customer matching uses the stored external identifier, not the display name. In practice, that means the customer record ID is accepted, and the Xero contact ID is also accepted if it is populated on the customer.
Validation Checks
Before commit, the uploader validates the pair end to end:
- File completeness — both files and required columns are present
- Date formatting — dates must be valid and use
YYYY-MM-DD - Customer and SKU resolution — unknown identifiers block the upload
- Order reconciliation — unmatched AR and W&D rows are surfaced clearly so they can flow into Review instead of disappearing
- Stock availability — uploaded sales cannot consume stock from planned batches
- Duplicate detection — already-posted invoice lines are treated as no-ops and are not double counted
If an invoice already exists, ProFeT treats the invoice as immutable:
- existing committed rows are left untouched
- genuinely new rows can still be appended to that invoice
- exact duplicates are skipped
- late operational costs stay in Review until a human decides what to do with them
If a SKU has stock planned but not yet received, that stock does not count as available for actuals.
How W&D Is Distributed
W&D is pooled at the order level, then split across the order’s AR lines by line value:
Line W&D = Total Order W&D × (Line Amount ÷ Total Order Amount)
Example:
- Product A line amount:
£300 - Product B line amount:
£100 - Total order W&D:
£40
Result:
- Product A gets
£30 - Product B gets
£10
That is a 3:1 split, regardless of case volume.
This means parcel-profile setup in W&D Setup does not alter historical actuals allocation. Parcel profiles only change forecast-side courier W&D assumptions.
Fallback order:
- line value
- quantity
- even split
What Happens on Commit
When the upload commits successfully, ProFeT:
- stores both original source files
- creates one paired upload record
- reuses existing invoice headers where needed without rewriting them
- creates sale records only for genuinely new AR lines
- calculates FIFO COGS per sale line
- records batch allocations for consumed stock
- increments consumed units on the received production batches used by the sale
- creates Review items for unmatched AR or W&D exceptions
Upload History
The upload drawer also shows import history so you can:
- see who uploaded the pair
- review invoice and sale counts
- re-download the original AR and W&D source files
- archive upload records from the history view without rewriting committed actuals
Troubleshooting
Unknown customer
Check that ExternalId / Client matches the customer identifier stored in ProFeT. If you are using Xero contact IDs, make sure that field is populated on the customer record first.
Unknown SKU
Check that InventoryItemCode matches a configured SKU code or accepted SKU external identifier.
Missing W&D match
If an AR order is missing W&D, the sale can still post with £0 W&D and the exception will stay visible in the Review queue.
If a W&D row has no matching AR, the cost is not dropped. It stays visible in Review until it is classified.
Insufficient stock
Actuals can only consume received stock. If the required inventory is still in planned batches, receive the stock first, then retry the upload.