Optimization Guide
Ecommerce Payment Method Accepted Schema for AI Shopping Agents
AI shopping agents filter purchase recommendations by payment method. "Stores with Klarna for outdoor furniture", "buy now pay later mattress", "which brands accept Apple Pay" — these queries exclude every store without machine-readable payment method signals, regardless of whether you actually accept those payment methods.
acceptedPaymentMethod to your Organization/LocalBusiness block for store-level methods (cards, PayPal, Apple Pay). For BNPL (Afterpay, Klarna, Shop Pay Installments), add a dedicated Offer to each eligible product's offers array with installment price and provider name. Use paymentAccepted text property for human-readable summary.
Payment as a Purchase Filter
Payment method acceptance has always been a purchase filter, but AI shopping agents have amplified its importance by making it a searchable, filterable signal. Shoppers now explicitly include payment preferences in conversational queries:
- "Buy now pay later furniture stores — I need 4 interest-free installments"
- "Which ergonomic chair brands accept Klarna?"
- "Clothing stores that accept crypto near me"
- "Does this store offer Shop Pay Installments on orders over $200?"
Shopify renders payment method icons in the footer and checkout page for human visitors. But these icons are images — not structured data. AI shopping agents that don't render JavaScript cannot parse your footer icons. The only machine-readable path is acceptedPaymentMethod and BNPL Offer schema in your JSON-LD.
Payment method schema signal matrix
| Payment type | Schema property | Schema value / approach |
|---|---|---|
| Credit / debit cards | acceptedPaymentMethod on Organization |
https://schema.org/CreditCard |
| PayPal | acceptedPaymentMethod on Organization |
https://purl.org/goodrelations/v1#PayPal |
| Apple Pay / Google Pay | acceptedPaymentMethod on Organization |
Custom paymentMethodId: "ApplePay" or "GooglePay" |
| BNPL (Afterpay, Klarna) | Separate Offer per product with installment details | description naming BNPL provider + installment price |
| Shop Pay Installments | Offer in offers array + PaymentChargeSpecification |
Per-installment price, installment count, eligible total range |
| Crypto (Bitcoin, ETH) | acceptedPaymentMethod on Organization |
Custom paymentMethodId: "Bitcoin", "Ethereum" |
| Gift cards | acceptedPaymentMethod on Organization |
https://schema.org/PaymentCard + description: "Gift cards accepted" |
| Bank transfer / ACH | acceptedPaymentMethod |
https://purl.org/goodrelations/v1#BankTransfer |
Organization-Level Payment Schema
Declare store-wide payment acceptance in the Organization or OnlineStore block (typically in theme.liquid):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "OnlineStore",
"name": "Your Store Name",
"url": "https://yourdomain.com",
"paymentAccepted": "Visa, Mastercard, American Express, PayPal, Apple Pay,
Google Pay, Shop Pay, Afterpay, Klarna, gift cards",
"acceptedPaymentMethod": [
{
"@type": "PaymentMethod",
"paymentMethodId": "CreditCard",
"name": "Credit and debit cards (Visa, Mastercard, Amex, Discover)"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "PayPal",
"name": "PayPal"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "ApplePay",
"name": "Apple Pay"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "GooglePay",
"name": "Google Pay"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "ShopPay",
"name": "Shop Pay"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "Afterpay",
"name": "Afterpay — 4 interest-free payments"
},
{
"@type": "PaymentMethod",
"paymentMethodId": "Klarna",
"name": "Klarna — pay in 4 or pay in 30 days"
}
]
}
</script>
BNPL Offer for individual products
For products eligible for BNPL, add a dedicated Offer to the offers array with installment details:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Apex Pro Standing Desk",
"offers": [
{
"@type": "Offer",
"price": "449.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"name": "Full price"
},
{
"@type": "Offer",
"price": "112.25",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"name": "Afterpay — 4 interest-free payments of $112.25",
"description": "Pay in 4 interest-free installments of $112.25 with Afterpay.
First payment at checkout. Available for orders $35–$2000.",
"priceSpecification": {
"@type": "PaymentChargeSpecification",
"price": "112.25",
"priceCurrency": "USD",
"billingIncrement": 1,
"eligibleTransactionVolume": {
"@type": "PriceSpecification",
"minPrice": "35.00",
"maxPrice": "2000.00",
"priceCurrency": "USD"
}
}
}
]
}
Shopify Theme Implementation
Add the Organization block with acceptedPaymentMethod to theme.liquid — once, site-wide. It only needs to change when your payment provider lineup changes.
For BNPL Offers, add to product.liquid conditionally — check if the product price is within the BNPL eligible range before injecting the installment Offer:
{% if product.price >= 3500 and product.price <= 200000 %}
{
"@type": "Offer",
"name": "Afterpay — 4 payments of {{ product.price | divided_by: 4 | money }}",
"price": {{ product.price | divided_by: 4.0 | money_without_currency | json }},
"priceCurrency": {{ cart.currency.iso_code | json }},
"description": "4 interest-free payments with Afterpay"
}
{% endif %}
Note: Shopify money_without_currency outputs 2 decimal format. Divide by 4.0 (float) to avoid integer truncation. Verify BNPL minimum/maximum with your provider — ranges vary by country.
Checklist
paymentAcceptedtext string on Organization (human-readable, for AI agents that parse text)acceptedPaymentMethodarray with one entry per supported payment method- BNPL providers listed by name (Afterpay, Klarna, Shop Pay Installments) — not generic "BNPL"
- BNPL Offers on individual products include per-installment price and installment count
eligibleTransactionVolumeon BNPL priceSpecification to declare min/max eligible cart value- Remove payment methods that are no longer active (stale acceptedPaymentMethod entries mislead agents)
- Country-specific methods (iDEAL for NL, Boleto for BR) only declared for relevant market Offers
FAQ
Does Google use acceptedPaymentMethod for rich results?
Google's product rich results (Merchant Center feed-based) show BNPL options as a rich snippet — for example, "4 interest-free installments of $X with Afterpay" — when the installment data is present in the structured data or the product feed. This is most reliably implemented via Google Merchant Center's installment attribute, but JSON-LD Offer installment schema provides the underlying signal that feeds into it when your product feed is linked. The acceptedPaymentMethod on Organization is less used by Google but is read by AI shopping agents like Perplexity and ChatGPT.
How do I handle payment methods that vary by country in Shopify Markets?
Use Shopify Markets to serve separate product pages per market, and vary the acceptedPaymentMethod array in JSON-LD based on the active market context. In Liquid, use localization.market to conditionally include country-specific payment methods. For example, include iDEAL only for the Netherlands market, Klarna only for markets where it operates, and Boleto only for Brazil. AI agents respect geographic payment method declarations when the country context is set in Offer.eligibleRegion or the LocalBusiness addressCountry.
Should I declare crypto payment methods even if only a small percentage of customers use it?
Yes — it's a filter signal, not a prediction of usage. A Shopify merchant who accepts Bitcoin via BitPay or Coinbase Commerce should declare it in acceptedPaymentMethod. The set of shoppers searching "crypto-accepting online stores for X" is niche but high-intent — they have selected payment method as a binary filter and your store either passes or fails. If you accept it, declaring it costs nothing and captures every query in that segment.
Check Your Payment Method Schema Coverage
CatalogScan audits your Shopify store for missing payment method structured data, including BNPL Offer signals and Organization-level acceptedPaymentMethod declarations. Run a free scan to see what your store is signaling to AI shopping agents.
Scan your store free