Step-by-step guide

CardSwap tutorial

This page explains the full flow from account setup to imports, dashboard filters, matches, chat, and how pricing works behind the scenes.

Quick start

The shortest path from zero to your first trade

If you just want the fastest setup, follow these steps in order and then come back to the deeper sections when you need more detail.

1

Create your account and finish the setup wizard

You can register with email and password or go straight in with Google or Facebook. Email signups need confirmation, while social sign-ins can usually continue right away.

After your first sign-in, CardSwap walks you through the short wizard for country, shipping range, cross-game trades, and optionally your public profile. If Facebook does not share an email, CardSwap asks for it once and then continues immediately.

2

Import cards into offers or wishlist

In the import wizard, choose the game and target list first and then decide between single cards, a deck URL, or a pasted list. In the single-card search you can now also type a collector number such as "Lightning Bolt 332".

If a wishlist card can be any print, you can now turn on "Accept any edition" instead of adding every version by hand.

3

Review the dashboard, exports, and profile link

Then review your offers and wishlist in the dashboard, export your lists if needed, and enable your public profile link if you want to share your profile outside CardSwap as well.

4

Use Browse Offers, matches, and chat

If you still need ideas, start with Browse Offers, filter by game or card details, and push interesting prints straight into your wishlist. For actual reciprocal trades, switch to Matches and handle the rest in the built-in chat.

Useful shortcut: The import guide is hidden by default now to save space at the top of the page. You can reopen it anytime with the small guide button in the top navigation, and CardSwap remembers that choice on the same device.
Importing cards

Three import paths, one target list

The import page now runs as a four-step wizard: choose the game and target list, pick the import path, prepare the cards, and review the import settings before submit. All cards from that run go into either your offers or your wishlist together.

Magic still supports deck URLs and pasted lists. Pokemon and Yu-Gi-Oh! use the same wizard with the staging queue, search suggestions, images, and cached pricing. The compact guide for this flow is hidden by default and can be reopened with the guide button in the navigation.

Single cards and staged queue

Start with the card name or include the collector number directly, for example "Lightning Bolt 332". Then choose the print, set finish, condition, language, and quantity, and push the card into the queue. Nothing is written to your account until the final submit.

The fixed preview on the right is gone: hover a print instead and a floating preview appears next to the active entry.

Open the import page

Public deck URLs

You can import public Archidekt deck URLs plus public Moxfield deck or binder URLs. CardSwap reads the source, turns it into import lines, and pushes those cards into the selected target list. This path is currently Magic-only.

If a public Moxfield request is blocked, you can still export the list from Moxfield and paste it manually.

Pasted deck lists

Paste deck lines from Moxfield, Archidekt, or CardSwap exports directly into the text area. This is also the best fallback when a platform URL is private or rate-limited.

Pokemon and Yu-Gi-Oh! bulk imports now use this same pasted-list path, so you can combine pasted lines with the staged queue in one submit.

Target list and replace mode

At the top of the form you choose whether the import belongs in offers or wishlist. You can append to the existing list or replace that entire list. The "Accept any edition" option is meant for wishlist entries only.

Bulk defaults for condition and language

Large imports usually need shortcuts. That is why the import page lets you choose a default condition and default language for the whole submit. Explicit values on a single line always win over the default.

1 Lightning Bolt (CLB) 187 *F* [LP] [DE] 1 Sol Ring (CMM) 680 1 Counterspell (2XM) 51 [NM]

In that example, the first line is foil, Lightly Played, and German. The second line inherits your chosen defaults if you set any. The third line keeps Near Mint even if the import default says something else.

Cross-game note: CardSwap now keeps same-game trading as the default. If you want cross-game trade suggestions between supported games, both traders have to opt into cross-game trades in their trade settings.

Before you look for matches, also open your trade settings once. Country and shipping range now affect who can match with you.

Print details

Why CardSwap tracks more than just the card name

Magic trades often break down when people mean different printings. CardSwap therefore keeps the exact print visible from import through dashboard, matching, and chat.

Edition and collector number

Whenever set code and collector number are known, CardSwap treats that exact print as the real identity of the card instead of only the name.

Accept any edition

If any printing is fine on your wishlist, turn on this option. The matching flow may then use other sets and collector numbers of the same card instead of requiring one exact print only.

Finish

Normal, foil, and etched are stored separately. Some variants even have their own collector number, so the exact print still stays correct if the etched version is a separate listing.

Condition

CardSwap supports Near Mint, Lightly Played, Moderately Played, Heavily Played, Damaged, or not specified. Wishlist matches only become strict when a wishlist card actually requests a condition.

Language

Language works the same way as condition. If a wishlist entry does not ask for a specific language, matching stays flexible instead of becoming needlessly strict.

Important variant rule: If two versions share the same card name but have different collector numbers, CardSwap treats them as different prints by default. Only wishlist entries with "Accept any edition" deliberately relax that rule.
Dashboard

