Repository navigation
Releases
Support for "paid by partner" tag.
Added support for a configurable transaction tag (PAID_BY_PARTNER_TAG, default "Paid by partner") and loaded it from environment config, so the behavior can be customized without code changes.
Extended transaction modeling to include tags and added a helper that detects a matching tag whether tags come as plain strings or objects with a name field.
Updated bill computation so the Jira “total expenses” still reflects all included shared expenses, while the owed half is adjusted using your requested rule (half = total/2 - paid_by_other_total). Also tracked count/amount of tagged transactions in BillingResult.
Updated Jira description/log output to include the fully-paid-by-other adjustment details for transparency in each monthly task.
Added/updated tests and assertions for the new result fields.
Documented the new feature and environment variable in the README (features, calculation flow, and optional config table).
v0.2.1
This release introduces a CLI tool that connects to Sure (budgeting) and Jira Cloud to automatically generate a monthly task for shared expenses.
What It Does
Fetches transactions from Sure for a given month
Excludes configurable categories (e.g. Personal Expenses)
Sums qualifying expenses
Calculates a 50/50 split
Creates a Jira issue with:
Summary: Pay shared bills for {Month YYYY}: ${Half}
ADF-formatted description with totals and counts
Assigned to a configurable Jira user (accountId)
Key Features
🔹 Sure Integration
Auth via configurable header (supports X-Api-Key)
Handles pagination
Safely parses localized currency formats
Excludes configurable category list
Optional inclusion of income transactions
🔹 Jira Cloud Integration
Uses REST API v3
Supports Base64 Basic authentication
Creates properly formatted ADF descriptions
Assigns issue via accountId
Logs full error responses for easier debugging
🔹 CLI Support
--month YYYY-MM (defaults to previous month)
--action notify|list
--dry-run
--include-income
Configurable timezone
Example Usage
python main.py --dry-run
python main.py --month 2026-01
List qualifying transactions without creating an issue:
python main.py --action list
Required Environment Variables
SURE_BASE_URL
SURE_API_TOKEN
SURE_AUTH_HEADER
SURE_AUTH_PREFIX
JIRA_BASE_URL
JIRA_ENCODED_CREDENTIALS
JIRA_PROJECT_KEY
JIRA_ASSIGNEE_ACCOUNT_ID
Optional:
EXCLUDED_CATEGORY_NAMES
INCLUDE_INCOME
APP_TIMEZONE
CURRENCY_SYMBOL
DRY_RUN
Notes
Jira requires accountId, not email, for assignee.
Sure API pagination defaults to 25 items per page.
Description is formatted using Atlassian Document Format (ADF).
This release establishes a reproducible monthly workflow for shared expense reconciliation and task tracking.