A simple Python SDK for Sage Intacct.
Requirements
- Python >= 3.7
- pydantic
- httpx
- jxmlease
Links
Installation
pip install pyintacct
Example usage
from pyintacct import IntacctAPI
config = {'SENDER_ID': 'senderid',
'SENDER_PW': 'senderpassword',
'COMPANY_ID': 'mycompany',
'USER_ID': 'username',
'USER_PW': 'password'}
client = IntacctAPI(config)
customer = {'customer': {'CUSTOMERID': 'C-0001', 'NAME': 'Acme, Inc.'}}
client.create(customer)
# Query and return all results at once
r = client.read_by_query('CUSTOMER', 'CUSTOMERID = \'C-0001\'', fields='NAME', pagesize=1)
# Or iterate through pages
r = client.yield_by_query('CUSTOMER', 'CUSTOMERID = \'C-0001\'', fields='NAME', pagesize=1)
for customer in r:
print(customer['NAME'])
You can also use pydantic models:
from pydantic import BaseModel
# API 3.0
class Location(BaseModel):
LOCATIONID: str
NAME: str
location = Location(LOCATIONID='T123', NAME='Test Location', PARENTID='100')
client.create(location)
# API 2.1
from pyintacct.models.base import API21Object
class Contact(API21Object):
contactname: str = ...
printas: str = None # Need to assign a default to preserve ordering
# Override create or delete method to fit your object.
@classmethod
def delete(cls):
return 'delete_contact', 'contactname'