How to review larger collections

Once your lists grow, the dashboard becomes the main control surface for checking whether imports look right and for finding cards quickly.

Name search

The search field is focused on card names only. That keeps it fast and predictable when you know which card you want to find.

Pagination

Offers and wishlist each have their own pagination. That keeps both lists usable even when a user has hundreds or thousands of cards.

Exports

Both offers and wishlist can be exported as plain text. The dashboard also contains the tools for your public profile link if you want to share your lists outside CardSwap.

Metadata filters

Color, type, rarity, and frame variant filters come from cached Scryfall print metadata so the dashboard can filter locally without live price lookups.

What "Regular Frame" means

A card counts as Regular Frame when it is not tagged as extended art, borderless, showcase, or full art in the cached print metadata.

Browse offers

How to use current community offers as inspiration

If you do not have every card in your head, the browse-offers page helps you explore. It shows which exact prints other users currently have in their offers, including preview image, cached price, and how many traders offer the same print.

You can search by card name, set, or collector, switch between multiple sort orders, and tighten the list with "shipping-compatible only" and "hide already wishlisted". One click pushes an interesting print straight into your wishlist.

Sorting and filters

Use sort orders such as cheapest, most offered, or newest and combine them with game, color, type, rarity, and variant filters to keep larger result sets under control.

Hover preview and grid density

The preview floats next to the active card on hover instead of blocking a permanent sidebar. You can also choose whether 2, 3, 4, or 5 cards per row should be visible.

Matches

How suggestions and chat work together

CardSwap does not suggest random swaps. It first looks for reciprocal demand and then tries to find a reasonably balanced combination based on cached prices.

Reciprocal demand first

A match only starts if user A offers something user B wants and user B offers something user A wants.

Exact print when possible

If a wishlist card specifies set and collector number, CardSwap uses that exact print. But when you turn on "Accept any edition", matching may use other printings of the same card while still staying as precise as possible about language, condition, and finish.

Value-aware trade groups

After both sides have candidate cards, CardSwap compares grouped values and tries to stay within a reasonable tolerance so one side does not massively overpay.

Chat beside the match

The conversation is shown next to the selected trade suggestion so users can negotiate the final details without leaving the context of the match.

Unread indicators

New incoming chat messages show up as unread badges in the navigation and on the relevant match card. Opening that trade marks those messages as read.

Good to know: Prices support the suggestion, but the exact print details and shipping settings are just as important. A lower-priced exact match in the right country can be better than a more expensive but unrealistic international trade.
Trade safety

How the secure trade flow works

CardSwap now separates a raw match suggestion from the actual trade process. That keeps ratings fairer and gives users a way to report scammers even if a trade never finishes cleanly.

Step 1: Initiate trade

A match starts as a suggestion only. One trader must actively initiate the trade before the other side can accept or decline it.

Step 2: Accept or decline

The other trader can now accept or decline the exact proposed swap. This prevents drive-by ratings on trades that never really started.

If the requester changes their mind before acceptance, they can cancel the pending request and the trade returns to a normal suggestion.

Step 3: Mark shipped and received

After acceptance, each side marks their shipment and later confirms receipt. Once both sides confirm receipt, the trade is completed and the involved cards are removed from offers and fulfilled wishlist entries.

Step 4: Rate or report

Completed trades can be rated once. Problem reports open after a trade was accepted, so users can still report ghosting, no shipment, wrong cards, or misstated condition before the trade ever reaches completion.

Why this matters: A scammer can avoid a normal completion rating by never shipping. That is why CardSwap has a separate problem-report flow that opens after acceptance and does not depend on the trade reaching completed status.

Archived matches

Archived matches stay readable in the Trading Center so you can review the exact cards and chat history later, even after the active workflow is finished.

Admin review queue

Problem reports land in an admin dispute queue. That lets moderation look at the report, the match, and the user history before deciding whether the complaint should count against the account.

Passport check

How the passport MRZ check works

CardSwap includes an optional passport MRZ check for users who want an extra trust signal. A successful check adds a small badge to the profile areas where other traders can see it.

What to upload

Use a clear photo or scan of the passport photo page with both MRZ lines visible. The current flow is intentionally limited to passport-style MRZ documents, not every national ID card.

What CardSwap checks

CardSwap reads the visible MRZ and validates the main ICAO passport fields for the document number, birth date, and expiry date, while also recording an overall MRZ score. Expired passports are flagged separately.

What CardSwap keeps

The app is designed to process the uploaded image in memory for the immediate check and then discard it. It keeps only a small summary such as pass or fail status, issuing country, the last four document characters, expiry date, and an MRZ score.

What the badge means

The badge only means the passport-style MRZ produced a clean document-consistency result. It does not prove card ownership, document authenticity, or a full real-world identity match.

