Ads Txt

ads.txt DIRECT vs RESELLER: Why Mislabeling Costs You

DIRECT means you own the account. RESELLER means someone else does. Mislabeling either one causes sellers.json verification failures that silently cost you bids.

B
BeamFlow Team
BeamFlow Team
February 9, 2026
8 min read
ads.txt DIRECT vs RESELLER: Why Mislabeling Costs You

Key Takeaways

  • DIRECT means you hold the account on that exchange. The money flows from the SSP to you (or your parent company) with no intermediary in the middle.
  • RESELLER means another entity holds the account. They're authorized to resell your inventory through that exchange on your behalf.
  • DSPs treat DIRECT and RESELLER entries differently. Some buyers filter out RESELLER paths entirely, only bidding on DIRECT inventory for cleaner supply chains.
  • Mislabeling DIRECT as RESELLER costs you premium bids. DSPs that prefer direct supply paths will skip your inventory even though you have the direct relationship.
  • Mislabeling RESELLER as DIRECT causes verification failures. When a DSP cross-checks your ads.txt against the SSP's sellers.json, the seller types won't match, and the bid gets rejected.
  • 24% of ads.txt entries fail sellers.json cross-verification. Based on BeamFlow's analysis of 120K+ publisher domains, relationship type mismatches are one of the top causes.

ads.txt DIRECT vs RESELLER: Why Mislabeling Costs You

Every line in your ads.txt file declares a relationship type. DIRECT or RESELLER. Two words. And getting them wrong silently blocks bids you'll never know about.

Here's the thing most publishers miss: the DIRECT/RESELLER label isn't just metadata. DSPs use it to verify your supply chain against the SSP's sellers.json file. When your ads.txt says DIRECT but the SSP's sellers.json shows that account belongs to an intermediary, the verification fails. The DSP moves on. No bid, no revenue, no error message.

We've cross-referenced over 120K+ publisher domains against 2,000+ sellers.json files. Relationship type mismatches consistently show up as one of the top verification failure categories. Some publishers have dozens of lines labeled wrong, each one a bid they're silently losing.

This guide breaks down exactly what DIRECT and RESELLER mean, how DSPs verify each one, what happens when you get it wrong, and how to audit your own file.

