Stop getting "NOT a valid PDF" rejections from NYSCEF.
The error isn't your scanner. It's PDF/A-1a. We calibrated the pipeline against live NYSCEF acceptances and shipped the dropdown cheat-sheet NYSCEF doesn't give you.
Preflight a PDF — will NYSCEF accept it?
Drop a PDF here. 150 ms verdict on the six structural checks that cause 80% of NYSCEF rejections — before you burn four hours on retry cycles. Runs in your browser, leaves the file in your browser. Not a full pipeline (libreoffice + verapdf + qpdf + ocrmypdf + tesseract don't fit in a browser); for conversion use the CLI below.
See what good looks like first — download a known-good PDF/A-1a (Bronx SCPA-307, 60 KB) · view the matching receipt JSON.
The problem
The file you chose is NOT a valid PDF file. Please try again using a different driver for your scanner or try different scanning software.
Not the scanner. PDF/A-1a structural requirements the error message doesn't mention — and Adobe Acrobat's default export doesn't always satisfy. An attorney lost 4 hours to 14 retries on a Sunday before the 15th version went through. That's where this came from.
The 5-step pipeline that passes
Verified against the accepted filing and against a synthetic reference we regenerate on every build — same metadata shape, same verapdf 135/135 compliance.
--flavour 1a returns 135/135 compliantDropdown mappings — proven 2026-04-20
A compliant PDF is only half the filing. NYSCEF still asks for Filing Type, Document Type, and Description. The right answer depends on the rule, not the file. CourtPDF resolves rule → form values at conversion time, based on live-accepted filings.
Miscellaneous / AFFIDAVIT · $0 · Main File. First upload, no retries. No dedicated 207.42 entry exists — description carries the rule.AFFIDAVIT OF SERVICE · $0 · Main File.Miscellaneous / SURROGATE COURT MATTER · $0 · Main File.The receipt is the cheat sheetProven 2026-04-20
Every conversion writes a JSON receipt. The nyscef_upload_instructions block is what you type into each dropdown. Copy, paste, submit.
{
"tool_version": "0.3.0",
"court_profile": "nyscef-surrogate-ulster",
"conformance_achieved": "1b",
"verapdf_compliant": true,
"nyscef_upload_instructions": {
"rule": "22-NYCRR-207.42",
"filing_type": "Miscellaneous",
"document_type": "AFFIDAVIT",
"document_description":
"Report of Estate Not Fully
Distributed (22 NYCRR 207.42)
— Estate of …, File No. …",
"expected_fee_usd": 0,
"file_into": "main",
"proven_accepted_date": "2026-04-20",
"proven_accepted_court":
"Ulster County Surrogate's Court"
}
}
New rules arrive only after a real filing passes first-try — never hypothesized mappings shipped as proven.
Or run it locally — free, open source
The pipeline is public. If you can paste a command, you can convert a document today. The hosted surface exists for attorneys who'd rather not manage Python; both run identical calibration.
Paid tier adds hosted web surface, new-court calibration on request, Stripe receipts, priority email on deadline emergencies.
Pricing
Founding 25 locks $19/mo for the life of your subscription, every court profile included. General launch is $29/mo. Cancel any time.
| Option | Cost | Rejects NYSCEF? | Dropdown values? |
|---|---|---|---|
| Adobe Acrobat Pro | $288/yr/seat | Often yes | No |
| Paralegal e-filing | $45–$125/hr | Depends | Sometimes |
| CLI (free, open source) | $0 | No | Yes |
| CourtPDF Founding 25 | $19/mo | No | Yes — proven only |
Join the waitlist
Private beta opens when the Surrogate's profile clears three additional operator-supplied filings. Late April 2026.
Replies within 24 hours. No marketing email — just beta access notices when your court profile calibrates, and a single launch email when paid billing turns on.
Questions
- Why does Adobe Acrobat's "Save as PDF/A" still get rejected?
- Acrobat defaults to PDF/A-2b or 1b. NYSCEF's validator wants 1a (stricter, tagged). Acrobat can emit 1a — buried in Preflight — but the default save path does not.
- What courts are supported?
- NY Surrogate's (Bronx, Ulster) proven 2026-04-20. Remaining NYSCEF Surrogate's counties, then NYSCEF Supreme Civil, then PACER — calibration queue. Request a court on the waitlist and it moves up.
- How do I know the acceptance claims are real?
- Every mapping has a
proven_acceptedblock with court + date. The 2026-04-20 acceptances are in the public repo (Ulster, Bronx) with commit history as proof. Unproven mappings are tagged as such — never shipped as proven. - Is my document stored?
- Preflight checks run in-memory and discard. Full conversion (paid tier) stores SHA-256 hashes only, 90 days, so you can verify the file you filed is the file we produced. Full retention policy published before billing turns on.
- I have a filing due tonight and NYSCEF is rejecting. Help?
- Email james@revasser.nyc subject "CourtPDF urgent — [court]" with a redacted draft. If we've calibrated the profile, I'll run it through manually within the hour, free, until hosted is live. Deadline pressure got us here.