---
title: "Resolve a payment with an unknown outcome"
description: "Settle an online payment the processor has not confirmed after 15 minutes, read payment events, and fix a provider whose updates are refused."
url: "https://support.outpostplatform.com/client-payments/unknown-outcomes/"
product: "depot"
type: "troubleshooting"
status: "draft"
ai_summary: "MSP plan. Outpost never re-charges to learn an outcome; it asks the processor again every 15 minutes. After 15 minutes, Resolve (psa:payments) records what the processor's dashboard shows, after one more check where a definite processor answer wins. QuickBooks timeouts always need this. Payment events lists webhook deliveries. A missing webhook secret means updates are refused."
availability:
  plans: ["msp"]
  permission: "psa:payments"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/client-payments/unknown-outcomes.md"
license: "CC BY 4.0"
---

# Resolve a payment with an unknown outcome

Outpost never charges twice to find out whether a payment worked. When a
processor does not answer, the attempt stays in progress and Outpost keeps
asking the processor about it. This page covers what to do when an attempt
stays unconfirmed, and how to check the updates processors send.

## A payment shows No answer from the processor yet

**What it means.** Outpost sent the charge and the processor's answer did not
arrive, for example because the connection dropped. The money may or may not
have moved. Outpost asks the processor about the attempt again every 15
minutes, and most attempts settle on their own.

**What to do.**

1. Wait at least 15 minutes after the attempt started.
2. Look the payment up in the processor's dashboard.
3. If it is still unconfirmed in Outpost, select **Resolve** on the attempt.
4. Under **What the processor shows**, choose **It was paid. Record the
   payment on this invoice.** or **It did not go through. Mark this attempt
   failed.**
5. In **Note**, say what you checked. The note is kept in the audit log.
6. Select **Resolve**.

Outpost asks the processor once more before taking your word. If the
processor now gives a definite answer, that answer is applied instead of
yours, and the console shows what was applied.

Resolving needs `psa:payments`.

:::note
QuickBooks Payments cannot be asked about a payment by its reference. An
attempt that timed out on a QuickBooks provider always needs resolving by hand.
:::

## A provider shows No webhook secret is stored

**What it means.** The processor's updates are refused, because Outpost cannot
check their signature. Payments still settle when Outpost asks the processor
on its own, but later than they would otherwise.

**What to do.** Copy the signing secret from the processor's webhook settings
into the provider. See
[Send payment updates to Outpost](/client-payments/connect-a-provider/#send-payment-updates-to-outpost).

## Check the updates a processor sent

**Client billing** > **Payment events** lists the updates processors have sent
to Outpost. Narrow it by **Provider** and **State**. A failed
event shows its last error. Reading it needs `psa:payments`.

Every update's signature is checked before anything is recorded. An update
only tells Outpost to ask the processor for the payment's current state, so a
repeated or replayed update changes nothing.

## A client paid twice

**What it means.** Money arrived after the invoice was already settled, for
example a pay link payment and a payment recorded by hand. Outpost records
money that arrives and never refuses it. The extra shows on the attempt as an
amount **over the balance, refund it**.

**What to do.** Refund the overpayment. See
[Refund a payment](/client-payments/refunds/).

## Related

- [Client payments](/client-payments/)
- [Send pay links and charge saved methods](/client-payments/pay-links/)
