# Mercado Pago webhook replay notes Date: 2026-04-23 ## What was tried - Replayed real Ballbox Mercado Pago webhook payloads against `https://ballbox.app/notification/mercadopago`. - Tested these order ids from prior prod logs: - `ORD01KPV95KCFED46SQ2J23C8JR75` - `ORD01KPV68YK3W6HPH29ZK6ZY58G8` ## Result - Both replays returned `202 Accepted`. - Ballbox ignored both because Mercado Pago order fetch returned the orders as expired: - `MERCADOPAGO_ORDER_NOT_APPROVED_expired` ## Meaning - The webhook endpoint is live. - Order fetch works. - Persist-only-on-approved logic is working. - These specific replay ids are no longer useful for persistence validation because the orders expired in Mercado Pago. ## Current blocker - Need either: - a fresh approved `order.processed` id still valid in Mercado Pago, or - a real buyer-side payment to create a new approved order. ## Recommended next step - Keep the webhook path as-is. - When resuming, use a fresh approved order id from a recent live payment or the buyer app flow. ## Production order-create blocker (2026-05-05) - Attempted a new production QR order create against `https://ballbox.app/api/integrations/payments/orders` before the real buyer-payment step. - Result: Ballbox returned provider failure details from Mercado Pago: - HTTP `400` - code: `unsupported_properties` - details: `additionalProperties '$.notification_url' not allowed` - Meaning: - the Ballbox production account/API surface currently rejects the inline `notification_url` field used by the native order-create flow - `OPS-1` is blocked before payment approval, not at webhook persistence - Next unblock: - stop sending inline `notification_url` from Ballbox order-create - rely on the Mercado Pago account-level webhook configuration already associated with the production setup - then rerun `OPS-1` with a fresh real payment