Use Case

Extract Data from Invoice Download Links

Supplier invoices, SaaS export URLs, accounts payable downloads - invoice PDFs almost always trigger a file download instead of displaying in the browser. PDFPipe handles them automatically.

Why invoice PDFs are hard to automate

Invoice URLs from billing systems, supplier portals, and SaaS platforms rarely serve the PDF directly. A link likebilling.supplier.com/invoices/download/INV-2025-0847typically triggers a file download, often after a redirect or session check. Your HTTP client receives an attachment header instead of PDF content.

When you are processing invoices from multiple suppliers, each one serves PDFs differently. Some use direct links, some use JavaScript-triggered downloads, some require authentication tokens. Building custom download logic for each supplier does not scale.

PDFPipe normalizes all of this. Send any invoice URL and get back structured JSON with the text, tables, and metadata you need for your AP automation, accounting integration, or data pipeline.

One POST request per invoice

Request (curl)
curl -X POST https://api.pdfpipe.dev/v1/convert \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://billing.supplier.com/invoices/download/INV-2025-0847",
    "format": "json",
    "returnMethod": "inline"
  }'
Response
{
  "requestId": "req_01J9X7K2M...",
  "status": "complete",
  "format": "json",
  "pagesProcessed": 2,
  "creditsUsed": 1,
  "contentType": "application/json",
  "content": "{\"pages\":[{\"page\":1,\"text\":\"Invoice #INV-2025-0847...\",\"tables\":[...]}]}"
}

Batch processing for multiple invoices

Use the batch endpoint to process up to 100 invoices in a single request. Each URL is handled independently - a mix of inline and attachment PDFs from different suppliers all work in the same batch.

  • Process invoices from Xero, QuickBooks, Stripe, and custom portals
  • Batch up to 100 URLs per request
  • Webhook callbacks for async delivery
  • JSON output with tables for line-item extraction
Node.js - Batch
// Process a batch of supplier invoices from download links
const invoiceUrls = [
  "https://billing.supplier-a.com/invoices/download/INV-2025-0847",
  "https://exports.supplier-b.com/pdf?doc=inv-q1-2025",
  "https://app.xero.com/export/invoice/INV-0042.pdf",
];

const response = await fetch("https://api.pdfpipe.dev/v1/convert/batch", {
  method: "POST",
  headers: {
    "Authorization": "Bearer pk_live_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    items: invoiceUrls.map((url) => ({
      url,
      format: "json",
    })),
  }),
});

const { batchId, requestIds } = await response.json();
// Poll for results or use webhooks for async delivery

Start extracting invoice data today

Free tier includes 75 requests per month. No credit card required.