---
title: "Showing only paid entries: filtering a View by payment status"
date: 2026-07-24
author: "Block MCP (service account)"
link: "https://www.gravitykit.com/docs/gravityview-pro/advanced-filter/filtering-a-view-by-payment-status/"
---

This functionality requires the [Advanced Filter](https://www.gravitykit.com/products/advanced-filter/) Extension, which is included in GravityView Pro and All Access licenses. [Learn how to install this extension](https://www.gravitykit.com/docs/general-help/downloads/installing-activating-and-updating-gravitykit-plugins/).

If your form takes payment, Gravity Forms records a payment status on every entry. The Advanced Filtering extension can filter on that status directly, so a View can show only the entries that were actually paid for.

This is how you build a paid directory, a paid job board, or a members-only listing where an entry disappears on its own when the customer stops paying. No code required.

## What you can filter on

Edit your View and open the **Settings** panel. Click the **Filter & Sort** tab, then click **Add Condition** under **Advanced Filter**. In the field dropdown, these payment properties are listed under **Entry Properties**:

| Filter | Operators | Value |
|---|---|---|
| **Payment Status** | is, is not | A dropdown of the statuses below |
| **Payment Amount** | is, is not, greater than, less than, contains, does not contain, is empty, is not empty | Free text |
| **Payment Date** | is on, is not on, is after, is before, is empty, is not empty | Today, Yesterday, Tomorrow, or a custom date |
| **Transaction ID** | is, is not, greater than, less than, contains, does not contain, is empty, is not empty | Free text |

**Payment Status** offers these values: `Authorized`, `Paid`, `Processing`, `Failed`, `Active`, `Cancelled`, `Pending`, `Refunded`, and `Voided`.

`Paid` is the status for a one-time payment. `Active` and `Cancelled` are the subscription statuses.

## Show only entries that were paid for

- Edit your View.
- Open the **Settings** panel and click the **Filter & Sort** tab.
- Click **Add Condition** under **Advanced Filter**, then set the condition to **Payment Status** **is** **Paid** (Payment Status is under **Entry Properties** in the field dropdown).
- Update the View.

Entries whose payment failed, is still processing, or was refunded no longer appear.

## Show only listings with an active subscription

This is the setup for a directory that charges a recurring fee. When a subscription is cancelled or fails, Gravity Forms updates the entry's payment status, and the listing drops out of the View by itself.

- Edit your View.
- Open the **Settings** panel, click the **Filter & Sort** tab, then click **Add Condition** under **Advanced Filter**.
- Set the condition to **Payment Status** is **Active**, then update the View.

The Gravity Forms payment add-on has to be the one managing the subscription for the status to stay current. Gravity Forms updates the entry when the payment gateway reports a change. Payments recorded manually, or collected outside Gravity Forms, will not update on their own.

## Accept both one-time and subscription payments

Add the first condition, click **+ CONDITION** to add a second, then set the group toggle to **OR**:

- **Payment Status** is **Paid**
- **Payment Status** is **Active**

## Show a "renew now" button instead of hiding the entry

Filtering removes the entry entirely. If you would rather keep the listing visible and prompt the owner to pay, use the `[gvlogic]` shortcode in a Custom Content field instead:

```
[gvlogic if="{payment_status}" is="Paid"]
  Your listing is active. Thanks!
[else]
  Renew your listing
[/gvlogic]
```

`{payment_status}` is a standard Gravity Forms merge tag, so it works anywhere merge tags do.

Not sure which tool to reach for? See [When to use Advanced Filtering vs Field Conditional Logic vs gvlogic](https://www.gravitykit.com/docs/gravityview/advanced/when-to-use-advanced-filtering-vs-field-conditional-logic-vs-gvlogic/).

## Combining with an expiry date

Payment status answers "did they pay?" It does not answer "was it recent enough?" For listings that lapse after a fixed period regardless of payment, combine the payment filter with a date filter. See [Making entries expire after a certain amount of time](https://www.gravitykit.com/docs/gravityview/filter-and-sort-results/making-entries-expire-after-a-certain-amount-of-time/).

A common paid-directory setup uses both conditions together:

- **Payment Status** is **Paid**
- **Payment Date** **is after** a custom date one year ago

## Common problems

### "No entries match your request" after adding the filter

Check the actual status on the entry in Gravity Forms (**Forms**, then **Entries**, then open the entry and look at Payment Details). Stripe Checkout in particular leaves entries at `Processing` when the visitor closes the payment window before returning to the site. If most of your entries are `Processing` rather than `Paid`, that is a gateway configuration issue rather than a filter issue.

### The filter works, but a cancelled subscriber is still visible

Confirm the subscription is cancelled in the payment gateway, not just in your own records, and that the Gravity Forms payment add-on is connected. The entry status only changes when the gateway notifies Gravity Forms.

### Entries paid by check or cash have no payment status

Entries created without a payment feed have an empty payment status, so an **is Paid** filter will exclude them. Either set the payment status on those entries manually in Gravity Forms, or add a second condition on your own “payment method” field with the group toggle set to **OR**.