Prices

Where prices come from and why they are cached

CardSwap now uses game-specific price sources. Magic comes from Scryfall first and can fall back to JustTCG when a resolved print has no USD price. Pokemon runs through TCGdex with JustTCG as a fallback. Yu-Gi-Oh! uses YGOPRODeck for search, previews, and set-based pricing, while CardTrader can cautiously enrich missing preview data.

Source of truth

For Magic, the app reads print metadata from Scryfall card responses and stores a USD price in the local cache. When Scryfall has no USD price for a resolved print, CardSwap can fall back to JustTCG. For Pokemon, the current live path uses TCGdex for search, exact print selection, previews, and cached pricing, with JustTCG available as a fallback. For Yu-Gi-Oh!, CardSwap uses YGOPRODeck set data for exact print selection, preview images, and cached pricing, and can enrich missing exact-print data through CardTrader when the marketplace response is still compatible with the app price model.

Why cache at all?

Caching keeps the dashboard and match views fast and avoids turning every user request into an external API request. That matters a lot once collections get larger.

How refresh works

Stale prices are refreshed by background jobs in controlled batches. For Magic, a scheduled MTGJSON sync now adds a broader refresh path so larger print and price updates do not depend on normal page loads.

Recent sets are prioritized

For Magic, the refresh job can prioritize cards from the newest observed sets first, because those are often the prints users trade most actively right after release.

What this means in practice: You usually see fast cached prices in the app. New cards or stale entries are refreshed in the background so the trading experience stays responsive.
Behind the scenes

How CardSwap is built

For players who like the technical details, here is the short architecture version of what happens under the hood.

Web stack

CardSwap is a Flask app with SQLAlchemy models and Alembic migrations. The project is prepared for PostgreSQL in production and can fall back to SQLite locally.

Import adapters

Public deck URLs are turned into plain import lines first. That makes URL imports, pasted lists, and queued single-card entries flow through the same parser and batch processing steps.

Matching engine

Matching checks reciprocal demand, respects print details when available, and then compares grouped card values to avoid obviously unfair suggestions.

Translation support

The interface supports German and English through Flask-Babel so core pages, import flows, and messages can stay consistent across both languages.

Security defaults

In production, CardSwap expects a real secret key, secure cookies, and a shared rate-limit store such as Redis instead of per-process memory limits.

FAQ

Common questions

Why is a match missing?

The other user may not want that exact print, or the candidate trade may be too unbalanced to pass the value tolerance check.

Why is a price empty?

That usually means the cache entry is still pending, stale, or the exact print could not be refreshed cleanly yet. The app can still store the card even before the price is ready.

Can I import only part of a deck?

Yes. The staged single-card queue is meant for that. Add only the prints you want and submit them into offers or wishlist without importing the whole deck.

Which games support pasted bulk imports right now?

Magic, Pokemon, and Yu-Gi-Oh! all support pasted bulk imports now. Public deck URLs are still the Magic-only path for the moment.

Where should I start if I am new?

Start with your wishlist, then import a few easy trade offers, and only after that go to matches. It is the quickest way to see the app working end to end.

Why did my matches disappear after I changed countries?

Matches are recalculated whenever your trade settings change. If you switch to domestic-only trading, older international suggestions are removed automatically.

Can I trade with a few nearby countries instead of going fully worldwide?

Yes. In your trade settings you can choose selected countries and mark only the countries you actually want to ship to.

Can I export my lists again later?

Yes. The dashboard has export buttons for both offers and wishlist so you can download your current list in plain text and reuse it elsewhere.

Can I use Facebook instead of a password?

Yes. When Facebook login is enabled, you can use the Facebook button on login and registration. If Facebook does not provide an email address, CardSwap asks for it once and then creates or links the account directly.

What does "Accept any edition" do?

This option is meant for wishlist cards where the exact set does not matter. CardSwap then looks beyond one exact print and may match other editions of the same card.

Can I share my profile without requiring an account?

Yes. In trade settings you can enable your public profile. After that you get a shareable link for your offers and wishlist that people outside CardSwap can open as well.

What protects the login and signup forms from bots?

CardSwap uses request throttling on login, registration, and password-reset requests, plus hidden honeypot fields on selected forms to catch simple bots without annoying normal users.

Can I use Google instead of a password?

Yes, once Google sign-in is configured you can use the Google button on the login or registration page. Verified Google emails can create a new CardSwap account automatically or link to an existing account with the same email address.

Where can I read the rules and privacy details?

The footer now includes Terms, Privacy, Legal Notice, and a dedicated Data Deletion page. Read them before real trading, especially because prices, trade suggestions, and beta features are never perfect.

Does CardSwap store my passport image?

The passport check flow is designed to process the uploaded image in memory for the MRZ check and then discard it. The account keeps only a small result summary and, on success, a visible trust badge.