Data flow
26 connections carry 20 named data items. Each side is declared in its own repository; this table is the only place they are read together.
Follow a data item
Connections
FromToViaDataDescription
Admin ConsoleCustomer Servicehttpdeclared inbound on Customer ServiceCustomerCorrects billing details by hand
Billing CronInvoice ServicehttpPOST /v1/invoices/{id}/finalizedeclared inbound on Invoice ServiceInvoiceFinalises invoices on a schedule
Billing WarehouseReporting Warehousefederated queryJournalEntryServes modelled billing tables to company reporting
Event BusLedger Serviceamqpdeclared inbound on Ledger Serviceinvoice.finalizedpayment.settledConverts billing events into journal entries
Event BusNotification Serviceamqpdeclared inbound on Notification Serviceinvoice.createdpayment.failedTurns billing events into customer messages
Event BusPayment Serviceamqpdeclared inbound on Payment Serviceinvoice.finalizedSchedules collection when an invoice is finalised
Invoice ServiceCustomer ServicehttpGET /v1/customers/{id}CustomerReads billing details when composing an invoice
Invoicing JobNotification ServicehttpPOST /v1/notifyInvoiceDocumentAsks for the invoice email once the document exists
Notification ServiceCustomer WebhookshttpsWebhookDeliveryDelivers signed events to customer endpoints
Payment ServiceEvent Busamqppayment.settledpayment.failedPublishes the outcome of each collection attempt
Payment ServicePayment ProviderhttpsPOST /chargesChargeRequestChargeResultCaptures card payments with an idempotency key
Payment ServicePostgres · paymentspostgresPaymentAttemptSettlementPersists attempts and settlement records
Data items
ItemOnComponents
Customer4Admin Console, API Gateway, Customer Service, Invoice Service, Postgres · customers
Invoice4API Gateway, Billing Cron, Invoice Service, Invoicing Job, Postgres · invoices
invoice.finalized3Event Bus, Invoice Service, Ledger Service, Payment Service
JournalEntry3Billing Warehouse, Ledger Service, Postgres · ledger, Reporting Warehouse
LineItem3API Gateway, Invoice Service, Invoicing Job, Postgres · invoices
invoice.created2Event Bus, Invoice Service, Notification Service
InvoiceDocument2S3 · invoice documents, Invoicing Job, Notification Service
payment.failed2Event Bus, Notification Service, Payment Service
payment.settled2Event Bus, Ledger Service, Payment Service
PaymentAttempt2API Gateway, Payment Service, Postgres · payments
BillingAddress1Customer Service, Postgres · customers
ChargeRequest1Payment Service, Payment Provider
ChargeResult1Payment Service, Payment Provider
customer.updated1Customer Service, Event Bus
DeliveryTask1Notification Service, Redis · queue
EmailMessage1Email Provider, Notification Service
Settlement1Payment Service, Postgres · payments
TaxId1Customer Service, Postgres · customers
TaxRate1Invoice Service, tax-rates
WebhookDelivery1Customer Webhooks, Notification Service
Every name declared in a data field, and the connections it appears on. Names are matched exactly across repositories, so a name spelled two ways counts twice.