hundred/ for Sage 100

Early access For users of the sage100-odbc package

You read Sage 100 over ODBC. Planned next: writes, from any server.

The free sage100-odbc package reads customers, open sales orders and items through the Sage 100 ODBC driver. That driver is read-only, and it only runs on a Windows machine with the matching driver bitness. Hundred is a planned hosted REST API for Sage 100 that would add the two things the package cannot do: create and change records through Sage 100's own business objects, and let your code run anywhere that speaks HTTPS, with a small connector next to Sage 100 instead of an ODBC setup on your side. It is not built yet. Early access is open, and your answers decide what we build first.

  • StagePlanned. Nothing is callable yet. We onboard teams in stages and email you when your modules are ready.
  • PricePlanned: $99/month per connected Sage 100 company. Nothing is sold yet and no payment is taken. Planned pricing
  • The packageFree and MIT-licensed. Keep using it; this page is about what it cannot do. On GitHub

The package today, and what Hundred plans

Status on 2026-10-05

Questionsage100-odbc todayHundred Planned
Read customers, sales orders, itemsYes: SELECT over the ODBC driver, returned as typed Python records.Planned: GET endpoints for customers, sales orders, invoices, items, vendors, purchase orders and general ledger reads.
Create or change an order or a customerNo. The Sage 100 ODBC driver is read-only. Writing today means the Business Object Interface (BOI), a Windows COM interface. BOI guidePlanned: POST and PATCH that go through Sage 100's business objects, so numbering, defaults, credit checks, tax and validation apply as in the desktop client.
Where your code runsOn Windows, on a machine with the "MAS 90 4.0 ODBC Driver" in the same bitness as your Python (Sage 100 2026 is 64-bit only), with network access to the Sage 100 data.Planned: anywhere with HTTPS, Linux or a cloud function included. A small connector, a Windows service, would still run on the machine with Sage 100 and connect out over HTTPS: no open ports, no VPN.
DSN and driver setupYours: a DSN, or a DSN-less connection string, because Sage 100 recreates SOTAMAS90 on every start. ODBC guidePlanned: none on your side. You call one endpoint with a company code and an API key.
CostFree, MIT license.Planned: $99/month per connected Sage 100 company.

The same job, side by side

Reading open orders works today with the package. Writing an order back is the planned part: the second call does not answer yet, and the host name and fields come from the planned API docs.

Works today sage100-odbc, read-only, on Windows

from hundred_odbc import SageReader, connect

conn = connect(company="ABC", user="JSMITH",
               password="...")  # DSN=SOTAMAS90
sage = SageReader(conn)

for order in sage.open_sales_orders():
    print(order.sales_order_no, order.customer_id)

# Writing an order back: not possible over
# ODBC. Today that takes a BOI script on the
# Sage 100 machine.

Planned · not callable yet Hundred, from any server

# PLANNED. This endpoint does not exist yet.
curl -X POST \
  https://api.hundredapi.com/v1/companies/ABC/sales-orders \
  -H "Authorization: Bearer $HUNDRED_KEY" \
  -H "Idempotency-Key: shop-5512" \
  -H "Content-Type: application/json" \
  -d '{ "customerId": "01-AVNET",
        "customerPoNo": "5512",
        "lines": [ { "itemCode": "1001-HON-H252",
                     "quantityOrdered": 4 } ] }'

# Planned: Sage 100 takes the next order number
# and applies its own validation.

How the planned setup would work

Planned
01A connector next to Sage 100

A small Windows service would run on the machine that runs Sage 100. It would sign in as one Sage 100 user, connect out over HTTPS and need no open port.

02Your code calls one API

Your code would call api.hundredapi.com with a company code from wherever it runs. No ODBC driver, DSN or bitness match on your side.

03Writes through business objects

Writes would go through Sage 100's own business objects, never straight into the data files, so Sage 100's rules would decide what is saved.

Missing a module or a write you need? Tell us in the form below. It decides the order we build in.

Planned pricing

Planned · not on sale
$99Planned: per month, per connected Sage 100 company. Nothing is sold yet and no payment is taken today.
TodayJoining the early access list is free and commits you to nothing. The package is free and MIT-licensed.
ModelOne subscription per connected Sage 100 company, covering the planned endpoints, read and write.
Your inputTell us in the form whether this price works for you and how you would want to buy it.
Your Sage 100The connector signs in as one Sage 100 user and uses one license seat while it is connected.

Join early access

Rolling out in stages

Tell us what you read today and what you need to write. We onboard teams in stages and email you when the modules you need are ready.

Form 100-EA · early access6 fields, 3 required

We use this only for Hundred early access: to contact you and to plan the product and its price. Privacy notice