Skip to content

red-coracle/pyintacct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyintacct

PyPI License: MIT

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'