Convert Paystub PDF to Excel on iPhone (2026 guide)
Turn paystub PDFs into a clean Excel sheet on iPhone — gross, taxes, and net per pay period, extracted on-device on iOS 26+ so your SSN never leaves your phone.
Paystubs live on your phone. Payroll runs, ADP or Gusto or Workday pushes a notification, and you download the PDF in the app or from an email — on your iPhone, because that is where the notification landed. Then a mortgage broker asks for your last twelve stubs “in a spreadsheet if possible,” or a rental application wants three months of income laid out, or you just want to check that the 401(k) deduction actually changed after you changed it. And you’re holding a phone with twelve two-page PDFs and no path from them to a sheet.
The single-stub case is trivial — you can read one paystub and type six numbers. The realistic case is a dozen stubs, each laying out earnings, taxes, and deductions in a different corner of the page, and the numbers you need scattered across boxes rather than sitting in one clean grid. This guide is how to convert paystub PDFs to Excel on iPhone in 2026: one consolidated sheet, one row per pay period, extracted on-device on iOS 26+ so a document carrying your SSN fragment and your full pay history never leaves the phone.
Why a paystub defeats generic converters
“Paystub to Excel” sounds like one table. It is actually four regions, and a generic table extractor catches at most one:
- Earnings. Regular hours, overtime, bonus, PTO payout — each with a rate, an hours figure, a current-period amount, and a YTD amount. Two side-by-side columns of that table mean two different things: this period versus year-to-date.
- Taxes withheld. Federal income tax, Social Security (OASDI), Medicare, state income tax, sometimes local tax or SDI. The labels vary by provider — “Fed Income Tax,” “FITW,” and “Federal Withholding” are the same line wearing three uniforms.
- Deductions. Pre-tax (401(k), HSA, medical premiums) and post-tax (Roth 401(k), garnishments), usually separated only by a small section header that coordinate-based extractors ignore — and that distinction is exactly what matters when you reconcile against a W-2.
- The summary block. Gross, total taxes, total deductions, net — current and YTD. It’s a key-value box, not a row in any table, and it’s the reconciliation anchor.
A tool that grabs “all the tables” hands you a denormalized mess where this-period and YTD amounts blur together. On a phone screen, untangling that mess is worse than on a Mac, which is why the extraction has to come out right the first time. The approach that survives ADP-versus-Gusto-versus-Workday layout differences treats the stub as a language task — “read this stub and tell me the federal withholding” — not a grid-coordinate task.
Why on-device matters more here than almost anywhere
A paystub carries your full name, the last four of your SSN, often your home address and your employer’s EIN, plus your exact compensation. Free “PDF to Excel” web tools mean uploading all of that to a server you don’t control — and most of their privacy policies explicitly permit retaining files for “service improvement.”
On an iPhone 15 Pro or newer running iOS 26, ignitai runs the entire extraction on-device using Apple’s Foundation Models framework. The stub is read on the phone, the .xlsx is written on the phone, and no byte of your pay history touches a network. On older devices or iOS versions, ignitai falls back to a hosted pipeline with documented zero retention. For this document type, the on-device path is the reason to do the job on your iPhone rather than in a browser tab.
The iPhone workflow, end to end
-
Collect the stubs in Files. Download each PDF from your payroll provider’s app or email into one folder — iCloud Drive or local, either works. (ADP and Gusto both name files usefully by date; keep the names, they become your audit trail.)
-
Select them all → Share → ignitai. Twelve stubs go in as one batch. Mixed providers are fine: if you changed jobs in March, the ADP stubs and the Gusto stubs ride the same batch.
-
Describe the row you want, once. Plain English, applied across the batch. A prompt that works across most US providers:
“For each paystub return one row: pay_date (ISO 8601), gross_pay, federal_tax, social_security, medicare, state_tax, pretax_deductions_total, posttax_deductions_total, net_pay, ytd_gross, ytd_net. If a field is absent, leave it blank — do not guess.”
Save it as a preset. Every future payday, converting the new stub is Share → ignitai → one tap.
-
Pick XLSX as the output. Amount columns come out as numbers with currency formatting, dates as real dates — ready for
=SUM()in Numbers or Excel for iOS, not text that needs coaxing. -
Tap Extract and review the preview. ignitai shows the rows before saving, one per pay period, each with a
source_filecolumn tracing back to the original PDF. Spot-check the first stub and the most recent one. -
Save to Files. From there, Numbers and Excel for iOS open it natively, and iCloud Drive puts the same sheet on your Mac if the next step happens at a desk.
Actual user time: a couple of minutes for a year of stubs, most of it spent reading the preview.
The alternatives, and where they stall
For completeness, the paths people try before landing here:
- Type it into Numbers by hand. For one stub and three numbers, genuinely fine — faster than installing anything. For twelve stubs and eleven columns each, it’s 130+ transcribed figures on a phone keyboard, and transcription is exactly how a
1,847.50becomes1,874.50in the sheet an underwriter reads. Manual entry also produces nosource_fileaudit trail, so a wrong number can’t be traced without re-opening every PDF. - Copy-paste from the PDF. Long-press the stub in Files and iOS will select text — as lines, with the layout gone. Because a paystub is four regions rather than one grid, the paste lands in Numbers as interleaved labels and figures with current-period and YTD amounts indistinguishable. You’ll spend longer untangling than typing.
- Shortcuts. There is no built-in action that parses a paystub layout, and the community shortcuts that extract PDF text hit the same wall as copy-paste: characters without structure.
- Web “PDF to Excel” tools. They work in the technical sense and are the wrong answer for this document in the privacy sense — you’d be uploading your SSN fragment, address, employer EIN, and a year of income to a free service whose business model is the free tier’s friction. For a synthetic stub in a tutorial, fine. For your actual pay history, no.
A worked example: twelve stubs for a mortgage application
Concrete version of the workflow above. The broker asks for the last twelve pay periods; you’re bi-weekly on Gusto:
- In the Gusto app, download the twelve stubs to Files (they arrive named by pay date).
- Select all twelve → Share → ignitai → your saved paystub preset → XLSX → Extract.
- In Numbers, add the reconciliation column (
net = gross − taxes − deductions) and confirm every row ties. - Check the top row: the newest stub’s
ytd_grossshould equal the sum of this year’sgross_payrows plus the periods from before your twelve-stub window — or simply eyeball that it’s plausible against your salary. - Export the sheet, attach it to the broker’s email along with the twelve source PDFs.
Elapsed time is about five minutes, the broker gets a sheet that reconciles, and nothing about your compensation went through a third-party server on the way.
The three checks that make it a payroll record
Once the sheet is written, three quick checks separate “I have a file” from “I have an income record I’d hand to an underwriter”:
- YTD gross reconciliation. The most recent stub’s
ytd_grossshould equal=SUM()of every period’sgross_pay(assuming you included every stub since January). This single check catches a missed, duplicated, or misread stub — the failure modes that matter. - Net = gross − taxes − deductions, per row. Add a column computing it and compare against the extracted
net_pay. Any row that’s off to the cent flags a misread line on that specific stub — and thesource_filecolumn tells you which PDF to open. - Social Security sanity. OASDI is 6.2% of Social-Security-taxable wages up to the annual wage base.
social_security ÷ gross_payshould sit at or just under 0.062 on every row. A row that’s wildly off is the fastest tell that a number landed in the wrong column.
The same discipline — reproduce a number the document itself asserts — is what makes the iPhone bank-statement workflow trustworthy, with the running balance playing the role the YTD column plays here.
What the sheet is actually for
- Mortgage, refinance, or rental application. Lenders want income across recent pay periods, and an underwriter processes one clean sheet with gross and net per period far faster than twelve separate PDFs. Keep the PDFs as source of truth; send both.
- Mid-year withholding check. Multiply your per-period federal withholding by the remaining pay periods, add
ytd_federal_tax, and compare against what your projected tax bill looks like. July — right now — is exactly when a withholding correction still has six months to work. Doing this on the phone the day a stub arrives beats reconstructing it in April. - W-2 pre-check in January. Sum the year’s
federal_tax,social_security, andmedicare; boxes 2, 4, and 6 of the W-2 should match. A mismatch is worth a payroll-department email before you file. If tax season is the trigger, the W-2 extraction guide and the 1099 consolidation flow are the companion pieces. - Deduction verification. You changed your 401(k) percentage or added a dependent to the health plan; the sheet shows whether the change actually landed in the next period, and when.
Scanned and photographed stubs work too
Not every stub is a clean PDF download. Some employers still hand out paper; some people have a shoebox era before payroll went digital. A stub captured with the Notes or Files document scanner goes through the identical flow — ignitai reads the page image directly, no separate OCR step whose errors you’d inherit. The general technique (and the capture-quality rules that matter) is covered in the scanned-PDF-to-Excel guide for iPhone; a paystub is just a scan with a particularly good verification anchor, because the summary block gives you net-equals-gross-minus-everything for free.
When the phone isn’t the right tool
Honest edge cases:
- Your provider offers a register export and you have admin access. ADP, Gusto, Workday, and Paychex all have CSV/Excel payroll-register exports in their admin portals. If you run payroll and can reach that export, use it — extracting PDFs when the system will hand you a register is a workflow built backwards. The PDF path is for employees, who get stubs, not registers.
- You’re consolidating multiple years or multiple employees. Fifty-two weekly stubs across three employees is desk work. The Mac paystub workflow takes a folder of hundreds in one drag and gives you the big screen for the reconciliation pass. Same app, same saved preset — presets sync, so the prompt you wrote on the phone is waiting on the Mac.
- You need one number from one stub. Open the stub and read it. Don’t build a batch for that.
Bottom line
The stubs are already on your iPhone, so convert them there: collect the PDFs in Files, Share → ignitai, apply the one-row-per-pay-period prompt (saved as a preset after the first run), export XLSX, and run the YTD and net-pay checks in Numbers. On an iPhone 15 Pro or newer with iOS 26, the whole job — SSN fragment, home address, salary and all — runs on-device and nothing is uploaded. Use the phone for the current year and the payday-by-payday habit; switch to the Mac batch workflow when the job grows into an archive. Either way, the mortgage broker gets one clean sheet instead of twelve attachments, and it reconciles.
Get ignitai on the App Store — free download, $19.99/mo unlocks unlimited extractions and batch mode after the 3-day trial.