FinanceFinance operations

Finance operations

Finance · 4 operations

GET

List finance operations

/api/finance-operation

Income and expense operations with filters: date range, type, account, article, payment type, amount range, students, manager. Paginated.

list_finance_operations

Query parameters · 27

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: financeOperationId typeOfOperation typeOfCategory account amount customer dateOfOperation createdAt
sortOrderstringOne of: ASC DESC
typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typesOfOperationstring[]One of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
typesOfCategorystring[]One of: SUBSCRIPTION WAGE OTHER
Show 19 more
accountIdnumberrequired—
accountIdsnumber[]—
articleIdnumberrequired—
articleIdsnumber[]—
typeOfPaymentIdnumberrequired—
typeOfPaymentIdsnumber[]—
amountnumberrequired—
amountFromnumberrequired—
amountTonumberrequired—
notestringrequired—
managerIdnumberrequired—
managerIdsnumber[]—
studentIdsnumber[]—
subscriptionIdsnumber[]—
wageIdsnumber[]—
leadIdnumber—
dateStartstring—
dateEndstring—
cfstring[]—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject4 fields
totalnumberrequired—
totalPagesnumberrequired—
currentPagenumberrequired—
financeOperationsobject[]required27 fields
financeOperationIdnumberrequired—
typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullable—
accountToIdnumberrequirednullable—
articleIdnumberrequirednullable—
dateOfOperationstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodFromstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodTostringrequirednullableformat YYYY-MM-DDTHH:mm:ss
subscriptionAllocationsobject[]required5 fields
amountnumberrequired—
allocationIdnumberrequired—
studentSubscriptionIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
leadIdnumberrequirednullable—
wageAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
wageIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
bonusAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
bonusIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
otherAllocationsobject[]required2 fields
amountnumberrequired—
allocationIdnumberrequired—
customerIdnumberrequirednullable—
studentIdnumberrequirednullable—
categoryIdnumberrequirednullable—
counterpartyIdnumberrequirednullable—
projectIdnumberrequirednullable—
managerIdnumberrequirednullable—
createdByUserIdnumberrequirednullable—
isVerifiedbooleanrequired—
verifiedByUserIdnumberrequirednullable—
fileobjectrequired4 fields
storageFileIdnumberrequired—
keystringrequired—
namestringrequired—
mimeTypestringrequirednullable—
notestringrequirednullable—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
customFieldsobjectany keys
Errors400401403429500
curl "https://your-school.rist.pro/api/finance-operation" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "totalPages": 0,
    "currentPage": 0,
    "financeOperations": [
      {
        "financeOperationId": 1,
        "typeOfOperation": "INCOME",
        "typeOfCategory": "SUBSCRIPTION",
        "accountId": 1,
        "accountToId": 1,
        "articleId": 1,
        "dateOfOperation": "2026-11-09T14:30:00",
        "accrualPeriodFrom": "2026-11-09T14:30:00",
        "accrualPeriodTo": "2026-11-09T14:30:00",
        "subscriptionAllocations": [
          {
            "amount": 0,
            "allocationId": 1,
            "studentSubscriptionId": 1,
            "typeOfPaymentId": 1,
            "leadId": 1
          }
        ],
        "wageAllocations": [
          {
            "amount": 0,
            "allocationId": 1,
            "wageId": 1,
            "typeOfPaymentId": 1
          }
        ],
        "bonusAllocations": [
          {
            "amount": 0,
            "allocationId": 1,
            "bonusId": 1,
            "typeOfPaymentId": 1
          }
        ],
        "otherAllocations": [
          {
            "amount": 0,
            "allocationId": 1
          }
        ],
        "customerId": 1,
        "studentId": 1,
        "categoryId": 1,
        "counterpartyId": 1,
        "projectId": 1,
        "managerId": 1,
        "createdByUserId": 1,
        "isVerified": false,
        "verifiedByUserId": 1,
        "file": {
          "storageFileId": 1,
          "key": "string",
          "name": "string",
          "mimeType": "string"
        },
        "note": "string",
        "updatedAt": "2026-11-09T14:30:00",
        "createdAt": "2026-11-09T14:30:00",
        "customFields": {}
      }
    ]
  }
}
GET

Get finance operation

/api/finance-operation/{id}

