List Cash Collection Transactions

The Payiano's list transactions endpoint allows partners to see a comprehensive list of all payment transactions they've collected or need to be collected on behalf of the Payiano. It's similar to checking a bank statement, where you can view all the transactions processed through the partner's platform. This endpoint is invaluable for partners to keep track of payments, monitor transaction statuses over time. It ensures transparency and helps in managing financial records efficiently.

GET/collect/transactions
Sandbox: https://api-partner.payiano.dev/v1/collect/transactions
Live: https://api-partner.payiano.com/v1/collect/transactions
Security
  • Authorization header with access token is required to access this endpoint: Bearer ACCESS-TOKEN
  • Your access token should be associated to this permission collect.transactions.view
Request
Request body schema:
application/json
Query parameters:
page
Type: integer|null
Default: 1

The page number to be retrieved, for the list of transactions. So, a combination of page=1 and per_page=25 returns the first 25 transactions items. A combination of page=2 and per_page=25 returns the next 25 transactions items.

per_page
Type: integer|null
Default: 25
Possible values: [1 ... 200]

The maximum number of transactions items to return in the response.

q
Type: string|null
Min: 3

This parameter enables free-text search across key transactions fields (including but not limited to currency_code), requiring a minimum of 3 characters per search term. It performs case-insensitive partial matching, and returns relevance-ranked results while automatically handling special characters. This provides a simple yet powerful way to quickly find relevant transactions items. It could accept an array_of_strings as well.

sort
Type: array_of_objects|null

Control the ordering of results with sophisticated multi-column sorting. Specify an array of objects, each containing a field and direction. Maximum 5 sort fields per request to maintain optimal performance.

field
required
Type: enum
Possible values:
[
"amount", "created_at", "currency_code", "expires_at", "id", "is_expired", "is_paid", "paid_at", "payer_id", "updated_at" ]

This attribute specifies the field used for sorting. It can be a direct attribute of the resource or a related field referenced using dot notation.

direction
required
Type: enum
Possible values:
[
"asc", "desc" ]

This attribute specifies the sorting direction. It can be either asc for ascending order or desc for descending order. Please note that the value is case-sensitive.

includes
Type: array_of_enums|null
Possible values:
[
"transaction.payer" ]

A list of additional transactions relations to return, if available. Feel free to send the relations you would like to return with every item. See Including Resources to better understand how this is working.

filters
Type: object|null
Apply complex filtering conditions using nested logical groups and comparison operators. Supports advanced querying with and/or logic, multiple operators, and hierarchical conditions.

The filtering system supports unlimited nesting depth , allowing you to build sophisticated query logic. Each group can contain a mix of conditions and other groups. See Filtering Reference for complete documentation, operator list, and examples.
node
required
Type: enum
Possible values:
[
"group" ]

Used exclusively as the root filter node. Specifies the type of the root filter node. At the root level, only a logical group node is supported. A group node acts as a container that combines one or more filter conditions or nested groups using AND/OR logic. Nested group and condition nodes may appear within this root group to build complex filtering structures.

logic
required
Type: enum
Possible values:
[
"and", "or" ]

This parameter is used exclusively on group nodes. Defines how filters within a filter group are logically combined. This parameter is used exclusively on group nodes and determines how the group evaluates its child filters or nested groups:

• and — all contained conditions must match
• or — at least one contained condition must match

Logical groups can be nested to construct complex filtering expressions with mixed AND/OR logic across multiple levels.

filters
required
Type: array_of_objects

This parameter is used exclusively on group nodes. Contains the filter nodes (conditions or groups) within this logical group. Groups can be nested to create complex hierarchical filtering logic.

node
Type: enum
Possible values:
[
"group", "condition" ]

Specifies the type of filter node. A filter node can be either a logical group or a condition:

• group — a logical grouping of multiple filters combined with AND/OR logic
• condition — a single filter condition specifying a field, operator, and value

Filter nodes can be nested to create complex filtering structures.

logic
Type: enum
Possible values:
[
"and", "or" ]

This parameter is used exclusively on group nodes. Defines how filters within a filter group are logically combined. This parameter is used exclusively on group nodes and determines how the group evaluates its child filters or nested groups:

• and — all contained conditions must match
• or — at least one contained condition must match

Logical groups can be nested to construct complex filtering expressions with mixed AND/OR logic across multiple levels.

filters
Type: array_of_objects

This parameter is used exclusively on group nodes. Contains the filter nodes (conditions or groups) within this logical group. Groups can be nested to create complex hierarchical filtering logic.

