Migrating from other tax providers to Taxwire

If you are planning to switch from any tax provider to TaxWire, you can use these steps to export historical transaction date from MonetizeNow and import them into Taxwire

The MonetizeNow - Taxwire integration, by default, only syncs ongoing transactions. You can load historical transactions into Taxwire with a few simple steps.

  1. First, navigate to the Reporting tab of MonetizeNow.

  2. Click "+New".

  3. Click “SQL query”.





  1. Copy-paste this SQL query. Run it, and export the results as a CSV.

    WITH currency_minor_units AS (
      SELECT *
      FROM (VALUES
        -- code, minor_unit
        ('BIF', 0), ('CLP', 0), ('DJF', 0), ('GNF', 0),
        ('JPY', 0), ('KMF', 0), ('KRW', 0), ('MGA', 0),
        ('PYG', 0), ('RWF', 0), ('UGX', 0), ('VND', 0),
        ('VUV', 0), ('XAF', 0), ('XOF', 0), ('XPF', 0),
    
        -- 3-decimal currencies
        ('BHD', 3), ('IQD', 3), ('JOD', 3), ('KWD', 3),
        ('LYD', 3), ('OMR', 3), ('TND', 3)
    
        -- everything else will default to 2
      ) AS t(code, minor_unit)
    )
    SELECT
      -- =====================
      -- Transaction (Invoice)
      -- =====================
      invoice.id                         AS reference_id,
      NULL                               AS parent_reference_id,
      'finalized'                        AS transaction_status,
      'sale'                             AS transaction_type,
      invoice.currency                   AS currency,
      invoice.invoicing_date             AS transaction_date,
      NULL                               AS discount_amount,
      NULL                               AS tax_amount,
    
      -- =====================
      -- Line item monies converted to smallest unit (e.g: cents for USD)
      -- =====================
      invoice_items.id                   AS "line_item.id",
      ROUND(
        (invoice_items.amount_without_tax
        * power(10, COALESCE(cmu.minor_unit, 2))) / GREATEST(invoice_items.quantity, 1)
      )::numeric(18, 6)                  AS "line_item.unit_price",
      invoice_items.quantity             AS "line_item.quantity",
      ROUND(
        invoice_items.tax
        * power(10, COALESCE(cmu.minor_unit, 2))
      )::numeric(18, 6)                  AS "line_item.tax_amount",
      ROUND(
        invoice_items.discount
        * power(10, COALESCE(cmu.minor_unit, 2))
      )::numeric(18, 6)                  AS "line_item.discount_amount",
    
      -- =====================
      -- Product
      -- =====================
      invoice_items.product_id             AS "line_item.product.external_id",
      'MONETIZENOW'                        AS "line_item.product.external_source",
      CASE
        WHEN product.tax_exempt IS TRUE THEN 'NONTAXABLE'
        ELSE NULL
      END                                  AS "line_item.product.tax_attributes",
    
      -- =====================
      -- Customer address
      -- =====================
      invoice.shipping_address_line_1      AS "line_item.customer.address.line1",
      invoice.shipping_address_line_2      AS "line_item.customer.address.line2",
      invoice.shipping_address_city        AS "line_item.customer.address.city",
      invoice.shipping_address_postal_code AS "line_item.customer.address.postal_code",
      invoice.shipping_address_state       AS "line_item.customer.address.state",
      invoice.shipping_address_country     AS "line_item.customer.address.country",
      NULL                                 AS "line_item.customer.address.latitude",
      NULL                                 AS "line_item.customer.address.longitude",
    
      -- =====================
      -- Customer tax
      -- =====================
      NULL                    AS "line_item.customer.tax_ids"
    
    FROM invoice
    LEFT JOIN invoice_items
      ON invoice.id = invoice_items.invoice_id
    LEFT JOIN product
      ON invoice_items.product_id = product.id
    LEFT JOIN currency_minor_units cmu
      ON cmu.code = invoice.currency
    WHERE
      ("invoice"."id" IS NOT NULL)
      AND (("invoice"."id" <> '') OR ("invoice"."id" IS NULL))
    -- Optional date filter  AND "invoice"."invoicing_date" >= '2025-10-02'
  2. Then, import the CSV into Taxwire Transactions page. If asked for a data source format, enter “Taxwire CSV”. Your historical transactions should populate in a matter of seconds to minutes, depending on the transaction count.