Payment logs lets the tenant administrator see every webhook the till received and every call the till made to a payment gateway for THIS account. Use it to debug a payment that hasn't confirmed, to verify a charge actually landed, or to share evidence with provider support when something looks wrong on their side.
Open it from the topbar — green shield icon, only visible to users with the System Access permission.
What it shows
Two tabs, scoped to YOUR account only — you cannot see other tenants' payments, and other tenants cannot see yours.
Inbound webhooks
Each time Paystack / Stripe / Flutterwave pushed a webhook to BusinessSensor for one of your transactions, you see one row here.
- Received — when the webhook landed.
- Provider / Reference — gateway + the
acct-…reference that ties it back to a till payment. - Amount — what the gateway says was paid.
- Status:
- Processed — applied to the matching till intent successfully.
- Skipped — a duplicate redelivery; the original was already processed.
- Failed — see the Error column. Common reasons: amount mismatch, expired/wrong signature, tenant subdomain missing.
- Replayed — a BusinessSensor super-admin re-ran a stuck row for you.
- Sig — green shield = the gateway's signature verified; red = it didn't.
- Outcome — Success / Failure / Cancelled / Pending mapped from the gateway's event type.
Click any row for the full raw payload + signature header + linked intent.
Outbound API calls
Each time the till started a charge or verified one with the gateway, you see one row here.
- Operation —
InitializeTransaction(starting a charge),ChargeBankTransfer(bank-transfer flow),Verify(defensive double-check). - Reference — same
acct-…string as the matching Inbound row. - HTTP status / Latency / OK — what the gateway returned. OK = no with HTTP 200 means the gateway accepted the request but rejected the business operation (e.g. "Insufficient funds").
- Error — exception message if the call timed out before completing.
Click any row for the full request body (sensitive fields like
secret_key and cvv are automatically removed before storage) and the
gateway's response body.
How to use it for common problems
A customer says "I paid but the receipt shows Pending"
- Inbound tab → filter to the right Provider → search for the reference
the cashier sees in the payment dialog (it starts with
acct-). - No row → the gateway hasn't sent the webhook yet. Wait 30 seconds and refresh; if still nothing, the gateway is delayed (rare; defensive verify usually catches it after 10s).
- Failed row → click in. Common reasons:
- "Reported amount … != expected …" — the gateway saw a different amount than we sent. Usually means the customer paid the wrong amount, or the gateway converted to a different currency. Call your gateway support.
- "Signature did not verify" — the gateway's webhook secret has rotated and BusinessSensor's copy is stale. Contact BusinessSensor support.
- Processed row but receipt still Pending → the cashier needs to refresh the till; the receipt poll-loop updates every 10s.
You want to confirm a refund actually went through
Outbound tab → filter Operation = Refund (when wired) → find the row
for the original reference. HTTP 200 + OK = yes; check the response body
for the gateway's refund ID.
Verify a specific charge landed at the right amount
- Outbound tab → find the
InitializeTransactionrow for the reference. The Request body shows what BusinessSensor sent (amount, currency). - Inbound tab → find the matching Processed row. The "Reported amount" column shows what the gateway actually charged.
- The two should always match. If not, that intent's row would already be Failed with an amount-mismatch error.
Common problems
- The page is empty → no webhook traffic for this account yet. Once a cashless payment runs at the till, it shows up here within 15 seconds.
- You can't see the topbar icon → you don't have the System Access permission. Ask your account administrator to grant it to your user group via Setup → Users.
- "You don't have permission to view this page" → server-side gate rejected your request. Same fix as above — System Access is required.
What's NOT here
This page only shows YOUR account's payment activity. BusinessSensor's
operations team has a broader view (/admin/payment-logs) that also
covers cross-app router-side traffic, which isn't meaningful for a single
tenant. If you suspect a gateway-wide problem affecting more than your
account, contact BusinessSensor support and they can investigate from
that broader view.