airsource team

How airsource Maps Stripe to Airtable in 60 Seconds

If you have ever exported a Stripe CSV at the end of the month and spent the next hour pasting columns into an Airtable base, you already know the problem this article is about. The data is in two places, the field names never quite line up, and every new product or coupon means you have to redo half of it.

airsource was built to remove that hour. Connect Stripe once, connect Airtable once, approve a mapping that Claude AI proposes for you, and the sync runs every fifteen minutes from then on. The walk-through below shows exactly how that happens and what you can expect the first time you try it.

The problem with manual exports

Most teams who pull Stripe data into Airtable do one of three things:

  1. Manual CSV exports. Reliable, but you stop doing it after week three.
  2. A generalist automation tool. Works, but you spend an evening wiring up "Stripe Charge Amount" → "Total" → "Net Revenue" by hand, and the per-task billing climbs as your event volume grows.
  3. A custom script that talks to both APIs. Cleanest in theory, but now you own a piece of infrastructure that breaks the next time Stripe ships an API change.

Each of those works for a while. None of them is fun. The shared bottleneck is the same: somebody has to decide, for every field in Stripe, which column in Airtable it belongs in.

airsource targets exactly that step. Everything else (the schedule, the retries, the storage) is in service of making the mapping decision one click instead of an evening.

The airsource model in one paragraph

When you connect Stripe to an Airtable base, airsource asks Claude to read both schemas at the same time. Claude returns a proposed field-to-column mapping with a confidence level and a one-sentence reason per row. High-confidence mappings auto-apply. Low-confidence ones (Stripe.metadata.customer_segmentAirtable.Segment, for example) ask you to confirm. You can override anything in one click. Once approved, the mapping is stored, and subsequent syncs on the same base type re-use what you taught it.

That is the whole product. Everything else (the 15-minute cron, the webhook hooks, the error retry queue) is plumbing around that one decision.

Step-by-step: from zero to a synced row in 60 seconds

The first sync genuinely takes about a minute once both accounts are connected. Here is what each step looks like.

Step 1: Sign up for the airsource trial

Open https://airsource.io and join the waitlist (during the private beta period the waitlist auto-converts to a trial invite). No credit card is required for the 14-day trial. You get a magic-link email; clicking it lands you in the dashboard.

Pro tip: the magic link is single-use and expires after 15 minutes. If it expires, just request a fresh one — the email arrives in under a minute via our Resend integration.

Screenshot placeholder: dashboard empty state with "Create your first sync" CTA.

Step 2: Connect Stripe with a Restricted Key

In a separate tab, open https://dashboard.stripe.com/apikeys, scroll to the Restricted keys section, and click + Create restricted key. Name it airsource SaaS - Read Only. Under permissions, set the following to Read only and leave everything else as None:

  • Customers
  • Subscriptions
  • Invoices
  • Charges
  • Products
  • Prices
  • Balance

Click Create key, copy the rk_live_... (or rk_test_... in Stripe test mode) string, and paste it into the airsource onboarding form.

Pro tip: start in Stripe test mode for your first connection. Test keys start with rk_test_... and let you verify the mapping against fake data before you point airsource at production. We never write to Stripe, but verifying in test mode first is a habit worth keeping.

Screenshot placeholder: Stripe restricted-key creation page with the read-only permissions checklist.

Step 3: Connect Airtable with a Personal Access Token

Open https://airtable.com/create/tokens, click Create new token, and call it airsource SaaS. Under Scopes, select all three of:

  • data.records:read
  • data.records:write
  • schema.bases:read

Under Access, click Add a base and pick the base you want airsource to write to. Click Create token, copy the pat... string, and paste it into airsource alongside the Base ID (the app... string from your Airtable URL) and Table ID (the tbl... string from the same URL).

Pro tip: airsource never needs data.records:delete or schema.bases:write. If you see a setup guide asking for either, that is a flag. Keep the token to the minimum three scopes above.

Screenshot placeholder: Airtable PAT creation screen with the three required scopes ticked.

Step 4: Approve the AI-proposed mapping

