PayCredit webhook events
Webhook event payloads and status values.
PayCredit webhook events
PayCredit publishes webhook events when account, transaction, instalment, repayment, statement, or delinquency data changes. This guide documents the event catalogue and the JSON payload delivered for each event.
Payload conventions
- JSON property names use
snake_case. - Dates use the
YYYY-MM-DDformat. - A
nullvalue means that the value is not available for the event. For creation events,previous_statusisnull. - Status values are normalized public values. PayCredit database codes are not sent in webhook payloads.
settled_atis currently a date without a time component.- IDs are PayCredit identifiers and are represented as JSON numbers.
Event overview
| Event | Description |
|---|---|
credit.account_status.change | An account moves between lifecycle states such as active, blocked, closed, deleted, or inactive. |
credit.statement_data_status.change | A billing statement reaches the RELEASED state and its billing data becomes available. |
credit.delinquency_stage.change | An account enters, changes, or exits a delinquency stage. |
credit.transaction_status.change | A transaction moves between processing states such as authorised, settled, declined, cancelled, reversed, or disputed. |
credit.instalment_status.change | An instalment loan moves between active, inactive, closed, or amended states. |
credit.instalment_repayment_status.change | A scheduled instalment repayment changes state, for example from pending to paid or overdue. |
credit.repayment_status.change | An account or statement repayment status changes and its repayment amounts and settlement date are reported. |
credit.account_status.change
credit.account_status.changeUse this event to track changes to the lifecycle status of a credit account.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
account_id | integer | No | Credit account identifier. |
previous_status | string | Yes | Account status before the change. null for an account creation event. |
current_status | string | No | Account status after the change. |
Status values
ACTIVE, BLOCKED, CLOSED, DELETED, INACTIVE
Example
{
"account_id": 12345,
"previous_status": null,
"current_status": "ACTIVE"
}credit.statement_data_status.change
credit.statement_data_status.changeUse this event to know when statement data is ready for presentation or reporting. The event is published when the statement reaches RELEASED.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
account_id | integer | No | Credit account identifier. |
statement_id | integer | No | Billing statement identifier. |
statement_start_date | string, date | No | Start date of the statement period. |
statement_date | string, date | No | Statement date. |
statement_status | string | No | Statement status. The event catalogue value is RELEASED. |
Example
{
"account_id": 12345,
"statement_id": 67890,
"statement_start_date": "2026-09-01",
"statement_date": "2026-09-30",
"statement_status": "RELEASED"
}credit.delinquency_stage.change
credit.delinquency_stage.changeUse this event to track an account entering, progressing through, or leaving a delinquency stage. Stage IDs are configurable values and are not an enum.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
account_id | integer | No | Credit account identifier. |
previous_stage_id | integer | Yes | Previous delinquency stage. null when the account enters delinquency. |
current_stage_id | integer | Yes | Current delinquency stage. null when the account exits delinquency. |
Example
{
"account_id": 12345,
"previous_stage_id": null,
"current_stage_id": 102
}credit.transaction_status.change
credit.transaction_status.changeUse this event to track the processing lifecycle of a credit transaction. The payload also exposes the transaction amounts, currency, and merchant information available in PayCredit.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
transaction_id | integer | No | PayCredit transaction identifier. |
account_id | integer | No | Credit account identifier. |
transaction_type_id | integer | No | PayCredit transaction type identifier. |
previous_status | string | Yes | Transaction status before the change. null for a transaction creation event. |
current_status | string | No | Transaction status after the change. |
transaction_reference | string | Yes | PayCredit transaction reference. |
transaction_identifier | string | Yes | External transaction identifier. |
parent_transaction_id | integer | Yes | Parent transaction identifier, when applicable. |
merchant_name | string | Yes | Merchant name, location, and country represented as one string. |
merchant_category_cd | string | Yes | Four-digit merchant category code. |
settled_amount | number | Yes | Amount settled for the transaction. |
local_transaction_amount | number | Yes | Transaction amount in the local transaction currency. |
local_transaction_currency_cd | string | Yes | ISO currency code for local_transaction_amount. |
Status values
AUTHORISED, CANCELLED, COMPLETED, DECLINED, DISPUTED, REVERSED, SETTLED
Example
{
"transaction_id": 123456,
"account_id": 12345,
"transaction_type_id": 1,
"previous_status": "AUTHORISED",
"current_status": "SETTLED",
"transaction_reference": "transaction-ref-123",
"transaction_identifier": "external-transaction-456",
"parent_transaction_id": null,
"merchant_name": "Example Store, Ljubljana, Slovenia",
"merchant_category_cd": "5411",
"settled_amount": 100.00,
"local_transaction_amount": 110.00,
"local_transaction_currency_cd": "USD"
}credit.instalment_status.change
credit.instalment_status.changeUse this event to track the lifecycle of an instalment loan, including an amendment or restructuring.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
loan_id | integer | No | Instalment loan identifier. |
account_id | integer | No | Credit account identifier. |
previous_status | string | Yes | Loan status before the change. null for a loan creation event. |
current_status | string | No | Loan status after the change. |
parent_loan_id | integer | Yes | Parent loan identifier for a restructured or replacement loan. |
Status values
ACTIVE, INACTIVE, CLOSED, AMENDED
Example
{
"loan_id": 98765,
"account_id": 12345,
"previous_status": null,
"current_status": "ACTIVE",
"parent_loan_id": null
}credit.instalment_repayment_status.change
credit.instalment_repayment_status.changeUse this event to track the status and payment dates of an individual scheduled instalment repayment.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
repayment_id | integer | No | Instalment repayment identifier. |
loan_id | integer | No | Instalment loan identifier. |
account_id | integer | No | Credit account identifier. |
previous_status | string | Yes | Repayment status before the change. null for a repayment creation event. |
current_status | string | No | Repayment status after the change. |
payment_due_date | string, date | No | Scheduled payment due date. |
payment_date | string, date | Yes | Date on which the repayment was paid. |
Status values
PENDING, PARTIAL, PAID, OVERDUE, CHARGED, CANCELLED, TRANSFERRED, TERMINATED
Example
{
"repayment_id": 24680,
"loan_id": 98765,
"account_id": 12345,
"previous_status": "PENDING",
"current_status": "PAID",
"payment_due_date": "2026-10-15",
"payment_date": "2026-10-14"
}credit.repayment_status.change
credit.repayment_status.changeUse this event to track an overall account or statement repayment status. The amount fields describe how a received transaction was allocated across repayment buckets.
Payload fields
| Field | Type | Nullable | Description |
|---|---|---|---|
repayment_id | integer | No | Repayment identifier. |
account_id | integer | No | Credit account identifier. |
statement_id | integer | No | Billing statement identifier. |
previous_status | string | Yes | Repayment status before the change. null for a repayment creation event. |
current_status | string | No | Repayment status after the change. |
principal_paid_amount | number | No | Amount allocated to principal. |
fee_paid_amount | number | No | Amount allocated to fees. |
interest_paid_amount | number | No | Amount allocated to interest. |
repayment_amount | number | No | Total repayment amount. |
repayment_due_date | string, date | Yes | Repayment due date. |
settled_at | string, date | Yes | Settlement date. |
transaction_reference | string | Yes | Related transaction reference. |
transaction_identifier | string | Yes | Related external transaction identifier. |
parent_transaction_id | integer | Yes | Related parent transaction identifier, when applicable. |
Status values
IN_ARREARS, LATE_PAYMENT, MIN_REQUIRED, OVERDUE, OVERPAID, PENDING, REPAID_IN_FULL, REPAYMENT_DUE, STATEMENTED_REPAID
Example
{
"repayment_id": 24680,
"account_id": 12345,
"statement_id": 67890,
"previous_status": "REPAYMENT_DUE",
"current_status": "REPAID_IN_FULL",
"principal_paid_amount": 90.00,
"fee_paid_amount": 5.00,
"interest_paid_amount": 5.00,
"repayment_amount": 100.00,
"repayment_due_date": "2026-10-15",
"settled_at": "2026-10-14",
"transaction_reference": "transaction-ref-123",
"transaction_identifier": "external-transaction-456",
"parent_transaction_id": null
}Updated 1 day ago