One finance operation with its account, article, payer and allocations.

get_finance_operation

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject27 fields
financeOperationIdnumberrequired—
typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullable—
accountToIdnumberrequirednullable—
articleIdnumberrequirednullable—
dateOfOperationstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodFromstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodTostringrequirednullableformat YYYY-MM-DDTHH:mm:ss
subscriptionAllocationsobject[]required5 fields
amountnumberrequired—
allocationIdnumberrequired—
studentSubscriptionIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
leadIdnumberrequirednullable—
wageAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
wageIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
bonusAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
bonusIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
otherAllocationsobject[]required2 fields
amountnumberrequired—
allocationIdnumberrequired—
customerIdnumberrequirednullable—
studentIdnumberrequirednullable—
categoryIdnumberrequirednullable—
counterpartyIdnumberrequirednullable—
projectIdnumberrequirednullable—
managerIdnumberrequirednullable—
createdByUserIdnumberrequirednullable—
isVerifiedbooleanrequired—
verifiedByUserIdnumberrequirednullable—
fileobjectrequired4 fields
storageFileIdnumberrequired—
keystringrequired—
namestringrequired—
mimeTypestringrequirednullable—
notestringrequirednullable—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
customFieldsobjectany keys
Errors400401403429500
curl "https://your-school.rist.pro/api/finance-operation/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "financeOperationId": 1,
    "typeOfOperation": "INCOME",
    "typeOfCategory": "SUBSCRIPTION",
    "accountId": 1,
    "accountToId": 1,
    "articleId": 1,
    "dateOfOperation": "2026-11-09T14:30:00",
    "accrualPeriodFrom": "2026-11-09T14:30:00",
    "accrualPeriodTo": "2026-11-09T14:30:00",
    "subscriptionAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "studentSubscriptionId": 1,
        "typeOfPaymentId": 1,
        "leadId": 1
      }
    ],
    "wageAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "wageId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "bonusAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "bonusId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "otherAllocations": [
      {
        "amount": 0,
        "allocationId": 1
      }
    ],
    "customerId": 1,
    "studentId": 1,
    "categoryId": 1,
    "counterpartyId": 1,
    "projectId": 1,
    "managerId": 1,
    "createdByUserId": 1,
    "isVerified": false,
    "verifiedByUserId": 1,
    "file": {
      "storageFileId": 1,
      "key": "string",
      "name": "string",
      "mimeType": "string"
    },
    "note": "string",
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "customFields": {}
  }
}
POST

Record payment or expense

/api/finance-operation

Record an income (e.g. a student payment that tops up a subscription) or an expense. Moves real money balances; confirm amount, payer and account with the user first.

create_finance_operation

Request body

application/json · object

typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullablemin 1
accountToIdnumbernullablemin 1
articleIdnumberrequirednullablemin 1
dateOfOperationstringrequirednullable—
accrualPeriodFromstringnullable—
accrualPeriodTostringnullable—
subscriptionAllocationsobject[]items min 14 fields
studentSubscriptionIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
leadIdnumbernullablemin 1
wageAllocationsobject[]items min 13 fields
wageIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
bonusAllocationsobject[]items min 13 fields
bonusIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
otherAllocationsobject[]items min 11 field
amountnumberrequired—
customerIdnumberrequirednullablemin 1
studentIdnumberrequirednullablemin 1
categoryIdnumberrequirednullablemin 1
counterpartyIdnumberrequirednullablemin 1
projectIdnumbernullablemin 1
createdByUserIdnumberrequirednullablemin 1
managerIdnumberrequirednullablemin 1
notestringrequirednullablelength max 1500
isVerifiedboolean—
verifiedByUserIdnumbernullablemin 1
customFieldsobjectany keys

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject27 fields
financeOperationIdnumberrequired—
typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullable—
accountToIdnumberrequirednullable—
articleIdnumberrequirednullable—
dateOfOperationstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodFromstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodTostringrequirednullableformat YYYY-MM-DDTHH:mm:ss
subscriptionAllocationsobject[]required5 fields
amountnumberrequired—
allocationIdnumberrequired—
studentSubscriptionIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
leadIdnumberrequirednullable—
wageAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
wageIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
bonusAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
bonusIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
otherAllocationsobject[]required2 fields
amountnumberrequired—
allocationIdnumberrequired—
customerIdnumberrequirednullable—
studentIdnumberrequirednullable—
categoryIdnumberrequirednullable—
counterpartyIdnumberrequirednullable—
projectIdnumberrequirednullable—
managerIdnumberrequirednullable—
createdByUserIdnumberrequirednullable—
isVerifiedbooleanrequired—
verifiedByUserIdnumberrequirednullable—
fileobjectrequired4 fields
storageFileIdnumberrequired—
keystringrequired—
namestringrequired—
mimeTypestringrequirednullable—
notestringrequirednullable—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
customFieldsobjectany keys
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/finance-operation" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "typeOfOperation": "INCOME",
    "typeOfCategory": "SUBSCRIPTION",
    "accountId": 1,
    "accountToId": 1,
    "articleId": 1,
    "dateOfOperation": "string",
    "accrualPeriodFrom": "string",
    "accrualPeriodTo": "string",
    "subscriptionAllocations": [
      {
        "studentSubscriptionId": 1,
        "amount": 0,
        "typeOfPaymentId": 1,
        "leadId": 1
      }
    ],
    "wageAllocations": [
      {
        "wageId": 1,
        "amount": 0,
        "typeOfPaymentId": 1
      }
    ],
    "bonusAllocations": [
      {
        "bonusId": 1,
        "amount": 0,
        "typeOfPaymentId": 1
      }
    ],
    "otherAllocations": [
      {
        "amount": 0
      }
    ],
    "customerId": 1,
    "studentId": 1,
    "categoryId": 1,
    "counterpartyId": 1,
    "projectId": 1,
    "createdByUserId": 1,
    "managerId": 1,
    "note": "string",
    "isVerified": false,
    "verifiedByUserId": 1,
    "customFields": {}
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "financeOperationId": 1,
    "typeOfOperation": "INCOME",
    "typeOfCategory": "SUBSCRIPTION",
    "accountId": 1,
    "accountToId": 1,
    "articleId": 1,
    "dateOfOperation": "2026-11-09T14:30:00",
    "accrualPeriodFrom": "2026-11-09T14:30:00",
    "accrualPeriodTo": "2026-11-09T14:30:00",
    "subscriptionAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "studentSubscriptionId": 1,
        "typeOfPaymentId": 1,
        "leadId": 1
      }
    ],
    "wageAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "wageId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "bonusAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "bonusId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "otherAllocations": [
      {
        "amount": 0,
        "allocationId": 1
      }
    ],
    "customerId": 1,
    "studentId": 1,
    "categoryId": 1,
    "counterpartyId": 1,
    "projectId": 1,
    "managerId": 1,
    "createdByUserId": 1,
    "isVerified": false,
    "verifiedByUserId": 1,
    "file": {
      "storageFileId": 1,
      "key": "string",
      "name": "string",
      "mimeType": "string"
    },
    "note": "string",
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "customFields": {}
  }
}
PATCH

Edit finance operation

/api/finance-operation/{id}

Rewrite a finance operation. Send the full operation as in POST /api/finance-operation, not only changed fields: allocations sent replace the old ones and balances are recalculated. Confirm with the user first.

update_finance_operation

Path parameters · 1

idnumberrequired—

Request body

application/json · object

typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullablemin 1
accountToIdnumbernullablemin 1
articleIdnumberrequirednullablemin 1
dateOfOperationstringrequirednullable—
accrualPeriodFromstringnullable—
accrualPeriodTostringnullable—
subscriptionAllocationsobject[]items min 14 fields
studentSubscriptionIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
leadIdnumbernullablemin 1
wageAllocationsobject[]items min 13 fields
wageIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
bonusAllocationsobject[]items min 13 fields
bonusIdnumberrequiredmin 1
amountnumberrequired—
typeOfPaymentIdnumbernullablemin 1
otherAllocationsobject[]items min 11 field
amountnumberrequired—
customerIdnumberrequirednullablemin 1
studentIdnumberrequirednullablemin 1
categoryIdnumberrequirednullablemin 1
counterpartyIdnumberrequirednullablemin 1
projectIdnumbernullablemin 1
createdByUserIdnumberrequirednullablemin 1
managerIdnumberrequirednullablemin 1
notestringrequirednullablelength max 1500
isVerifiedboolean—
verifiedByUserIdnumbernullablemin 1
customFieldsobjectany keys

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject27 fields
financeOperationIdnumberrequired—
typeOfOperationstringrequiredOne of: INCOME TRANSFER ADJUSTMENT EXPENSES REFUND ACCOUNT_TRANSFER
typeOfCategorystringrequiredOne of: SUBSCRIPTION WAGE OTHER
accountIdnumberrequirednullable—
accountToIdnumberrequirednullable—
articleIdnumberrequirednullable—
dateOfOperationstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodFromstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
accrualPeriodTostringrequirednullableformat YYYY-MM-DDTHH:mm:ss
subscriptionAllocationsobject[]required5 fields
amountnumberrequired—
allocationIdnumberrequired—
studentSubscriptionIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
leadIdnumberrequirednullable—
wageAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
wageIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
bonusAllocationsobject[]required4 fields
amountnumberrequired—
allocationIdnumberrequired—
bonusIdnumberrequired—
typeOfPaymentIdnumberrequirednullable—
otherAllocationsobject[]required2 fields
amountnumberrequired—
allocationIdnumberrequired—
customerIdnumberrequirednullable—
studentIdnumberrequirednullable—
categoryIdnumberrequirednullable—
counterpartyIdnumberrequirednullable—
projectIdnumberrequirednullable—
managerIdnumberrequirednullable—
createdByUserIdnumberrequirednullable—
isVerifiedbooleanrequired—
verifiedByUserIdnumberrequirednullable—
fileobjectrequired4 fields
storageFileIdnumberrequired—
keystringrequired—
namestringrequired—
mimeTypestringrequirednullable—
notestringrequirednullable—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
customFieldsobjectany keys
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/finance-operation/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "typeOfOperation": "INCOME",
    "typeOfCategory": "SUBSCRIPTION",
    "accountId": 1,
    "accountToId": 1,
    "articleId": 1,
    "dateOfOperation": "string",
    "accrualPeriodFrom": "string",
    "accrualPeriodTo": "string",
    "subscriptionAllocations": [
      {
        "studentSubscriptionId": 1,
        "amount": 0,
        "typeOfPaymentId": 1,
        "leadId": 1
      }
    ],
    "wageAllocations": [
      {
        "wageId": 1,
        "amount": 0,
        "typeOfPaymentId": 1
      }
    ],
    "bonusAllocations": [
      {
        "bonusId": 1,
        "amount": 0,
        "typeOfPaymentId": 1
      }
    ],
    "otherAllocations": [
      {
        "amount": 0
      }
    ],
    "customerId": 1,
    "studentId": 1,
    "categoryId": 1,
    "counterpartyId": 1,
    "projectId": 1,
    "createdByUserId": 1,
    "managerId": 1,
    "note": "string",
    "isVerified": false,
    "verifiedByUserId": 1,
    "customFields": {}
  }'
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "financeOperationId": 1,
    "typeOfOperation": "INCOME",
    "typeOfCategory": "SUBSCRIPTION",
    "accountId": 1,
    "accountToId": 1,
    "articleId": 1,
    "dateOfOperation": "2026-11-09T14:30:00",
    "accrualPeriodFrom": "2026-11-09T14:30:00",
    "accrualPeriodTo": "2026-11-09T14:30:00",
    "subscriptionAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "studentSubscriptionId": 1,
        "typeOfPaymentId": 1,
        "leadId": 1
      }
    ],
    "wageAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "wageId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "bonusAllocations": [
      {
        "amount": 0,
        "allocationId": 1,
        "bonusId": 1,
        "typeOfPaymentId": 1
      }
    ],
    "otherAllocations": [
      {
        "amount": 0,
        "allocationId": 1
      }
    ],
    "customerId": 1,
    "studentId": 1,
    "categoryId": 1,
    "counterpartyId": 1,
    "projectId": 1,
    "managerId": 1,
    "createdByUserId": 1,
    "isVerified": false,
    "verifiedByUserId": 1,
    "file": {
      "storageFileId": 1,
      "key": "string",
      "name": "string",
      "mimeType": "string"
    },
    "note": "string",
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "customFields": {}
  }
}