This is the part most people screenshot. airsource pings Claude with your Stripe schema sample and your Airtable column list. Claude responds with something like this (real example, edited for length):

Stripe field Airtable column Confidence Reason
customer.email Email high Direct match — both are email addresses tied to the customer record
subscription.status Status high Same enum semantics (active/past_due/canceled/trialing)
subscription.items[0].price.unit_amount MRR medium Stripe stores amount in cents; airsource will divide by 100 before write
customer.metadata.referral_source Source low Plausible match but Source is a single-select with limited values — please confirm

You scan the table, click Approve on the high-confidence ones, and tap the dropdown on the low row to either confirm, remap, or skip it. The whole review usually takes under thirty seconds for a standard Stripe-to-subscriptions setup.

Once approved, the mapping is persisted to the field_mapping_json column in our database. The next time you (or any other airsource customer) connect the same pair of schemas, the AI uses your approved decisions as context. The mapping intelligence improves with every customer who clicks Approve.

Screenshot placeholder: mapping approval UI with confidence pills and inline override dropdowns.

Step 5: Verify the sync in Airtable

Click Run first sync now in the airsource dashboard. The job pulls every Stripe customer, subscription, invoice, and charge that matches your filter and upserts it into the target Airtable table. For a fresh account with a few dozen customers, the first sync finishes in 15-45 seconds; the bottleneck is the Airtable API rate limit, not us.

Switch back to Airtable. New rows appear in the table. Every record has a Last Synced timestamp so you can confirm freshness at a glance. From this point on, the sync runs automatically every 15 minutes on the Starter plan, or in near-realtime via webhooks on Pro and Business (Stripe pushes the webhook, airsource processes it inside the same 200 OK budget).

Pro tip: pin the Sync Logs table (auto-created in your Airtable base on first sync) to see which jobs ran when and how many records were touched. If a job fails — say, you rotated your Stripe key and forgot to update airsource — it retries with exponential backoff (1m / 5m / 15m / 60m) and writes the failure to a sync_errors table so nothing is silently lost.

Screenshot placeholder: Airtable table with freshly synced rows and a Last Synced column highlighted.

What you do not have to do

Worth calling out, because these are the things every other tool makes you do:

  • No per-task billing. Whether Stripe sends ten events a month or ten thousand, the price is the same. The Starter plan is a flat $9 per month after the trial.
  • No manual field wiring. The mapping screen above is the only setup step. You do not draw lines between two long lists in a config UI.
  • No third-party workflow platform in the path. airsource talks directly to the Stripe SDK and the Airtable API. There is no Zapier or Make.com between them.
  • No SDK install in your codebase. Connecting a source is a credential paste, not an npm package.

What we do not do (yet)

Equally worth calling out, because honesty travels better than spin:

  • No bidirectional sync. Writing changes from Airtable back to Stripe (or Shopify, or HubSpot) is not on the roadmap until at least Phase 4. The mental model is source → Airtable, full stop.
  • No formal SOC 2 certification. We are GDPR-aligned in design (30-day raw event retention, EU data export on request, deletion endpoint) but the formal SOC 2 audit waits until revenue justifies the spend. If your procurement requires SOC 2 today, we are not the right fit yet.
  • No annual pricing. Month-to-month only during the early-customer phase. Annual plans land once the product is stable enough to ask people to commit for a year.

Try it free for 14 days

The 14-day trial is the way to evaluate this. No credit card up front, full Starter features, magic-link sign-in. If at any point the AI mapping is wrong, drop a note to support@airsource.io — every wrong mapping you report becomes a training example that improves the next customer's experience.

Join the waitlist to lock in your trial slot for the June 2026 private beta. If you would rather read first, the /getting-started page walks through the same flow in checklist form, the /faq covers 25 of the most common questions, the /docs hub lists every connector with a setup guide, and /pricing breaks down the three tiers.


Written by the airsource team — a solo founder operation based in Japan, building in public on Indie Hackers and Dev.to. We post the weekly numbers (the good ones and the rough ones) so you know exactly what stage of product you are evaluating.

Try airsource free for 14 days

Private beta — June 2026. Magic-link sign-in.