npm package: @sharpapi/sharpapi-node-invoice-parsing
Description: SharpAPI.com Node.js SDK for parsing invoices from uploaded files
Author: Dawid Makowski
Latest version: 1.0.1

![SharpAPI GitHub cover](https://sharpapi.com/sharpapi-github-php-bg.jpg "SharpAPI Node.js Client")

# Invoice Parsing API for Node.js

## Parse invoices and extract structured data from uploaded files -- powered by SharpAPI AI.

[![npm version](https://img.shields.io/npm/v/@sharpapi/sharpapi-node-invoice-parsing.svg)](https://www.npmjs.com/package/@sharpapi/sharpapi-node-invoice-parsing)
[![License](https://img.shields.io/npm/l/@sharpapi/sharpapi-node-invoice-parsing.svg)](https://github.com/sharpapi/sharpapi-node-invoice-parsing/blob/master/LICENSE.md)

**SharpAPI Invoice Parser** extracts structured data from invoice files (PDF, DOC, DOCX, images). Returns invoice number, dates, line items, totals, tax details, and buyer/seller information in a clean JSON format.

---

## Table of Contents

1. [Requirements](#requirements)
2. [Installation](#installation)
3. [Usage](#usage)
4. [API Documentation](#api-documentation)
5. [Response Format](#response-format)
6. [Examples](#examples)
7. [Use Cases](#use-cases)
10. [License](#license)

---

## Requirements

- Node.js >= 16.x
- npm or yarn

---

## Installation

### Step 1. Install the package via npm:

```bash
npm install @sharpapi/sharpapi-node-invoice-parsing
```

### Step 2. Get your API key

Visit [SharpAPI.com](https://sharpapi.com/) to get your API key.

---

## Usage

```javascript
const { SharpApiInvoiceParsingService } = require('@sharpapi/sharpapi-node-invoice-parsing');

const apiKey = process.env.SHARP_API_KEY; // Store your API key in environment variables
const service = new SharpApiInvoiceParsingService(apiKey);

async function parseInvoice() {
  try {
    // Submit invoice file for parsing
    const statusUrl = await service.parseInvoice('./invoices/invoice-2024-001.pdf');
    console.log('Job submitted. Status URL:', statusUrl);

    // Fetch results (polls automatically until complete)
    const result = await service.fetchResults(statusUrl);
    console.log('Result:', result.getResultJson());
  } catch (error) {
    console.error('Error:', error.message);
  }
}

parseInvoice();
```

---

## API Documentation

### Methods

#### `parseInvoice(filePath, language?)`

Parses an uploaded invoice file and extracts structured data.

**Parameters:**
- `filePath` (string, required): Path to the invoice file

**Supported file formats:** DOC, DOCX, PDF, JPG, JPEG, PNG, TIFF, TIF

**Returns:** Promise<string> - Status URL for polling results

---

## Response Format

The API returns a structured JSON response with extracted invoice data:

```json
{
  "data": {
    "type": "api_job_result",
    "id": "e00ebeec-6df3-4282-b515-8c447ea5d6ab",
    "attributes": {
      "status": "success",
      "type": "invoice_parse",
      "result": [
        {
          "source_pages": [
            1
          ],
          "document": {
            "type": "invoice",
            "original_type_label": "Invoice",
            "is_invoice": true,
            "is_copy": false,
            "copy_type": null
          },
          "invoice": {
            "invoice_number": "D7BDFA00-0019",
            "issue_date": "2025-12-07",
            "due_date": "2025-12-07",
            "document_date": null,
            "order_date": null,
            "delivery_date": null,
            "shipping_date": null,
            "pricing_date": null,
            "currency": "USD",
            "exchange_rate": null,
            "page_info": "1 of 1",
            "amount_in_words": "",
            "notes": "",
            "remarks": "",
            "delivery_instructions": "",
            "terms_and_conditions": [],
            "late_payment_interest_rate": null
          },
          "references": {
            "delivery_order_number": "",
            "purchase_order_number": "",
            "sales_order_number": "",
            "customer_reference": "",
            "external_document_number": "",
            "grn_number": "",
            "route_number": "",
            "lorry_number": "",
            "serial_number": "",
            "batch_number": "",
            "other_references": []
          },
          "e_invoice": {
            "uuid": "",
            "e_invoice_code": "",
            "e_invoice_type": "",
            "e_invoice_version": "",
            "submission_id": "",
            "submission_document_id": "",
            "submission_long_id": "",
            "submission_status": "",
            "validation_datetime": null,
            "digital_signature_present": false,
            "validated_link": "",
            "original_e_invoice_ref": "",
            "qr_code_present": false
          },
          "seller": {
            "name": "OpenAl, LLC",
            "trade_name": "OpenAl",
            "registration_number": "",
            "tin": "",
            "sst_id": "",
            "gst_id": "",
            "vat_id": "GB434338990",
            "msic_code": "",
            "business_activity": "",
            "address": {
              "street_line_1": "548 Market Street",
              "street_line_2": "PMB 97273",
              "city": "San Francisco",
              "state": "California",
              "postcode": "94104-5401",
              "country": "US"
            },
            "phone": "",
            "fax": "",
            "email": "",
            "website": "",
            "bank_details": [
              {
                "bank_name": "",
                "account_name": "",
                "account_number": "",
                "sort_code": "",
                "swift_code": "",
                "iban": ""
              }
            ],
            "contact_person": {
              "name": "",
              "role": "",
              "phone": "",
              "email": ""
            }
          },
          "buyer": {
            "name": "A2Z WEB LTD",
            "trade_name": "",
            "registration_number": "",
            "tin": "",
            "brn": "",
            "sst_id": "",
            "gst_id": "",
            "vat_id": "",
            "customer_account_number": "",
            "billing_address": {
              "location_name": "",
              "street_line_1": "Unit 10 Enterprise Court, Farfield",
              "street_line_2": "Park",
              "city": "Rotherham",
              "state": "",
              "postcode": "S63 5DB",
              "country": "GB"
            },
            "delivery_address": {
              "recipient_name": "",
              "location_name": "",
              "street_line_1": "Unit 10 Enterprise Court",
              "street_line_2": "Farfield Park",
              "city": "Rotherham",
              "state": "",
              "postcode": "S63 5DB",
              "country": "GB"
            },
            "delivery_address_same_as_billing": false,
            "phone": "",
            "fax": "",
            "email": "",
            "attention_to": {
              "name": "",
              "phone": "",
              "email": ""
            }
          },
          "sales_info": {
            "salesperson_name": "",
            "salesperson_code": "",
            "salesperson_phone": "",
            "sales_agent": "",
            "sales_location": "",
            "sales_department": "",
            "outlet_name": ""
          },
          "financials": {
            "subtotal": 15.57,
            "gross_amount": null,
            "total_discount_amount": null,
            "shipping_charge": null,
            "delivery_fee": null,
            "total_excl_tax": 15.57,
            "total_tax_amount": 3.11,
            "service_tax_amount": null,
            "total_incl_tax": 18.68,
            "rounding_adjustment": null,
            "total_payable": 18.68,
            "amount_paid": null,
            "amount_due": 18.68,
            "tax_details": [
              {
                "tax_type": "VAT",
                "tax_rate": 20,
                "taxable_amount": 15.57,
                "tax_amount": 3.11
              }
            ]
          },
          "line_items": [
            {
              "line_number": 1,
              "item_code": "",
              "stock_code": "",
              "barcode": "",
              "description": "OpenAl API usage credit",
              "classification_code": "",
              "country_of_origin": "",
              "quantity": 1,
              "free_quantity": null,
              "unit_of_measure": "",
              "unit_of_measure_raw": "",
              "pack_size": "",
              "total_units": null,
              "weight": null,
              "weight_uom": "",
              "unit_price": 15.57,
              "discount_percent": null,
              "discount_amount": null,
              "subtotal": 15.57,
              "tax_rate": 20,
              "tax_type": "VAT",
              "tax_amount": 3.11,
              "total_excl_tax": 15.57,
              "total_incl_tax": null,
              "expiry_date": null,
              "batch_lot_number": "",
              "service_start_date": null,
              "service_end_date": null
            }
          ],
          "payment": {
            "payment_terms": "",
            "payment_terms_days": null,
            "payment_method": "",
            "payment_date": null,
            "payment_reference": "",
            "jompay_biller_code": "",
            "jompay_ref_1": ""
          },
          "logistics": {
            "shipping_method": "",
            "vehicle_number": "",
            "driver_name": "",
            "delivery_zone": "",
            "delivery_time_constraint": "",
            "carton_count": null,
            "total_volume": null,
            "total_weight": null,
            "goods_received_confirmation": false,
            "received_by": "",
            "receiver_signature_present": false
          }
        }
      ]
    }
  }
}
```

---

## Use Cases

- **Accounts Payable Automation**: Extract data from vendor invoices for automatic entry into accounting systems
- **Expense Management**: Parse receipts and invoices for expense tracking
- **Financial Auditing**: Digitize and structure invoice data for audit trails
- **ERP Integration**: Feed parsed invoice data into ERP systems (SAP, Oracle, etc.)
- **Tax Compliance**: Extract tax IDs, amounts, and rates for tax reporting
- **Document Digitization**: Convert paper invoices (scanned as images) into structured data

---

## License

This project is licensed under the MIT License. See the [LICENSE.md](LICENSE.md) file for details.

---

## Support

- **Documentation**: [SharpAPI.com Documentation](https://sharpapi.com/documentation)
- **Issues**: [GitHub Issues](https://github.com/sharpapi/sharpapi-node-invoice-parsing/issues)
- **Email**: contact@sharpapi.com