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
| Question | sage100-odbc today | Hundred Planned |
|---|---|---|
| Read customers, sales orders, items | Yes: 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 customer | No. The Sage 100 ODBC driver is read-only. Writing today means the Business Object Interface (BOI), a Windows COM interface. BOI guide | Planned: 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 runs | On 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 setup | Yours: a DSN, or a DSN-less connection string, because Sage 100 recreates SOTAMAS90 on every start. ODBC guide | Planned: none on your side. You call one endpoint with a company code and an API key. |
| Cost | Free, 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
PlannedA 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.
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.
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| Today | Joining the early access list is free and commits you to nothing. The package is free and MIT-licensed. |
| Model | One subscription per connected Sage 100 company, covering the planned endpoints, read and write. |
| Your input | Tell us in the form whether this price works for you and how you would want to buy it. |
| Your Sage 100 | The connector signs in as one Sage 100 user and uses one license seat while it is connected. |
Join early access
Rolling out in stagesTell 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.