field
Type: enum
Possible values:
[
"id", "currency_code", "amount", "expires_at", "is_expired", "payer_id", "paid_at", "is_paid", "created_at", "updated_at" ]

This parameter is used exclusively on condition nodes. It specifies the field evaluated by the filter condition. The selected field determines which operators are available and the expected format of the comparison value based on its data type.

operator
Type: enum
Possible values:
[
"eq", "not_eq", "gt", "gte", "lt", "lte", "starts_with", "not_starts_with", "ends_with", "not_ends_with", "contains", "not_contains", "in", "not_in", "between", "not_between", "is_null", "is_not_null" ]

This parameter is used exclusively on condition nodes. It specifies the comparison operator applied to the selected field. The set of supported operators depends on the field and its data type, and only operators that are valid for the chosen field can be used. Available operators for each field are provided in the response and presented in the filter selection. Refer to the Filtering Reference for the complete operator list, expected value formats, and usage examples.

value
Type: mixed

This parameter is used exclusively on condition nodes. The value used by the selected operator to evaluate the field. The expected structure and data type of this parameter depend on both the field type and the operator:

• Scalar operators (eq, not_eq, gt, gte, lt, lte, starts_with, ends_with, contains, and their negations) expect a single value matching the field type (for example, string or number).

• List operators (in, not_in) expect an array of values compatible with the field type.

• Range operators (between, not_between) expect an array of exactly two values representing the inclusive lower and upper bounds.

• Null-check operators (is_null, is_not_null) do not accept a value and must be used without this parameter.

Supplying a value that does not match the operator or field type will result in a validation error in strict mode. See the Filtering Reference for supported operators, applicable field types, and examples.

response_type
Type: enum|null
Default: json_list
Possible values:
[
"json_list", "json_aggregate", "export_csv", "export_xls", "export_xlsx" ]

Specifies the output format of the datatable response, supporting both JSON and export file types for easy integration and reporting. Refer to Response Types for more details.

aggregations
Type: object|null

Defines how to aggregate and group data when response_type is set to json_aggregate. This parameter enables analytical style responses suitable for dashboards and reports. Refer to Aggregations for more details.

fields
required
Type: array_of_objects

Defines the fields to be aggregated along with their respective metrics. Maximum 5 aggregation fields per request to maintain optimal performance.

field
required
Type: enum
Possible values:
[
"amount", "created_at", "currency_code", "expires_at", "id", "is_expired", "is_paid", "paid_at", "payer_id", "updated_at" ]

This attribute specifies the name of the field to be aggregated.

metrics
required
Type: array_of_enums
Possible values:
[
"avg", "count", "sum" ]

Defines the aggregation metrics to apply to the selected field. Note that the avg and sum metrics are applicable only to numeric fields.

group_by
required
Type: array_of_objects|null
Specifies the dimensions used to group aggregated data results. Each object defines a field by which records will be grouped before applying aggregation metrics. Maximum 5 aggregation group by fields per request to maintain optimal performance.

Grouping enables developers to analyze data trends across categories, dates, or other meaningful dimensions.

If no group_by fields are provided, the system performs a global aggregation across the entire dataset. In such cases, the response includes a single summary group, typically referencing the latest created_at value.
field
required
Type: enum
Possible values:
[
"created_at", "currency_code", "expires_at", "is_expired", "is_paid", "paid_at", "updated_at" ]
Specifies the field name used for grouping results within the aggregation. This determines how records are organized and segmented when computing metrics.

When grouping by a datetime or timestamp field such as created_at , the system automatically groups by the date portion only , ignoring the time component. This enables daily-based aggregations instead of precise timestamp level grouping.

By default, grouping operations use the server's timezone ( UTC ). You can override this behavior by specifying the X-Preferred-Response-Timezone header in your request. Learn more about timezone handling in our Datetime & Timezone Reference .
Response
200
Response schema:
application/json
Response body:
total_pages
Type: integer

The total number of pages that are available for the transactions search criteria.

current_page
Type: integer

The current pagination page.

per_page
Type: integer

The amount of transactions items return per page.

total_items
Type: integer

The total number of transactions that match the search criteria.

items
Type: array_of_objects

The list of transactions that match the search criteria.

id
Type: ulid
Length: 26

The unique ID assigned to each transaction which is generated by our system using the ULID format. Each ID is precisely 26 characters long, ensuring a unique and consistent identifier for every transaction. This ULID is automatically created by our system and is used to uniquely identify and track each transaction in our database.

