If your server uses Discord's Onboarding, new members only see its default channels and the ones their onboarding answers add. Put the channel your offer card is in on that list, under Server Settings → Onboarding → Default Channels.
As the owner you see every channel in the server. A member who joined through Onboarding sees a shorter list: the default channels, plus the ones their answers to your onboarding questions added. A channel on neither list is still there, but nothing puts it in front of them.
The only way they reach it is by going looking, through Channels & Roles → Browse Channels. A card in a channel like that goes unseen by everyone who joins after it was posted.
Open Server Settings → Onboarding → Default Channels and tick the channel you ran /flatpass panel in. From then on, everyone who joins sees it in their channel list.
It can stay read-only. Discord only needs one of your default channels to be somewhere everyone can read and send messages, so a channel where only you and the card speak is fine. A private channel shows Unlock instead of a box: the card needs to be in a channel everyone can already see.
If the offer is only meant for some of your members, you can tie the channel to an answer in one of your onboarding questions instead, so only the people who pick that answer get it.
Default channels apply to people as they join. Anyone who was already in the server when you changed the list can still add the channel themselves through Channels & Roles → Browse Channels, so it is worth a line in your announcements telling them where it is.
Then this isn’t the cause. Check who the channel is visible to in its own permissions instead.
Ask in the flatpass Discord, or email support@flatpass.io. Both are read by the people who build it.