Python SDK for the Georgian Revenue Service (แกแกแแ แจแแแแกแแแแแแแก แกแแแกแแฎแฃแ แ) electronic services.
WayBill Service (แแแแฅแขแ แแแฃแแ แแแแแแแแแ) โ SOAP/XML API for electronic commodity waybills
Customs Declarations (แกแแแแแ แแแแแแ แแชแแแแ) โ REST/JSON API for customs declaration data
Invoice / Declaration (แกแแแแแแกแแฎแแแ แแแแฃแแแแขแ) โ REST/JSON API for tax invoices and declarations
Or install from source:
git clone https://github.com/kuduxaaa/rsge-python.git
cd rsge-python
pip install -e .
For development (includes pytest, ruff, mypy):
Requirements: Python 3.10+
from rsge import WayBillClient , WayBillType , VATType
with WayBillClient ('your_service_user' , 'your_service_password' ) as client :
# Verify credentials
un_id , s_user_id = client .check_service_user ()
print (f'Taxpayer ID: { un_id } , User ID: { s_user_id } ' )
# Create a waybill
waybill = client .create_waybill (
waybill_type = WayBillType .TRANSPORTATION ,
buyer_tin = '12345678901' ,
start_address = 'Tbilisi, Rustaveli Ave 1' ,
end_address = 'Batumi, Chavchavadze St 5' ,
driver_tin = '01234567890' ,
car_number = 'AB-123-CD' ,
)
# Add goods
waybill .add_goods (
name = 'Office Supplies' ,
unit_id = 1 ,
quantity = 10 ,
price = 25.50 ,
bar_code = '5901234123457' ,
vat_type = VATType .REGULAR ,
)
# Save, activate, close
result = client .save_waybill (waybill )
if result .is_success :
wb_number = client .activate_waybill (result .waybill_id )
print (f'Waybill number: { wb_number } ' )
client .close_waybill (result .waybill_id )
from rsge import CustomsClient
with CustomsClient () as client :
auth = client .authenticate ('username' , 'password' )
declarations = client .get_declarations (
date_from = '2024-01-01' ,
date_to = '2024-01-31' ,
)
for decl in declarations :
print (f'{ decl .declaration_number } : { decl .description } = { decl .customs_value } ' )
Invoice / Declaration Service
from rsge import InvoiceClient , Invoice , InvoiceCategory , InvoiceType
with InvoiceClient () as client :
# Authenticate (supports 2FA)
auth = client .authenticate ('your_username' , 'your_password' )
if auth .needs_pin :
pin = input ('Enter PIN: ' )
auth = client .authenticate_pin (auth .pin_token , pin )
# Create and save an invoice
inv = Invoice (
inv_category = InvoiceCategory .GOODS_SERVICE ,
inv_type = InvoiceType .WITH_TRANSPORT ,
operation_date = '10-04-2025 10:00:00' ,
tin_seller = '206322102' ,
tin_buyer = '12345678910' ,
)
inv .add_goods ('Office Supplies' , quantity = 10 , unit_price = 25.50 )
inv .add_goods ('Printer Paper' , quantity = 5 , unit_price = 15.00 )
txn_id = client .save_invoice (inv )
result = client .get_transaction_result (txn_id )
print (f'Saved invoice ID: { result .invoice_id } ' )
# List, activate, and manage invoices
invoices = client .list_invoices (TYPE = 1 , MAXIMUM_ROWS = 20 )
client .activate_invoices ([result .invoice_id ])
# Look up organization info
org = client .get_org_info ('206322102' )
print (f'{ org .name } โ VAT payer: { org .is_vat_payer } ' )
Guide
Description
Getting Started
Installation, requirements, quickstart examples
WayBill Client
Full WayBillClient API reference (40+ methods)
Customs Client
CustomsClient API reference (auth flows, declarations)
Invoice Client
InvoiceClient API reference (25+ methods, 2FA auth)
Models
All dataclass models with fields and types
Enums
All enum types with values and Georgian descriptions
Exceptions
Exception hierarchy and error handling patterns
Category
Methods
Auth
check_service_user(), get_service_users(), update_service_user()
CRUD
create_waybill(), save_waybill(), get_waybill(), get_waybills(), get_buyer_waybills()
Lifecycle
activate_waybill(), close_waybill(), delete_waybill(), cancel_waybill()
Buyer
confirm_waybill(), reject_waybill()
Transporter
save_waybill_transporter(), activate_waybill_transporter(), close_waybill_transporter()
Invoice
save_invoice()
Templates
save_waybill_template(), get_waybill_templates(), get_waybill_template(), delete_waybill_template()
Catalog
save_bar_code(), delete_bar_code(), get_bar_codes()
Vehicles
save_car_number(), delete_car_number(), get_car_numbers()
Reference
get_akciz_codes(), get_waybill_types(), get_waybill_units(), get_transport_types(), get_wood_types(), get_error_codes(), get_name_from_tin()
Method
Description
authenticate()
One-factor login
authenticate_pin()
Two-factor PIN verification
get_declarations()
Retrieve assessed declarations by date range
sign_out()
Invalidate token
Category
Methods
Auth
authenticate(), authenticate_pin(), sign_out()
Common
get_vat_payer_status(), get_org_info(), get_units(), get_transaction_result()
CRUD
get_invoice(), save_invoice(), list_invoices(), list_goods()
Lifecycle
activate_invoice(), activate_invoices(), delete_invoice(), cancel_invoice()
Buyer
confirm_invoice(), confirm_invoices(), refuse_invoice(), refuse_invoices()
Barcode
list_bar_codes(), get_bar_code(), clear_bar_codes()
Declaration
get_seq_num(), create_decl(), list_excise()
Type
Value
Status
Value
INNER_TRANSPORT
1
SAVED
0
TRANSPORTATION
2
ACTIVE
1
WITHOUT_TRANSPORTATION
3
COMPLETED
2
DISTRIBUTION
4
SENT_TO_TRANSPORTER
8
RETURN
5
DELETED
-1
SUB_WAYBILL
6
CANCELLED
-2
from rsge import RSGeError , RSGeAuthenticationError , RSGeAPIError , RSGeConnectionError
try :
result = client .save_waybill (waybill )
except RSGeAuthenticationError :
print ('Invalid credentials' )
except RSGeConnectionError :
print ('Cannot reach RS.ge servers' )
except RSGeAPIError as exc :
print (f'API error { exc .code } : { exc .message } ' )
except RSGeError as exc :
print (f'SDK error: { exc .message } ' )
rsge/
โโโ __init__.py # Public API exports
โโโ core/
โ โโโ exceptions.py # Exception hierarchy
โ โโโ transport.py # SOAP HTTP transport
โ โโโ xml_utils.py # XML builder/parser helpers
โโโ waybill/
โ โโโ client.py # WayBillClient
โ โโโ enums.py # WayBillType, Status, etc.
โ โโโ models.py # WayBill, GoodsItem, etc.
โโโ customs/
โ โโโ client.py # CustomsClient
โ โโโ models.py # CustomsDeclaration, etc.
โโโ invoice/
โโโ client.py # InvoiceClient (eAPI REST)
โโโ enums.py # InvoiceCategory, InvoiceType, etc.
โโโ models.py # Invoice, InvoiceGoods, etc.
git clone https://github.com/kuduxaaa/rsge-python.git
cd rsge-python
pip install -e " .[dev]"
pytest
ruff check .
mypy rsge
MIT