#webhook #bank #monzo

monzo-webhook

Serde-compatible structs containing the data from a Monzo bank webhook

5 releases (3 breaking)

Uses new Rust 2024

0.4.0 Jan 11, 2026
0.3.0 Jan 11, 2026
0.2.0 Jan 9, 2026
0.1.1 Jan 4, 2026
0.1.0 Jan 4, 2026

#132 in Finance

28 downloads per month

MIT license

22KB
475 lines

Monzo Webhook

Serde-compatible structs containing the data from a Monzo bank webhook.

For examples of what different webhooks look like, see src/tests.txt.

Usage

When implemented a receiver for a Monzo bank webhook, you can use these structs. For example, with axum:

async fn test_webhook_parse(Json(data): Json<monzo_webhook::Webhook>) -> String {
    format!("{data:#?}")
}

Testing

This has been tested against the following types of transactions:

  • Faster Payments in- and outbound
  • Monzo-to-Monzo transactions
  • Pot and Account Deposits and Withdrawals
  • Contactless purchases
  • Online purchases

This needs confirmation that it works with:

  • ATM withdrawals
  • ATM deposits
  • Deposits
  • Cheques
  • Online refunds
  • Chip & PIN purchases
  • Chip & PIN refunds
  • Contactless refunds
  • Direct Debits
  • Standing Orders
  • BACS Credits
  • BACS Debits
  • CHAPS Transfers
  • International Transfers via Swift
  • Fees and Charges
  • Interest Paid
  • Interest Earned

If you have any JSON webhook payloads of these types of transactions, I would appreciate seeing them. You are recommended to scrub any sensitive data or ID numbers first, then please open an issue.

Dependencies

~1.2–2.2MB
~40K SLoC