Settings - Money
Payment webhooks
Review Stripe webhook signature verification, event idempotency, receipt planning, and ledger posting for successful student payments.
Otto Fixture BPPE Career School - Stripe webhook proof
School Administrator ยท Sam Director
Stripe webhook intake
Signature, idempotency, receipt, and ledger proof
This page proves the server-side webhook contract for one successful test PaymentIntent. It verifies raw-body signatures, writes one tenant-scoped event row, skips duplicates, and plans the payment receipt plus balanced ledger journal.
payment_intent.succeeded
$325.00
Event: evt_test_payment_intent_succeeded_001
Local activation guard
Blocked until local webhook settings exist
Set OTTO_ENABLE_STRIPE_WEBHOOK_PROOF=true before accepting local Stripe webhook events.
STRIPE_WEBHOOK_SIGNING_SECRET is required.
Raw-body signature check
POST /api/v1/payments/stripe-webhooks
Header
Stripe-Signature
Secret
STRIPE_WEBHOOK_SIGNING_SECRET
Tolerance
300 seconds
Success event
payment_intent.succeeded
t=1791826200,v1=21d6628135efe8fcef779bf76b048d30a0c2dcefe4ee90cdb1eda590c4ff8fb4
{"id":"evt_test_payment_intent_succeeded_001","object":"event","account":"acct_test_bppe_career_001","api_version":"2025-06-30.basil","created":1791826200,"livemode":false,"type":"payment_intent.succeeded","data":{"object":{"id":"pi_test_maya_october_installment","object":"payment_intent","amount":32500,"currency":"usd","status":"succeeded","latest_charge":"ch_test_maya_october_installment","payment_method_types":["card","us_bank_account"],"metadata":{"tenant_id":"tenant_bppe_career","student_id":"student_maya_rivera","enrollment_id":"enrollment_maya_mbc_2026","payment_option_id":"october-installment","installment_id":"installment-1","otto_fee_cents":"0","blocked_funds":"no_title_iv_credit_balance_or_loan_proceeds"}}}}Tenant event table
stripe_webhook_events
tenant_id
stripe_event_id
stripe_account_id
event_type
signature_verified
processing_status
idempotency_key
payment_id
ledger_journal_id
receipt_number
Stripe event ID
evt_test_payment_intent_succeeded_001
Connected account
acct_test_bppe_career_001
Processing status
processed
Idempotency key
stripe:event:evt_test_payment_intent_succeeded_001
Payment link
11111111-1111-4111-8111-111111111115
Ledger journal
00000000-0000-4000-8000-000000000001
Receipt and ledger
One payment, one balanced journal
Payment number
PAY-2026-0002
Receipt
RCT-2026-0002
Amount
$325.00
PaymentIntent
pi_test_maya_october_installment