What DIRECT Actually Means (And Doesn't Mean)

DIRECT means you, the publisher, hold the account on that advertising system. You signed the contract. You receive the payments. The exchange has your domain registered under that account ID.

text
google.com, pub-1234567890, DIRECT, f08c47fec0942fa0

This line says: "We have a direct account with Google (pub-1234567890). Google pays us. We own this relationship."

A lot of publishers assume DIRECT just means "we work with them directly." That's close, but the IAB Tech Lab specification is more precise. DIRECT means the publisher listed in the ads.txt file "directly controls the account indicated" on that exchange. You control the account. Not your monetization partner. Not your ad network. You.

Here's where it gets specific. If you use a monetization partner who manages your Google Ad Manager account but the account is still in your name and you receive payments from Google, that's DIRECT. If the monetization partner holds the Google account under their own company and you receive payments from the partner (not from Google), that's RESELLER.

The payment flow determines the label. Not the business relationship.

What RESELLER Actually Means

RESELLER means another company holds the account on that exchange, and they're authorized to sell your inventory through it.

text
indexexchange.com, 186046, RESELLER, 50b1c356f2c5c8fc

This line says: "We've authorized someone who holds account 186046 on Index Exchange to resell our inventory. We don't hold this account ourselves."

RESELLER entries are completely normal and expected. They show up when:

  • An ad network aggregates your inventory with other publishers and sells it through their exchange account
  • A header bidding wrapper provider has their own SSP relationships that include your traffic
  • A managed service partner holds exchange accounts on behalf of multiple publishers
  • A content monetization platform runs your programmatic stack through their accounts

The key distinction: with RESELLER, the money flows from the exchange to the reseller, then from the reseller to you. There's an intermediary in the payment chain.

How DSPs Verify DIRECT vs RESELLER Against sellers.json

This is where most publishers don't realize what's happening behind the scenes.

When a DSP receives a bid request, it doesn't just check if the SSP appears in your ads.txt. It runs a multi-step verification:

  1. DSP receives bid request from SSP X for your domain, account ID 12345
  2. DSP checks your ads.txt for a matching line (SSP X domain, account 12345)
  3. DSP notes whether you labeled it DIRECT or RESELLER
  4. DSP pulls SSP X's sellers.json file and finds account 12345
  5. DSP checks the seller_type field: is it "PUBLISHER" or "INTERMEDIARY"?
  6. DSP checks the domain field: does it match your domain?

If your ads.txt says DIRECT, the DSP expects sellers.json to show that account with seller_type: "PUBLISHER" and your domain listed. If sellers.json shows seller_type: "INTERMEDIARY" or a different domain, the verification breaks.

The same works in reverse. If your ads.txt says RESELLER but sellers.json shows that account as a direct publisher account for your domain, something doesn't add up.

Google's Display & Video 360 documentation explicitly states that authorized seller declarations are used to protect buyers from misrepresented inventory. DSPs that invest in supply path optimization take these mismatches seriously.

What Happens When You Mislabel DIRECT as RESELLER

This one's subtle but expensive.

When you label a DIRECT relationship as RESELLER, you're telling DSPs: "We don't hold this account. Someone else does." But you actually do hold it. The verification against sellers.json might still pass (the SSP's file will show your domain), but you've signaled to buyers that there's an intermediary involved.

The revenue impact:

  • Some DSPs filter RESELLER entries entirely. They only bid on DIRECT paths for cleaner supply chains. By mislabeling, you've excluded yourself from these buyers
  • SPO algorithms deprioritize RESELLER paths. DSPs running supply path optimization prefer shorter paths. DIRECT is one hop. RESELLER implies at least two. Your bid requests go to the back of the line
  • You create phantom intermediaries. The DSP thinks there's a middleman between you and the exchange when there isn't one. This hurts your supply chain score without any actual intermediary existing

A publisher with 15 SSP relationships who mislabels 3 of them as RESELLER instead of DIRECT might not notice the difference in aggregate CPMs. But those 3 channels are running at reduced demand compared to what they could be. Multiply that across months and it adds up.

What Happens When You Mislabel RESELLER as DIRECT

This one's worse because it triggers hard verification failures.

When you label a RESELLER relationship as DIRECT, you're claiming you hold the account. The DSP checks sellers.json and finds that account 12345 on that exchange belongs to a different company (your actual reseller). Your domain isn't the listed seller. The domain mismatch or seller_type mismatch causes verification to fail.

The result:

  • Hard bid rejection. The DSP can't verify your claim, so it rejects the bid request outright
  • Auction duplication. DataBeat's 2025 SSP sellers reports found that established SSPs frequently appear with both DIRECT and RESELLER entries on the same domain. When the DIRECT label is wrong, it creates duplicate auction paths that confuse DSP algorithms
  • Trust score damage. DSPs that score publisher supply chains will lower your trust rating when verification fails. This affects future bid rates across all your SSP relationships, not just the mislabeled one
  • Permanent silent loss. Unlike a 404 on your ads.txt file (which DSPs might retry), a verification mismatch is a quiet classification. The DSP just... doesn't bid. There's no alert, no email, no log entry in your ad server

This is the mislabeling direction that costs real money. And it's remarkably common.

The sellers.json Connection Most Publishers Overlook

Your ads.txt file doesn't exist in isolation. Every DIRECT and RESELLER claim you make gets cross-referenced against the SSP's sellers.json.

Here's a quick comparison of how the two files should align:

Your ads.txt says | SSP's sellers.json should show

DIRECT | seller_type: "PUBLISHER", domain: yourdomain.com

RESELLER | seller_type: "INTERMEDIARY" or seller_type: "PUBLISHER" with the reseller's domain

When BeamFlow cross-references ads.txt entries against sellers.json, 24% of entries fail verification. A significant chunk of those failures are relationship type mismatches. The publisher says DIRECT, but the SSP's sellers.json tells a different story.

And here's what makes it tricky: SSPs update their sellers.json independently. Your ads.txt might have been correct when you set it up. But if the SSP reclassified your account from PUBLISHER to INTERMEDIARY (or changed the domain field), your DIRECT label is now wrong. You had no idea they made the change.

This is why one-time setup isn't enough. The ecosystem moves under you.

How to Audit Your DIRECT vs RESELLER Labels

Step 1: List every SSP relationship you have. Log into each exchange, ad network, and monetization platform. Note the account ID they assigned you.

Step 2: Determine who actually holds each account. Ask yourself: "If this SSP sends me a payment, does it come directly from the SSP to my company? Or does it go through a partner first?"

  • Direct payment from SSP = DIRECT
  • Payment through a partner = RESELLER

Step 3: Check the SSP's sellers.json for your account. Visit [ssp-domain]/sellers.json and search for your account ID. Verify that:

  • The seller_type matches your ads.txt label
  • The domain field matches your domain (for DIRECT entries)
  • The entry actually exists (some SSPs have incomplete sellers.json files)

Step 4: Fix mismatches immediately. Every day a mislabeled line stays in your ads.txt, you're losing bids on that channel. Update your file and re-verify.

Step 5: Set up monitoring. SSPs change their sellers.json without notifying you. A label that was correct last month might be wrong today. Continuous monitoring catches these shifts before they cost you weeks of lost demand.

Common Scenarios That Confuse Publishers

Not every situation is straightforward. Here are the edge cases we see most often:

Monetization partner manages your account

If your monetization partner manages your Google Ad Manager but the GAM account is registered to your company and Google pays you directly, that's DIRECT. The partner is managing, not reselling.

Header bidding wrapper adds SSP connections

If your header bidding setup connects you to SSPs through the wrapper provider's accounts, those are RESELLER entries. The wrapper provider holds the accounts, not you.

SSP acquired another SSP

Your ads.txt has a DIRECT entry for SSP-A. SSP-A gets acquired by SSP-B. Your line might still work, but the exchange domain and sellers.json could change. Verify after any SSP merger or acquisition.

You're listed as both DIRECT and RESELLER for the same SSP

This happens when you have your own account (DIRECT) and a monetization partner also has an account that includes your inventory (RESELLER). Both lines can coexist. They represent different supply paths to different inventory pools. Just make sure both entries actually verify against the respective sellers.json entries.

Frequently Asked Questions

Can I have both DIRECT and RESELLER entries for the same SSP?

Yes. This is common and legitimate. You might hold your own account on an exchange (DIRECT) while an ad network also sells your inventory through their account on the same exchange (RESELLER). Both entries can coexist as long as each one verifies correctly against the SSP's sellers.json.

Do DSPs really filter out RESELLER entries?

Some do. Blockthrough's research and discussions in the ad ops community confirm that certain DSPs prioritize or exclusively bid on DIRECT entries as part of their SPO strategy. The trend is growing as buyers consolidate supply paths.

How do I find out if an entry is mislabeled?

Cross-reference your ads.txt against the SSP's sellers.json file. For DIRECT entries, verify the seller_type is "PUBLISHER" and the domain matches yours. For RESELLER entries, confirm the account belongs to your authorized reseller. Or run a free scan on BeamFlow to see the verification status of every line.

What if the SSP doesn't have a sellers.json file?

Without a sellers.json, DSPs can't fully verify your ads.txt entries for that SSP. This hurts verification scores for both DIRECT and RESELLER lines. Some DSPs will still bid, but with lower confidence. Others skip unverifiable paths entirely. If your SSP doesn't maintain sellers.json, that's a conversation worth having with your account rep.

Does the TAG-ID field matter for DIRECT vs RESELLER?

The TAG-ID (fourth field) is the SSP's Trustworthy Accountability Group certification ID. It doesn't change based on whether the relationship is DIRECT or RESELLER. It should be the same for all entries referencing that SSP, regardless of relationship type. A wrong TAG-ID is a separate verification issue.

How often should I re-verify my relationship labels?

Every time you add or remove an SSP. Every time a monetization partner changes. And at least monthly as a baseline, because SSPs update their sellers.json without telling you. The ecosystem shifts constantly. What was correct 60 days ago might not be today.

Summary: ads.txt DIRECT vs RESELLER

Core definitions

  • DIRECT = You (the publisher) control the account on the SSP/exchange and get paid directly by that SSP.
  • RESELLER = Another company controls the account and is authorized to sell your inventory; you get paid by that company, not the SSP.

Why it matters

  • DSPs cross-check your ads.txt against each SSP’s sellers.json.
  • They compare:
  • SSP domain + account ID
  • Your DIRECT/RESELLER label
  • seller_type (PUBLISHER vs INTERMEDIARY) and domain in sellers.json.
  • Mismatches cause:
  • Soft loss: Mislabeling DIRECT as RESELLER → fewer premium bids, lower SPO priority.
  • Hard loss: Mislabeling RESELLER as DIRECT → verification failures, bids rejected outright.

Key impacts of mislabeling

  • DIRECT → RESELLER (too conservative)
  • Some DSPs filter out or deprioritize RESELLER paths.
  • You appear to have an unnecessary intermediary.
  • Reduced demand and CPMs on those lines.
  • RESELLER → DIRECT (too aggressive)
  • DSP sees your claim as direct, but sellers.json shows the account belongs to a different company.
  • Domain or seller_type mismatch → bid rejected.
  • Creates duplicate/ambiguous paths and hurts trust scores.

Scale of the problem

  • BeamFlow’s analysis of 120K+ domains vs 2,000+ sellers.json files shows ~24% of ads.txt entries fail cross-verification, with relationship-type mismatches as a major cause.

How to label correctly

  • Payment rule:
  • Paid by SSP directlyDIRECT.
  • Paid via a partner/intermediaryRESELLER.

Common scenarios

  • Partner manages your GAM account, but it’s in your name and Google pays you → DIRECT.
  • Header bidding wrapper or network uses their own SSP accounts → RESELLER.
  • You have your own SSP account and a partner also sells you on the same SSP → both DIRECT (your account) and RESELLER (partner’s account) can coexist.

How to audit your ads.txt

  1. Inventory all SSP/partner relationships and note account IDs.
  2. Trace payment flow for each:
  • SSP → you = DIRECT
  • SSP → partner → you = RESELLER
  1. Check each SSP’s sellers.json:
  • DIRECT: seller_type = "PUBLISHER" and domain = yourdomain.com.
  • RESELLER: account belongs to your partner (often seller_type = "INTERMEDIARY" or PUBLISHER with partner’s domain).
  1. Fix any mismatches in ads.txt immediately.
  2. Re-verify regularly (at least monthly) because SSPs update sellers.json without notice.

Bottom line

  • DIRECT/RESELLER is not cosmetic; it’s a critical signal for DSP verification and SPO.
  • Mislabeling DIRECT as RESELLER quietly reduces demand.
  • Mislabeling RESELLER as DIRECT causes outright bid loss.
  • Continuous cross-checking against sellers.json is essential to protect revenue.

Use a recurring monthly check (manual or via a tool like BeamFlow) to compare every ads.txt line against the corresponding SSP’s sellers.json. Treat any DIRECT/RESELLER mismatch as an urgent revenue bug.

text
Example of correct labeling: # Direct relationship (you hold the account, SSP pays you) google.com, pub-1234567890, DIRECT, f08c47fec0942fa0 # Reseller relationship (partner holds the account, SSP pays partner) indexexchange.com, 186046, RESELLER, 50b1c356f2c5c8fc

Ready to optimize your ads.txt?

Check your domain's supply chain health instantly, free.

Check Your Domain Free