Quickstart

Quickstart

Upload a payroll PDF and extract structured data in five steps.

Prerequisites

  • A Parsify account with an API key
  • A payroll PDF document to process

Step 1: Get an API Key

Create an API key from the Parsify Dashboard under SettingsAPI Keys. Make sure your key has the following scopes:

  • documents:write
  • jobs:read
  • jobs:write

Step 2: Upload a Payroll PDF

Upload your document to Parsify. The API accepts PDF files up to 25 MB.

curl -X POST https://api.parsifyhq.com/api/v1/documents/upload/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -F "file=@payroll_journal.pdf"

The response includes the document ID you’ll use in the next step:

{
  "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
  "filename": "payroll_journal.pdf",
  "status": "uploaded",
  "created_at": "2026-03-16T12:00:00Z"
}

Step 3: Create an Extraction Job

Create a job to extract structured payroll data from the uploaded document.

curl -X POST https://api.parsifyhq.com/api/v1/jobs/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"document_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab"}'
{
  "id": "e5f6a7b8-1234-56cd-ef78-9012345678ab",
  "document_id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
  "status": "pending",
  "created_at": "2026-03-16T12:00:05Z"
}

Step 4: Poll for Completion

Extraction jobs run asynchronously. Poll the job endpoint until the status changes to completed.

curl https://api.parsifyhq.com/api/v1/jobs/e5f6a7b8-1234-56cd-ef78-9012345678ab/ \
  -H "X-API-Key: YOUR_API_KEY"

Step 5: Read the Canonical Output

Once the job is complete, the response includes the extraction result with structured, normalized payroll data and confidence scores.

{
  "id": "e5f6a7b8-1234-56cd-ef78-9012345678ab",
  "status": "completed",
  "result": {
    "confidence": 0.97,
    "payroll_data": {
      "pay_period": {
        "start_date": "2026-03-01",
        "end_date": "2026-03-15"
      },
      "employees": [
        {
          "name": "Jane Smith",
          "gross_pay": 5250.00,
          "net_pay": 3847.50,
          "deductions": {
            "federal_tax": 787.50,
            "state_tax": 262.50,
            "health_insurance": 175.00,
            "retirement_401k": 177.50
          }
        }
      ],
      "totals": {
        "gross_pay": 5250.00,
        "net_pay": 3847.50,
        "total_deductions": 1402.50
      }
    }
  }
}

The canonical output follows a consistent schema regardless of which payroll provider generated the original document, making it straightforward to compare data across providers during a migration.

Next Steps