Skip to content

Releases

Support for "paid by partner" tag.

Choose a tag to compare

@avranu avranu released this 12 Feb 14:55
1735b44

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

Choose a tag to compare

@avranu avranu released this 12 Feb 00:35

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.