22
33from extend .client import APIClient
44from .resource import Resource
5+ from ..models import TransactionStatus
56
67
78class Transactions (Resource ):
@@ -18,6 +19,7 @@ async def get_transactions(
1819 per_page : Optional [int ] = None ,
1920 from_date : Optional [str ] = None ,
2021 to_date : Optional [str ] = None ,
22+ status : Optional [str ] = None ,
2123 virtual_card_id : Optional [str ] = None ,
2224 min_amount_cents : Optional [int ] = None ,
2325 max_amount_cents : Optional [int ] = None ,
@@ -31,10 +33,11 @@ async def get_transactions(
3133 per_page (Optional[int]): Number of items per page
3234 from_date (Optional[str]): Start date in YYYY-MM-DD format
3335 to_date (Optional[str]): End date in YYYY-MM-DD format
36+ status (Optional[str]): Filter transactions by status (e.g., "PENDING", "CLEARED", "DECLINED", "NO_MATCH", "AVS_PASS", "AVS_FAIL", "AUTH_REVERSAL")
3437 virtual_card_id (str): Filter by specific virtual card
3538 min_amount_cents (int): Minimum clearing amount in cents
3639 max_amount_cents (int): Maximum clearing amount in cents
37- search_term (Optional[str]): Filter cards by search term (e.g., "Marketing ")
40+ search_term (Optional[str]): Filter transactions by search term (e.g., "Subscription ")
3841 sort_field (Optional[str]): Field to sort by, with optional direction
3942 Use "recipientName", "merchantName", "amount", "date" for ASC
4043 Use "-recipientName", "-merchantName", "-amount", "-date" for DESC
@@ -52,11 +55,15 @@ async def get_transactions(
5255 httpx.HTTPError: If the request fails
5356 """
5457
58+ if status and not TransactionStatus .is_valid (status .upper ()):
59+ raise ValueError (f"{ status } is not a valid status" )
60+
5561 params = {
5662 "page" : page ,
5763 "count" : per_page ,
5864 "fromDate" : from_date ,
5965 "toDate" : to_date ,
66+ "statuses" : status .upper () if status else None ,
6067 "virtualCardId" : virtual_card_id ,
6168 "minClearingBillingCents" : min_amount_cents ,
6269 "maxClearingBillingCents" : max_amount_cents ,
0 commit comments