API Documentation

Complete reference for the Taxu REST API. Build tax intelligence into your application with our developer-first platform.

Authentication

Authenticate your API requests using your secret API key in the Authorization header.

bash
curl https://api.taxu.ai/v1/returns \
  -H "Authorization: Bearer sk_live_abc123xyz"

Important: Keep your API keys secure. Never expose them in client-side code or public repositories.

Quickstart

Get started with a simple refund estimate in under 5 minutes.

1. Install the SDK

bash
npm install @taxu/taxu-js
# or
pip install taxu-python  # Coming soon

2. Make your first request

javascript
import { TaxuClient } from '@taxu/taxu-js';

const taxu = new TaxuClient('sk_live_abc123xyz');

const estimate = await taxu.refunds.estimate({
  income: 75000,
  filingStatus: 'single',
  deductions: ['standard']
});

console.log(estimate.refundAmount); // 2,450

New: JavaScript SDK is now available on npm. View documentation

Tax Filing

Submit tax forms including 1099-NEC, W-2, and Form 941 directly to the IRS via TaxBandits.

POST/api/filing/submit-1099

Submit 1099-NEC Form

File 1099-NEC forms for contractors

Request

{
  "businessName": "Acme Corp",
  "ein": "12-3456789",
  "recipients": [{
    "name": "John Contractor",
    "ssn": "123-45-6789",
    "address": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94102",
    "compensation": 5000.00
  }]
}

Response

{
  "success": true,
  "submissionId": "sub_abc123",
  "status": "pending",
  "filingId": "filing_xyz789"
}
POST/api/filing/submit-w2

Submit W-2 Form

File W-2 forms for employees

Request

{
  "employer": {
    "name": "Acme Corp",
    "ein": "12-3456789",
    "address": "456 Business Ave"
  },
  "employee": {
    "name": "Jane Employee",
    "ssn": "987-65-4321",
    "wages": 75000.00,
    "federalWithheld": 8500.00
  }
}

Response

{
  "success": true,
  "submissionId": "sub_def456",
  "status": "accepted"
}
GET/api/filing/status

Get Filing Status

Check the status of a submitted filing

Response

{
  "filingId": "filing_xyz789",
  "status": "accepted",
  "submittedAt": "2025-01-15T10:30:00Z",
  "acceptedAt": "2025-01-15T10:35:00Z",
  "confirmationNumber": "IRS-2025-ABC123"
}

Documents

Upload and extract data from tax documents using AI-powered OCR.

POST/api/filing/upload-document

Upload Document

Upload W-2, 1099, or receipt documents

Request

{
  "file": "base64_encoded_file",
  "filename": "w2-2024.pdf",
  "type": "w2"
}

Response

{
  "success": true,
  "url": "https://blob.vercel-storage.com/...",
  "documentId": "doc_abc123"
}
POST/api/filing/extract-document

Extract Document Data

Use AI to extract structured data from uploaded documents

Request

{
  "documentUrl": "https://blob.vercel-storage.com/...",
  "documentType": "w2"
}

Response

{
  "success": true,
  "extractedData": {
    "employer": "Acme Corp",
    "ein": "12-3456789",
    "employee": "John Doe",
    "ssn": "123-45-6789",
    "wages": 75000.00,
    "federalWithheld": 8500.00
  }
}

QuickBooks Integration

Connect to QuickBooks and sync transaction data for tax categorization.

GET/api/quickbooks/connect

Connect QuickBooks

Initiate OAuth flow to connect QuickBooks account

Response

{
  "authUrl": "https://appcenter.intuit.com/connect/oauth2?..."
}
POST/api/quickbooks/sync

Sync Transactions

Pull transactions from QuickBooks and categorize for taxes

Response

{
  "success": true,
  "transactionCount": 247,
  "categorized": 245,
  "needsReview": 2
}

Webhooks

Receive real-time notifications when events occur in your Taxu account.

Setting up webhooks

  1. Create a webhook endpoint on your server
  2. Register the endpoint URL in your Taxu dashboard
  3. Verify webhook signatures for security
  4. Handle events and respond with 200 OK
javascript
// Example webhook handler
app.post('/webhooks/taxu', (req, res) => {
  const event = req.body;
  
  switch(event.type) {
    case 'return.filed':
      console.log('Return filed:', event.data.returnId);
      break;
    case 'refund.issued':
      console.log('Refund issued:', event.data.amount);
      break;
  }
  
  res.status(200).send('OK');
});

Rate Limits

API requests are rate limited based on your plan tier.

PlanRate LimitBurst
Developer100 req/min200 req/min
Startup1,000 req/min2,000 req/min
Business10,000 req/min20,000 req/min
EnterpriseCustomCustom