How it works
Four steps from the month’s sales to a file you upload.
The product does the first three. The fourth is yours, and stays yours: you sign in to the Sales Reporting Portal, upload the file, and certify the data.
Step one
Import the month
QuickBooks Online
Connect the company once and pull invoices and sales receipts for a date range. The connection refreshes itself; you are not re-authorising every month. Lines arrive with their description, quantity, unit price and total already on them.
QuickBooks records payments against whole invoices rather than lines, so the QBO pull reports on invoice date. A holder reporting on payment date uses the CSV lane.
CSV
Drop an export from any accounting package, ERP, or spreadsheet. You map its columns to the fields once and the mapping is remembered against that source, so next month’s export from the same system needs no mapping at all.
Same column mapping, same dry-run preview, same validator, same file at the end. Nothing about the CSV lane is smaller than the QuickBooks lane.
Either way, the import shows you what it read before it keeps anything: the rows it found, the ones it could not parse, and what each column was taken to mean. No imported value reaches a generated file until you confirm it in review.
Step two
Map each item once
An accounting export carries a description, a quantity and a price. It does not carry the SIN the item was awarded under, SRP’s unit-of-measure abbreviation, or a manufacturer part number — and those are what a MAS line needs. So each item in your catalog gets mapped once: SIN, unit of measure, manufacturer name, part number, and where they apply a UPC, a UCID, and a cloud service type.
Where a suggestion can be made you get one, with its reasoning and its confidence, and you accept, edit or reject it. Where no key is configured you get manual assignment with search over the same reference tables. Either way the decision is yours, it is stored against the item, and it is versioned — a correction is a new version, never a rewrite of what a past month was built from.
What a mapping holds
- SIN — the special item number the sale is reported under
- Unit of measure — SRP’s abbreviation, matched exactly
- Manufacturer name and part number, on product lines
- UPC, where the item carries one
- UCID and cloud service type, on cloud lines
That is the whole list. Anything a mapping does not hold, the file does not carry, and the wizard never asks you for it.
Step three
Validate before anything leaves
A failing line is not marked “invalid” and it is not marked with a verdict about you. It names the column, states what SRP does with that value, and shows the message SRP would have shown — so the fix is obvious now rather than a week after an upload came back.
Findings come in two weights. 41 rules stop the file: leave one unfixed and SRP will not take the month. 15 are advisory — the file uploads as it stands, and the field is still worth a look.
Validation is never metered. A holder on the smallest plan gets every rule the largest plan gets, because the rules are the product and safety is not a tier.
SampleHarlan Office Interiors (Demo) · 47QSHA22D0031 · July 2026
Validation
Step four
Download it, then upload it yourself
The emitter is string work: values joined by pipes, UTF-8, no spreadsheet library and no browser anywhere near it. Two things it changes it tells you about — a pipe character typed inside a description would shift every column after it, and a line break inside a value would split one line item across two broken rows, so both are made safe and both are reported on the review screen before you download.
Then you sign in to SRP, upload the file, and certify the data is true and accurate. That certification is a statement about your own sales and it is yours to make; nothing here writes it, drafts it, or makes it on your behalf.
Before you subscribe the file still generates, carrying a DRAFT — NOT FOR UPLOAD line that SRP itself would refuse — so a draft cannot be uploaded by accident.
The file
47QSHA22D0031_2026-07_TDR.csv
40 lines of sales data6,897 bytesJuly 2026
The emitter reported 2 substitutions on this month, both on the same description — a pipe character and a line break that a bookkeeper typed into their accounting package.
Download the sample file — fixture data, produced by this emitter.
The file
What the file needs
Required — 9 columns
- 1Contract/BPA Number
- 2Order Number/PIID
- 3Description of Deliverable
- 6Unit Measure
- 7Quantity of Item Sold
- 9SIN Number
- 10Price Paid per Unit (US$)
- 11Total Price (US$)
- 12Non-Federal Entity
Optional — 9 columns
- 4Manufacturer Name
- 5Manufacturer Part Number
- 8Universal Product Code
- 13Federal Customer
- 14Order Date
- 15Ship Date
- 16Zip Code Shipped To
- 17UCID
- 18Cloud Service Type
“Optional” is the file specification’s word, not advice. Some of these columns are starred on GSA’s own spreadsheet template, and the validator says so where they are — as an advisory finding, because the file uploads without them.
The rules
What is checked, by column
Contract/BPA Number
Contract/BPA Number must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), col 1
Stops the fileContract/BPA Number is at most 16 characters.
ICD §2.3 field table (MAS), col 1
Stops the fileThe contract number must be one on the holder’s SRP account.
ICD §2.6 Scenario 4
Stops the fileContract numbers go in without dashes: 47Q-SHA-22D0031 is 47QSHA22D0031.
ICD §2.3 field table (MAS), col 1 — "No Dashes required"
AdvisoryMAS contract numbers begin with GS or 47.
UG Table 4.1 (Contract or BPA Number)
Advisory
Order Number/PIID
Order Number/PIID must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), col 2
Stops the fileOrder Number/PIID is at most 130 characters.
ICD §2.3 field table (MAS), col 2
Stops the fileThe order number is the agency’s PIID, not the contract number again.
UG Table 4.1 (Order Number/PIID) — "Do not enter your MAS Contract or BPA number"
Advisory
Description of Deliverable
Description of Deliverable must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), col 3
Stops the fileDescription of Deliverable is at most 1000 characters.
ICD §2.3 field table (MAS), col 3
Stops the fileA pipe character inside a description breaks the row into the wrong columns.
ICD §2.2 (pipe delimiter); §2.4 sample file
Stops the file
Manufacturer Name
Manufacturer Name is at most 125 characters.
ICD §2.3 field table (MAS), col 4
Stops the file
Manufacturer Part Number
Manufacturer Part Number is at most 125 characters.
ICD §2.3 field table (MAS), col 5
Stops the fileA product line carries both a manufacturer name and a part number, or neither.
UG Table 4.1 (Data Fields specific to Products)
Advisory
Unit Measure
Unit Measure must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS) + §2.12
Stops the fileUnit Measure must be one of SRP’s published abbreviations, matched exactly.
ICD §2.12; FAS SRP User Guide MAS Tables, Table 1 (public)
Stops the fileA discount line needs a sales line on the same order number in the same file.
ICD §2.6 Scenario 7; §2.3.2
Stops the file
Quantity of Item Sold
Quantity of Item Sold must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), Quantity of Item Sold
Stops the fileQuantity is a plain number — no currency symbol, no thousands separator.
ICD §2.3 field table (MAS), Quantity of Item Sold
Stops the fileQuantity carries at most 4 decimal places.
ICD §2.3 field table (MAS) — four decimal places
Stops the fileSales quantities are positive; return and discount quantities are negative.
ICD §2.3.1 step 3 (returns); §2.3.2 step 3 (discounts)
Stops the file
Universal Product Code
Universal Product Code is at most 14 characters.
ICD §2.3 field table (MAS), UPC
Stops the fileA UPC is digits only; it is optional, and blank is better than wrong.
UG Table 4.1 (Universal Product Code) — a 12-digit barcode
Advisory
SIN Number
SIN Number must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), SIN Number
Stops the fileSIN Number is at most 15 characters.
ICD §2.3 field table (MAS), SIN Number
Stops the fileThe SIN should be one awarded on the contract the sale is reported under.
UG Table 4.1 (SIN)
Advisory
Price Paid per Unit (US$)
Price Paid per Unit (US$) must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), Price Paid per Unit
Stops the filePrice Paid per Unit (US$) is a plain dollar value — no "$", no thousands comma.
ICD §2.3 field table (MAS), Price Paid per Unit
Stops the filePrice Paid per Unit (US$) holds up to 8 digits before the decimal point and 4 after it.
ICD §2.3 field table (MAS), Price Paid per Unit — 0.00 to 99999999.9999
Stops the filePrice Paid per Unit is positive on every line, including returns and discounts.
ICD §2.3.1 step 4 (returns); §2.3.2 step 4 (discounts)
Stops the file
Total Price (US$)
Total Price (US$) must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.3 field table (MAS), Total Price Paid
Stops the fileTotal Price (US$) is a plain dollar value — no "$", no thousands comma.
ICD §2.3 field table (MAS), Total Price Paid
Stops the fileTotal Price (US$) holds up to 8 digits before the decimal point and 4 after it.
ICD §2.3 field table (MAS), Total Price Paid — 0.00 to 99999999.9999
Stops the fileTotal Price is negative on a return or discount line and positive on a sale.
ICD §2.3.1 step 5 (returns); §2.3.2 step 5 (discounts)
Stops the fileTotal Price must equal Quantity of Item Sold × Price Paid per Unit.
ICD §2.6 Scenario 3; §2.3 field table (MAS), Total Price Paid
Stops the file
Non-Federal Entity
Non-Federal Entity must have a value on every line.
ICD §2.6 Scenario 6; ICD §2.7
Stops the fileNon-Federal Entity is one of SCP, SDP, OTH, N/A.
ICD §2.7
Stops the file
Federal Customer
Federal Customer is the two-digit Treasury Agency Code that funded the order.
UG Table 4.1 (Federal Customer); SRP MAS Tables, Table 3 (public)
AdvisoryFederal Customer stays blank when Non-Federal Entity names the customer.
UG Table 4.1 (Federal Customer) — blank when the customer is non-federal
Advisory
Order Date
Order Date is written MM/DD/YYYY when it is present.
ICD §2.3 field table (MAS), Order Date — "Enter Date MM/DD/YYYY"
Stops the fileGSA’s spreadsheet template stars Order Date even though the file spec does not.
Excel Upload Template v4.2 header (starred); UG §2.3.2 trial period
Advisory
Ship Date
Ship Date is written MM/DD/YYYY when it is present.
ICD §2.3 field table (MAS), Ship Date — "Enter Date MM/DD/YYYY"
Stops the fileA ship date before the order date is usually a transposed pair.
UG Table 4.1 (Order Date, Ship Date)
Advisory
Zip Code Shipped To
The ship-to ZIP is five digits.
UG Table 4.1 (Zip Code Shipped To) — five digits
Advisory
UCID
UCID is at most 100 characters.
ICD §2.3 field table (MAS), UCID
Stops the file
Cloud Service Type
Cloud Service Type is one of LCAT, IaaS, PaaS, SaaS, case-sensitive.
ICD §2.8
Stops the fileA sale under SIN 518210C must name its cloud service type.
ICD §2.3 field table (MAS), col 18 — required if SIN starts with 518210C
Stops the fileCloud Service Type stays blank on sales outside SIN 518210C.
UG Table 4.1 (Cloud Service Type)
Advisory
The file and the period
The first line is the 18 MAS column names, in order, spelled exactly.
ICD §2.3 step 3a (MAS header); §2.4 sample file
Stops the fileEvery line of sales data has exactly 18 pipe-separated values.
ICD §2.3 step 3; §2.4 sample file
Stops the fileA line break inside a value splits one line item into two broken rows.
ICD §2.2, §2.4 (one line per line item)
Stops the fileThe org picks invoice date or payment date once and reports on it every month.
UG §2.2 — "do not switch between payment date and invoice date"
AdvisoryEvery earlier period on the contract has to be reported before this one.
ICD §2.6 Scenario 1; UG §2.2
Stops the fileA period that already carries submitted data will not take a second file.
ICD §2.6 Scenario 5
Stops the fileSRP locks the period while it processes an upload; a second file is rejected.
ICD §2.6 Scenario 2
AdvisoryA month with no sales is reported in SRP’s form, not as an empty file.
UG §2.2 (Form Entry recommended for zero sales); UG §2.3
Advisory
GSA — Multiple Award Schedule TDR User Guide (PDF)SRP user manual — data reporting options