currency_code
Type: enum
Possible values:
[
"EGP" ]

The three-character ISO-4217 Currency Code that identifies the currency for the transaction. Your business should be eligible to use the selected currency code.

amount
Type: decimal

The amount value that needs to be collected for the transaction. The length includes the value, the decimal digit and the decimal value. The API accepts 2 digits like 50.53.

reference_id
Type: string|null
Max: 50

It's a unique identifier assigned to each transaction. It's primary role is to distinguish one transaction from another, ensuring that each transaction can be individually tracked and managed without any confusion. Please note that duplicate values are not allowed. Only alpha-numeric characters, dashes, and underscores are allowed: [A-Za-z0-9-_]. The reference_id value is used to Identify Resource when you consume any transaction endpoint with sending identify_by query parameter with value reference_id.

inquiry_code
Type: integer

This attribute represents the unique inquiry code that customers must provide to the partner. This code is essential for partners to look up the transaction details and to process the payment on behalf of the customer. It serves as a key to access specific transaction information, ensuring that payments are accurately matched to the correct transaction. You can simulate a complete transaction payment through our Pay Order POS terminal flow to test this service effectively. This allows for a hands-on experience to ensure that the payment process is efficient and user-friendly at actual retail locations.

expires_at
Type: datetime|null

It indicates when the transaction becomes invalid. It ensures payments are made within a specified timeframe, useful for time-sensitive offers. It informs both the payer and the recipient about the exact deadline until which the payment can be processed. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

is_expired
Type: boolean

This attribute indicates whether the transaction is expired or not. If the transaction expires_at attribute is filled, then this attribute value will be true.

payer_id
Type: ulid

This field is the key to associating each transaction with the correct payer, enhancing the personalization and accuracy of the transaction process. It's not only enhances transaction precision but also contributes significantly to effective payer relationship management and data analysis.

payer
Type: object

The payer model for the transaction.

id
Type: ulid
Length: 26

The unique ID assigned to each payer which is generated by our system using the ULID format. Each ID is precisely 26 characters long, ensuring a unique and consistent identifier for every payer. This ULID is automatically created by our system and is used to uniquely identify and track each payer in our database.

name
Type: string
Min: 2
Max: 100

This is the fundamental attribute representing the payer's full legal or preferred name. It's used in all forms of communication and identification. It's crucial for personalization and ensures that all correspondences and documents are correctly addressed.

email
Type: string
Min: 5
Max: 255

The email address is a key point of contact for digital communication. It's used for sending transactional emails, marketing material and support communications.

phone_number
Type: string

This attribute stores the payer's mobile number. It's essential for direct contact, SMS notifications, and can also be used in cases where email communication is insufficient or inappropriate.

created_at
Type: datetime

The created datetime of the payer. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

updated_at
Type: datetime

The updated datetime of the payer. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

paid_at
Type: datetime|null

This attribute indicates the exact timestamp when the transaction was paid. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

is_paid
Type: boolean

This attribute indicates whether the transaction is paid or not. If the transaction paid_at attribute is filled, then this attribute value will be true.

created_at
Type: datetime

The created datetime of the transaction. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

updated_at
Type: datetime

The updated datetime of the transaction. This attribute can be formatted as an ISO 8601 string or a UNIX timestamp in milliseconds, depending on the preferred datetime format specified in the request header (e.g., 2024-08-04T14:22:01Z or 1722572118554). By default, the format is UNIX timestamp in milliseconds.

Response sample:
1
{
2 "per_page": 25, 3 "total_pages": 1, 4 "total_items": 1, 5 "current_page": 1, 6
"items": [
7
{
8 "id": "01hqpes2y80bgzsemcv93b8fvj", 9 "currency_code": "EGP", 10 "amount": 1140, 11 "reference_id": null, 12 "inquiry_code": 313222, 13 "expires_at": "1722572118554", 14 "is_expired": false, 15 "payer_id": "01hqpesc925831rw4gt5vgdrgp", 16
"payer": {
17 "id": "01hqpqw63s6jg9nq8m4fpddrmn", 18 "name": "Mohsen Ali", 19 "email": "mohsen@gawaab.com", 20 "phone_number": "+201000333000", 21 "created_at": "1722572118554", 22 "updated_at": "1722572118554" 23 }, 24 "paid_at": null, 25 "is_paid": false, 26 "created_at": "1722572118554", 27 "updated_at": "1722572118554" 28 } 29 ] 30}