API CHANGE

Payment Mandate に
id フィールドが追加

API 2026-07〜 | CustomerPaymentMethod のマンデート特定がシンプルに

OBJECTCustomerPaymentMethodidgid://.../123instrumentmandatesOBJECTPaymentMandateResource✦ idNEWscopeOBJECTPaymentMandateResourcescopemandates connectionid が同一値PaymentMandateResource.id = CustomerPaymentMethod.id

API バージョン 2026-07 以降PaymentMandateResource オブジェクトに新たな id フィールドが追加されます。この id は紐づく CustomerPaymentMethod.id と同一の値であり、1つの決済手段(ペイメントインストゥルメント)が複数のマンデートタイプに関連付けられている場合でも、特定スコープ(例: SUBSCRIPTIONS)向けのマンデートがどの決済手段に対応するかを正確に特定できるようになります。

WHAT CHANGED

01変更内容の図解:Before / After

BEFORE 2026-07CustomerPaymentMethodid: gid://.../CustomerPaymentMethod/123mandates {PaymentMandateResource {scope # id なし}どのCPMに属するか判別しにくい2026-07以降AFTER 2026-07+CustomerPaymentMethodid: gid://.../CustomerPaymentMethod/123mandates {PaymentMandateResource {id: gid://.../123 ✦ NEWscope: SUBSCRIPTIONS}CPM.id と照合して即座に特定可能USE CASES

02業務に活かせる具体的ユースケース

課題
定期購入(サブスクリプション)ユーザーがクレジットカードを複数枚登録しており、どのカードがサブスク用マンデートを持つかが判別できなかった。
打ち手
mandates コネクションを取得し、PaymentMandateResource.idCustomerPaymentMethod.id と照合して SUBSCRIPTIONS スコープのマンデートに紐づくカードを特定する。
効果
サブスク更新時に正しい決済手段を確実に選択でき、決済失敗率を低減できる。
技術メモ
API 2026-07 以降が必須。CustomerPaymentMethodmandates コネクションに id フィールドを追加するだけで対応可能。
課題
1枚のカードが「サブスクリプション」「都度課金」など複数のマンデートタイプに紐づいており、UI上でどのマンデートがどの決済手段に属するかを表示できなかった。
打ち手
PaymentMandateResourceid を使って、管理画面やカスタマーポータルに「このカードが利用されるマンデート一覧」を正確に表示する。
効果
顧客が自分の決済設定を直感的に理解・管理できる体験を提供でき、問い合わせ削減につながる。
技術メモ
idCustomerPaymentMethod.id と同値なので、追加の API コールは不要。
課題
マンデートスコープごとに異なる処理ロジックを実行したいが、どの CustomerPaymentMethod に対してアクションを起こせばよいかコード上で特定できなかった。
打ち手
バックエンド処理で PaymentMandateResource.id を取得し、その値で customerPaymentMethod クエリを直接実行してスコープ別の分岐処理に使う。
効果
マンデート起点でペイメントメソッドを逆引きする処理フローが簡潔になり、コード複雑度が下がる。
技術メモ
id は GID 形式の想定。元記事には具体的な型の記載なし。公式スキーマを要確認。
DEV NOTES

03技術者目線のポイント

対象APIバージョン

2026-07 以降で有効。それ以前のバージョンでは PaymentMandateResourceid フィールドは存在しない。旧バージョンでクエリを実行してもフィールドが返らない点に注意。

idの同一性

PaymentMandateResource.id の値は、対応する CustomerPaymentMethod.id同一。新たな識別子が増えるわけではなく、既存の CPM ID を mandates 側から参照できるようになるイメージ。

複数マンデートタイプの扱い

1つの決済手段が複数のマンデートタイプ(例: SUBSCRIPTIONS・その他)に関連付けられているケースで特に有効。スコープを指定したフィルタリングと組み合わせることで、意図した CPM を確実に絞り込める。

取得経路

CustomerPaymentMethod オブジェクト上の mandates コネクション経由で PaymentMandateResource を取得する。mandates コネクションの詳細な引数やページネーション仕様は公式ドキュメントを参照のこと。

後方互換性への影響

フィールドの追加のみの変更であり、既存クエリへの破壊的変更はない。ただし 2026-07 未満のバージョンに固定しているアプリは、新フィールドを使うために API バージョンのアップグレードが必要。

Liquidへの影響

元記事の記載なし。本変更は Admin GraphQL API の PaymentMandateResource オブジェクトに関するもので、Liquid テンプレートへの直接的な影響については公式ドキュメントの確認を推奨。

MANDATE → PAYMENT METHOD 逆引きフロー (2026-07+)QUERYmandates { }FIELDPaymentMandate Resource.idFILTERscope 絞り込みRESULTCPM 特定query {customer(id: "gid://...") { paymentMethods { mandates {id scope } } } }※ 概念的なクエリ例。実際の構文は公式ドキュメントを参照してください。

「1決済手段・複数マンデート」構成の複雑な定期購入フローも、PaymentMandateResource.id を使えばマンデート起点で正確なペイメントメソッドを特定でき、サブスク決済ロジックの実装が大幅にシンプルになります。

Source: https://shopify.dev/changelog/payment-mandates-id-field | 公開日: 2026年6月27日