Available Events
account.incoming-transaction
This event is triggered when an incoming transaction is received in your account, such as when a customer makes a payment to your collection account.
Use this event to automatically process incoming payments, update account balances, or trigger downstream business logic.
Payload Structure
Key Fields
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier |
data.id | string | Unique transaction identifier |
data.amount | float | Transaction amount in specified currency |
data.currency | string | Currency code (NGN) |
data.transactionType | string | Type of transaction (CREDIT for incoming) |
data.entryDate | datetime | ISO 8601 timestamp of transaction |
data.uniqueRef | string | Unique reference for the transaction |
data.account | object | Account details where transaction occurred |
data.beneficiary | object | Recipient account information (your Carbon account) |
data.beneficiary.accountName | string | Name of the receiving account holder |
data.beneficiary.accountNumber | string | Receiving account number |
data.beneficiary.bankName | string | Name of the receiving bank |
data.sender | object | Sender account information (external sender) |
data.sender.accountName | string | Name of the sender account holder |
data.sender.accountNumber | string | Sender’s account number |
data.sender.bankName | string | Name of the sender’s bank |
data.transactionDetails | object | Additional transaction information |
data.transactionDetails.remark | string | Transaction description or note |
account.outgoing-transaction
This event is triggered when an outgoing transaction is made from your account, such as when you process a payout to a beneficiary.
Use this event to track payout completions, update transaction records, or notify users about successful transfers.
Payload Structure
Key Fields
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier |
data.id | string | Unique transaction identifier |
data.amount | float | Transaction amount in specified currency |
data.currency | string | Currency code (NGN) |
data.transactionType | string | Type of transaction (DEBIT for outgoing) |
data.entryDate | datetime | ISO 8601 timestamp of transaction |
data.uniqueRef | string | Reference used in the original payout request |
data.account | object | Source account details for the transaction |
data.beneficiary | object | Recipient account information |
data.beneficiary.accountName | string | Name of the beneficiary account holder |
data.beneficiary.accountNumber | string | Beneficiary’s account number |
data.beneficiary.bankName | string | Name of the beneficiary’s bank |
data.sender | object | Sender account information |
data.sender.accountName | string | Name of the sender account holder |
data.sender.accountNumber | string | Sender’s account number |
data.sender.bankName | string | Name of the sender’s bank |
data.transactionDetails | object | Additional transaction information |
data.transactionDetails.remark | string | Transaction description or note |
Loan Events
Carbon fires the following events throughout the loan lifecycle. Subscribe to these to track application progress and drive your customer-facing UI.loan.application.received
Fired when a loan application is successfully submitted.
Payload Structure
loan.kyc.pending
Fired when KYC verification is initiated for a loan application.
Payload Structure
loan.offer.generated
Fired when underwriting completes and an offer is ready for the customer.
Payload Structure
loan.offer.accepted
Fired when the customer accepts the loan offer.
Payload Structure
loan.offer.declined
Fired when the customer declines the loan offer.
Payload Structure
loan.offer.expired
Fired when a loan offer expires without the customer taking action.
Payload Structure
loan.application.declined
Fired when the application is rejected by the credit decisioning engine.
Payload Structure
loan.application.approved
Fired when the loan is approved for disbursement by a Carbon admin.
Payload Structure
loan.disbursed
Fired when loan funds are disbursed to the customer’s account. The loan_id field becomes available after this event — use it for repayment routes.
Payload Structure
loan.arrears
Fired when a loan becomes overdue.
Payload Structure
loan.closed
Fired when the loan is fully repaid.
Payload Structure
loan.repayment.successful
Fired when a repayment charge succeeds.
Payload Structure
loan.repayment.failed
Fired when a repayment charge attempt fails.
Payload Structure
loan.repayment.due
Fired 3 days before a repayment due date as a reminder.
Payload Structure
Implementation Notes
Event Processing
Event Processing
Always respond with a 2xx status code to acknowledge receipt. Carbon will retry delivery if no acknowledgment is received.
Idempotency
Idempotency
Use the
data.id field to handle duplicate events gracefully. The same transaction may trigger multiple webhook deliveries.Signature Verification
Signature Verification