Skip to main content

Tax Module

Manage tax exemption certificates, sync with TaxJar, and handle transaction reporting.

Base URL: https://app.proign.com/[tenant]/tax/api

Overview

The Tax module helps manage sales tax compliance:

  • Sync transactions with TaxJar
  • View tax liability by state
  • Track upcoming filings
  • Handle refunds and amendments
  • Shopify integration via webhooks

Key Features

Exemption Certificates

Manage tax exemption certificates for B2B customers:

  • Certificate Upload - PDF upload with metadata extraction
  • Expiry Tracking - Automatic alerts before expiration
  • State Validation - Per-state certificate requirements
  • Bulk Import - CSV import for existing certificates

TaxJar Integration

Automated tax compliance via TaxJar:

  • Automatic transaction sync from Shopify
  • Tax liability calculation by state
  • Filing deadline tracking
  • Refund and amendment handling

API Endpoints

Dashboard & Liability

GET    /api/[tenant]/dashboard              # Dashboard summary
GET    /api/[tenant]/liability              # Tax liability by state/period

Transactions

GET    /api/[tenant]/transactions           # List transactions
POST   /api/[tenant]/transactions/sync      # Sync transactions to TaxJar
POST   /api/[tenant]/transactions/[id]/refund   # Create refund
PUT    /api/[tenant]/transactions/[id]/amend    # Amend transaction

Filings

GET    /api/[tenant]/filings                # Tax filing history

Connections

# TaxJar Connection
GET    /api/[tenant]/connections/taxjar     # Get TaxJar status
POST   /api/[tenant]/connections/taxjar     # Save TaxJar credentials
DELETE /api/[tenant]/connections/taxjar     # Remove TaxJar connection

# Shopify Connection  
GET    /api/[tenant]/connections/shopify    # Get Shopify status
POST   /api/[tenant]/connections/shopify    # Save Shopify credentials
DELETE /api/[tenant]/connections/shopify    # Remove Shopify connection

Webhooks

POST   /api/[tenant]/webhooks/shopify       # Handle Shopify order webhooks

Request Examples

Sync Transactions

POST /api/[tenant]/transactions/sync
Content-Type: application/json

{
  "from_date": "2024-01-01",
  "to_date": "2024-01-31"
}

Configure TaxJar

POST /api/[tenant]/connections/taxjar
Content-Type: application/json

{
  "api_token": "your-taxjar-api-token",
  "sandbox": false
}

Exemption Certificate Lifecycle

Tax exemption certificates go through a managed lifecycle:

uploaded → validated → active → expiring → expired
StatusDescription
uploadedCertificate PDF received, pending admin review
validatedAdmin confirmed certificate is valid for the stated jurisdiction
activeCertificate is active and orders from this customer are tax-exempt
expiringCertificate expires within 30 days — automatic email alert sent
expiredCertificate is no longer valid — orders taxed normally

Certificate API

GET    /api/[tenant]/certificates           # List certificates
POST   /api/[tenant]/certificates           # Upload certificate
GET    /api/[tenant]/certificates/[id]      # Get certificate details
PATCH  /api/[tenant]/certificates/[id]      # Update status (admin)
DELETE /api/[tenant]/certificates/[id]      # Delete certificate

Upload Certificate

POST /api/[tenant]/certificates
Content-Type: application/json

{
  "customer_email": "buyer@wholesale.com",
  "customer_name": "Wholesale Distributors Inc.",
  "exemption_type": "resale",
  "states": ["FL", "GA", "TX"],
  "certificate_number": "R-12345678",
  "expiry_date": "2027-12-31",
  "file_id": "media_abc123"
}

// Response (201 Created)
{
  "data": {
    "id": "cert_xyz789",
    "status": "uploaded",
    "states": ["FL", "GA", "TX"],
    "expires_at": "2027-12-31"
  }
}

Exemption Types

TypeDescriptionCommon Form
ResaleBuyer resells the goods to end customersState resale certificate
GovernmentFederal, state, or local governmentGovernment exemption letter
Nonprofit501(c)(3) tax-exempt organizationsIRS determination letter
ManufacturingMaterials used in manufacturing processManufacturing exemption cert
AgriculturalFarm and agricultural useAgricultural exemption cert

Transaction Amendments

When a transaction needs correction after syncing to TaxJar:

PUT /api/[tenant]/transactions/txn_abc123/amend
Content-Type: application/json

{
  "reason": "customer_provided_exemption_certificate",
  "certificate_id": "cert_xyz789",
  "notes": "Customer submitted resale cert after purchase"
}

// Response
{
  "data": {
    "id": "txn_abc123",
    "status": "amended",
    "original_tax": 45.50,
    "amended_tax": 0.00,
    "amendment_history": [
      {
        "date": "2026-02-21T10:00:00Z",
        "reason": "customer_provided_exemption_certificate",
        "by": "admin@company.com"
      }
    ]
  }
}

All amendments are tracked with a full audit trail including who made the change, when, and why. Amended transactions are automatically re-synced to TaxJar.

Configuration

  • TaxJar API Token — Connect your TaxJar account for automated tax calculations and filing
  • Shopify Store — Connect for automatic order sync via webhooks
  • Sandbox Mode — Test transactions without affecting production TaxJar data
  • From Address — Your nexus locations (states where you have tax obligations)
  • Certificate Alerts — Email notifications for expiring certificates (30-day, 7-day warnings)
  • Auto-Sync Interval — How often to sync new Shopify orders (default: every 15 minutes)

Related