Skip to content

Quickbooks

CURRENTLY UNTESTED

NOTE: Transaction Pro Importer is a great tool. This is assuming you don't want to spend the money on that product. You can, however, script mass updates using this tool as well.
This is also purposely skipping the QuickBooks SDK. Ideally, the steps provided should be repeatable by largely non-technical people. Hopefully.

Use Case: If you have an external price list that gets updated, whether on a regular schedule or otherwise, this should help you to import the information into Quickbooks so you don't have to update the information by hand.

Importing Items Into Quickbooks Desktop (QBD)

UpdateQBPrices.ps1
```powershell
# --- CONFIGURATION ---
$MappingFile = "C:\Imports\Mapping.csv"
$PriceFile   = "C:\Imports\PriceUpdate.csv"
$OutputFile  = "C:\Imports\UploadToQB.iif"
$LogFile     = "C:\Imports\ErrorLog.txt"

# --- PREPARATION ---
$Map = @{}
if (Test-Path $MappingFile) {
    Import-Csv $MappingFile | ForEach-Object { $Map[$_.VendorName] = $_.QBName }
} else {
    Write-Error "Mapping file not found!"; exit
}

# IIF Headers for Inventory Items
$IIFData = @("!INVITEM`tNAME`tPRICE")
$Errors  = @()

# --- PROCESSING ---
$RawPrices = Import-Csv $PriceFile

foreach ($row in $RawPrices) {
    $VendorName = $row.VendorName
    $NewPrice   = $row.NewPrice

    # Check if the VendorName exists in our mapping dictionary
    if ($Map.ContainsKey($VendorName)) {
        $QBName = $Map[$VendorName]
        $IIFData += "INVITEM`t$QBName`t$NewPrice"
    } else {
        # Log the mismatch
        $Errors += "$(Get-Date -Format 'HH:mm:ss') - MISSING MAPPING: Could not find QB Name for '$VendorName'"
    }
}

# --- OUTPUT & LOGGING ---
$IIFData | Out-File $OutputFile -Encoding ascii

if ($Errors.Count -gt 0) {
    $Errors | Out-File $LogFile
    Write-Host "$($Errors.Count) items failed. Opening ErrorLog.txt now..." -ForegroundColor Yellow

    # This line triggers the auto-open in your default text editor (usually Notepad)
    Start-Process notepad.exe $LogFile
} else {
    "No errors found. All items mapped successfully on $(Get-Date)." | Out-File $LogFile
    Write-Host "Success! All items processed." -ForegroundColor Green
}
```

Then, in QBD, File > Utilities > Import > IIF Files and navigate to C:ImportsMapping.csv
Warning: When importing the IIF, QuickBooks might show a prompt saying "We've improved IIF imports." If you have the option, choose the "Import for me I'll fix it later" (the old manual way) as it is much faster for simple price updates.

Updating Imported Items' Prices In QBD

This assumes: You have two files - The mapping file built above - The new price list

Locate UpdateQBPrices.ps1, right-click and choose Run in PowerShell