Invoice Events#
CasaPay sends webhook events for invoice lifecycle changes.
Event Types#
| Event | Description |
|---|---|
invoice.created | A new invoice was created |
invoice.finalized | An invoice was finalized and is ready for payment |
invoice.sent | An invoice was sent to the customer |
invoice.paid | An invoice was paid in full |
invoice.payment_failed | A payment attempt on the invoice failed |
invoice.voided | An invoice was voided |
invoice.marked_uncollectible | An invoice was marked as uncollectible |
invoice.updated | An invoice was updated |
credit_note.created | A credit note was issued |
credit_note.voided | A credit note was voided |
Event Object#
{
"id": "evt_inv_abc123",
"object": "event",
"type": "invoice.paid",
"data": {
"object": {
"id": "inv_abc123",
"object": "invoice",
"customer": "cus_123456789",
"status": "paid",
"amount_due": 125000,
"amount_paid": 125000,
"currency": "eur",
"paid_at": 1706400000
}
},
"created": 1706400000
}Handling Invoice Events#
app.post('/webhooks/casapay', async (req, res) => {
const event = req.body;
switch (event.type) {
case 'invoice.paid':
await recordPayment(event.data.object);
break;
case 'invoice.payment_failed':
await sendPaymentReminder(event.data.object);
break;
case 'invoice.marked_uncollectible':
// Consider initiating debt collection
await initiateCollection(event.data.object);
break;
}
res.status(200).send();
});