StripeとPayPalは、どちらも初期費用なしで始められるオンライン決済ですが、日本の料金表で比べると1件ごとに40円の差があり、入金の仕組みやAPIの作法も大きく違います。この記事では、StripeとPayPalの違いを、2026年10月時点の日本の手数料・入金と引き出しの条件・同じ3,000円の決済を作るcurlコード・Webhookの署名検証・不正対策の順に比べます。日本のStripeアカウントでStripe処理のPayPalを使えない点と、併用の判断基準も整理しました。
まとめ|StripeとPayPalの違いを手数料・入金・実装・不正対策で比べた結論
国内の決済手数料は、Stripeが3.6%、PayPalが3.6%+40円です。料率は同じなので、差は1件あたり40円の固定額だけで、客単価が低いほどPayPalの負担が重くなります。
入金は、Stripeが売上から4営業日で銀行口座へ振り込む方式です。PayPalは売上がPayPal残高に入り、自分で引き出す方式で、1回5万円を下回る引き出しには250円かかります。
実装は、StripeがAPIキー1本でPaymentIntentを作るのに対し、PayPalはOAuthのトークン取得・注文作成・キャプチャーに分かれます。自社開発のEC・SaaSはStripeを主軸にし、海外の個人客が多い越境ECだけPayPalを足す構成を勧めます。
日本の料金表で比べるStripeとPayPalの決済手数料と入金・引き出しコスト
比較記事には米国の料金(2.9%+30セントなど)のものが多いため、ここでは両社の日本向け料金ページの数値だけを使います。
国内決済3.6%と3.6%+40円で差が開く客単価帯を表で試算
Stripeの日本の料金ページでは、カード決済の手数料は決済成功ごとに3.6%で、設定手数料と月額料金はかかりません。PayPalのビジネス手数料ページ(2026年1月22日更新)では、国内取引は3.60%に、受取通貨が日本円の場合の固定手数料40円が加わります。
| 決済額 | Stripe(3.6%) | PayPal(3.6%+40円) | 手数料率の実質差 |
|---|---|---|---|
| 500円 | 18円 | 58円 | 8.0ポイント |
| 1,000円 | 36円 | 76円 | 4.0ポイント |
| 3,000円 | 108円 | 148円 | 約1.3ポイント |
| 10,000円 | 360円 | 400円 | 0.4ポイント |
| 50,000円 | 1,800円 | 1,840円 | 0.08ポイント |
1,000円以下の少額課金では、PayPalの固定40円が手数料率を4ポイント以上押し上げます。月1,000件の500円決済なら、差は月4万円です。客単価が1万円を超える物販では、差はほぼ誤差になります。
海外取引・通貨換算・チャージバック手数料で見る越境ECの総額
海外の顧客から受け取る場合の上乗せは、両社で考え方が違います。
| 項目 | Stripe | PayPal |
|---|---|---|
| 海外の顧客からの決済 | 通貨換算時に+2% | 海外取引で+0.50% |
| 受取時の通貨換算 | 上記の+2% | 基本為替レートに4.00%上乗せ |
| チャージバック(不審請求) | 1件1,500円 | 1件1,300円 |
円建てで価格を出し、外貨換算を顧客側のカード会社に任せれば、どちらも換算手数料は発生しにくくなります。ドル建てで売ってドルのまま受け取るとPayPalの4.00%が効くため、受取通貨を先に決めてから見積もります。
Stripeの4営業日入金とPayPalの引き出し手数料250円の資金繰りへの影響
Stripeの入金ドキュメントでは、日本のアカウントの標準的な売上処理は4営業日で、初回の入金は7暦日です。日次入金は使えず、既定のスケジュールは手動で、週次や月次の自動入金に切り替えられます。
PayPalは売上がまずPayPal残高に入り、銀行口座への引き出しは1回5万円以上なら無料、それを下回ると250円です。手数料2%の即時引き出しも載っていますが、「サービス開始後に利用可能」との注記付きです。月末に5万円以上まとめて引き出す運用を経理と決めておけば、引き出し費用は0円にできます。
PaymentIntentとOrders API v2で同じ決済を作るcurl手順
同じ3,000円の決済をサーバー側で作るコードを並べます。どちらもサンドボックスのキーで試せます。
StripeでPaymentIntentを作成するcurlと冪等キーの付け方
Stripeはシークレットキーをベーシック認証のユーザー名に渡すだけでAPIを呼べる仕組みです。Stripeの通貨ドキュメントによると日本円は小数点以下0桁の通貨で、500円ならamount=500と指定し、最小請求額は50円です。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_xxxxxxxx:" \
-H "Idempotency-Key: 7b92603e-77ed-4896-8e78-5dea2050476a" \
-d amount=3000 \
-d currency=jpy \
-d "automatic_payment_methods[enabled]=true"
応答のclient_secretをフロントへ渡し、Stripe.jsで支払いを確定させます。冪等リクエストのリファレンスでは、キーは最大255文字で、24時間以上たつと削除の対象です。注文IDに対応づけたUUIDを付ければ、通信エラーで再送しても二重決済になりません。Node.jsでの書き方はStripe APIの使い方とPaymentIntentの作成にまとめています。
PayPalでOAuthトークンを取得し注文作成からキャプチャーまで行うcurl
PayPalは、クライアントIDとシークレットからアクセストークンを取り、それを使って注文を作る2段階です。PayPal Checkoutの統合ガイドのサーバー処理をcurlに直すと次のようになります。
# 1. アクセストークンを取得する
curl -X POST https://api-m.sandbox.paypal.com/v1/oauth2/token \
-u "CLIENT_ID:CLIENT_SECRET" \
-d "grant_type=client_credentials"
# 2. 注文を作成する(JPYは小数を付けない)
curl -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "PayPal-Request-Id: 7b92603e-77ed-4896-8e78-5dea2050476a" \
-d '{"intent":"CAPTURE","purchase_units":[{"amount":{"currency_code":"JPY","value":"3000"}}]}'
# 3. 購入者の承認後に売上を確定する
curl -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders/ORDER_ID/capture \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN"
フロントではPayPalのJavaScript SDKのボタンを置き、createOrderで手順2の注文IDを返し、購入者が承認すると呼ばれるonApproveで手順3を呼びます。PayPalでは注文作成とキャプチャーが分かれるので、サーバー側のエンドポイントは最低2本必要です。
JPYの小数非対応とPayPal-Request-Idで二重決済を防ぐ注意点
金額の書き方は両社で型が違います。Stripeはamount=3000という整数、PayPalは"value":"3000"という文字列です。PayPalの通貨コード一覧は、日本円は小数に対応せず、小数を含む金額を渡すとエラーになると明記しています。ドル向けのコードを流用して"3000.00"と送ると失敗するので、通貨ごとの桁数をサーバー側の1か所で変換します。
再送時の二重処理を防ぐヘッダーは、StripeがIdempotency-Key、PayPalがPayPal-Request-Idです。PayPalの冪等性リファレンスではUUID形式が推奨され、上限は38バイトです。すべてのAPIが対応しているわけではない点がStripeとの違いで、使うAPIごとにリファレンスで対応を確かめます。
Webhookの署名検証と注文確定の実装で比べるStripeとPayPalの設計差
注文の確定をWebhookで行う原則は同じでも、署名の確かめ方が両社で違います。
Stripeは手元で署名を検証しPayPalは検証APIを呼ぶという違い
StripeのWebhookガイドでは、受信した生のリクエスト本文とStripe-Signatureヘッダーを、エンドポイントごとの署名シークレットで検証します。公式ライブラリのstripe.webhooks.constructEventを呼ぶだけで、外部への通信は発生しません。
PayPalのWebhook統合ガイドが示す方法は、受信ヘッダーの値をPayPalの検証APIへ送り返す形です。Node.jsで書くと次のようになります。
app.post('/paypal/webhook', express.raw({ type: 'application/json' }), async (req, res) => {
const h = req.headers;
// webhook_event は受信した本文をそのまま埋め込む(パースして再生成すると検証に失敗する)
const body = '{"transmission_id":' + JSON.stringify(h['paypal-transmission-id'])
+ ',"transmission_time":' + JSON.stringify(h['paypal-transmission-time'])
+ ',"cert_url":' + JSON.stringify(h['paypal-cert-url'])
+ ',"auth_algo":"SHA256withRSA"'
+ ',"transmission_sig":' + JSON.stringify(h['paypal-transmission-sig'])
+ ',"webhook_id":' + JSON.stringify(process.env.PAYPAL_WEBHOOK_ID)
+ ',"webhook_event":' + req.body.toString('utf8') + '}';
const r = await fetch('https://api.sandbox.paypal.com/v1/notifications/verify-webhook-signature', {
method: 'POST',
headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + await getAccessToken() },
body,
});
const { verification_status } = await r.json();
if (verification_status !== 'SUCCESS') return res.sendStatus(400);
// ここで注文を確定する(同じイベントの再送に備えてイベントIDで重複を弾く)
res.sendStatus(200);
});
PayPal側は検証のたびにトークンと外部APIの呼び出しが要るため、トークンのキャッシュと、検証APIが応答しないときの再試行を設計に含めます。ガイドはwebhook_eventを受信したとおり変えずに送るよう求めており、上のコードは生の本文を文字列のまま埋め込む形です。署名検証と冪等な注文確定の全体像は決済Webhookの署名検証と冪等な注文確定で解説しています。
不正対策と売り手保護で比べるStripe RadarとPayPal売り手保護制度
不正対策は、Stripeがカード決済の不正を検知する仕組み、PayPalがクレーム時の損失を補償する仕組みで、守り方の方向が違います。
Stripe Radarの標準機能と不審請求1件1,500円の扱い
Radarの料金ページによると、標準の料金体系の事業者は、カード決済とカードテスティング向けのAIベースの不正利用防止を追加料金なしで使えます。別契約や追加費用なしで、カード決済に不正検知が掛かった状態から始められる点がPayPalとの違いです。
それでも不審請求(チャージバック)が届けば、1件1,500円の手数料がかかります。デジタル商品やサブスクは発送記録という反証資料を持てないため、利用規約への同意記録やログイン履歴を注文と紐づけて保存しておく実装が効きます。
PayPal売り手保護制度が有形商品と配送追跡を条件にする影響
PayPal売り手保護制度(2026年1月26日更新)は、購入者が未承認取引や商品未受領を申し立てたとき、条件を満たせば売り手の損失を補償する制度です。基本要件は、売り手のPayPalアカウントのメイン住所が日本国内であること、商品が物理的な有形商品で配送可能であることです。
取引詳細ページに記載された配送先へ発送し、オンラインで確認できる追跡番号を残す必要があります。発送後に別の住所へ転送された場合は対象外です。追跡番号付きの物販ではPayPalの補償が強みになりますが、ダウンロード販売やSaaSでは追加要件があり、この制度を理由にPayPalを選ぶ根拠は弱くなります。
Stripe上でPayPalを受け付けたい場合の日本アカウントの制約と代替構成
「Stripeの管理画面でPayPalも受けたい」という要望には、日本の事業者特有の制約があります。
Stripe処理のPayPalが欧州の事業者に限られる対応国の条件
StripeのPayPal決済手段のページでは、Stripeで処理するPayPalを受け付けられるのは、ドイツ・フランス・英国・スイスなど欧州の約30か国のStripeアカウントです。取引通貨にも日本円は含まれていません。日本のStripeアカウントでは、カードやPayPayのようにダッシュボードで有効化するだけでPayPalを出す構成は取れない、ということです。
海外の比較記事が「Stripe上でPayPalも受けられる」と紹介しているのは、この欧州向けの機能です。
カスタム決済手段のプレビューとPayPal直接契約を併設する2つの構成
欧州以外の事業者向けには、PayPalのカスタム決済手段が案内されています。自社のPayPalアカウントを使い、Stripeが作ったPayPalアダプターを自社環境でホストして、CheckoutからのPayPal決済をアダプター経由で流す方式です。PayPalの手数料に加えてStripeの手数料もかかり、提供はプレビュー段階で、利用には専任のアカウントマネージャーへの連絡が要ります。
現実的な選択肢は、PayPalと直接契約し、決済画面にStripeとPayPalのボタンを並べる構成です。注文テーブルに決済手段の列を持たせ、両社のWebhookを同じ注文確定処理へつなげば、管理画面が2つになる以外の不便は抑えられます。
StripeとPayPalを選び分ける判断基準と併用・見送りの具体的な場面
ここまでの差を踏まえると、選び方は商材と顧客の所在地でほぼ決まります。迷ったら、まずStripeだけで始めて、PayPalの要望が実際に出てから足すという順番を勧めます。
自社開発のSaaSと少額課金でStripeを主軸に据える条件
客単価が数千円以下の課金、月額のサブスク、自社のWebアプリに決済を組み込む開発案件では、Stripeを主軸にします。1件40円の固定費がなく、API呼び出しが1往復で、署名検証も手元で済むためです。PayPalにもSubscriptionsがあり、固定・従量・段階の価格やトライアルを組めます。それでもStripeを主軸にするのは、単発決済とサブスクを同じAPIキー・同じWebhookの経路で管理でき、決済手段ごとの処理を増やさずに済むからです。継続課金の実装はStripe Billingの実装手順を参照してください。
海外個人客の多い越境ECでPayPalを追加する場面と見送る場面
PayPalを足すのは、海外の個人客が多く、カード番号を入れずにPayPalアカウントで払いたい層が売上の一定割合を占める越境ECです。追跡番号付きで発送する物販なら、売り手保護制度も効きます。
逆に、国内向けの少額デジタル商品やBtoBの請求では見送ります。固定40円と引き出し手数料が利益を削り、売り手保護の対象にもなりにくいからです。国内の顧客にカード以外の手段を出したいなら、Stripe経由のPayPay決済やPAY.JPとの選び分けのほうが先に検討する価値があります。
両方を併設するときの注文管理のアダプター設計と開発体制の判断
併設するなら、決済代行ごとに注文処理を書き分けず、決済手段の差をアダプター層に閉じ込めます。金額の型(整数と文字列)、冪等キーのヘッダー名、Webhookの検証方法、返金APIの4点を1つのインターフェースにそろえると、3社目を足すときも注文側のコードは変わりません。
Stripeの全体像はStripeの仕組みと実装パターンで整理しています。既存のECや業務システムにStripeとPayPalを併設する設計、会計連携や返金フローまで含めた実装を外部に任せたい場合は、決済・サブスクリプションシステム開発で要件の整理から相談できます。
StripeとPayPalの違いと選び方に関するよくある質問
StripeとPayPalを比べる際によく出る疑問をまとめました。
StripeとPayPalはどちらの手数料が安いですか?
日本の国内決済では、Stripeが3.6%、PayPalが3.6%+40円なので、どの金額でもStripeのほうが40円安くなります(2026年10月時点の各社料金ページ)。差が大きいのは少額決済で、1,000円の決済なら手数料は36円と76円です。海外の顧客から外貨で受け取る場合は、Stripeの通貨換算+2%、PayPalの海外取引+0.50%と換算4.00%を合わせて見積もります。
Stripeの管理画面でPayPal決済も受け付けられますか?
日本のStripeアカウントでは、標準の決済手段としては受け付けられません。Stripeで処理するPayPalは欧州の約30か国のアカウントに限られ、取引通貨に日本円もありません。欧州以外の事業者向けのカスタム決済手段はプレビュー段階で、自社のPayPalアカウントとアダプターのホストが必要です。多くの場合は、PayPalと直接契約して決済画面に両方を並べる構成になります。
StripeとPayPalは入金までにどれくらいかかりますか?
Stripeは日本のアカウントで標準4営業日の売上処理で、初回の入金は7暦日です。既定は手動入金で、週次や月次の自動入金に切り替えられます。PayPalは売上がPayPal残高に入り、自分で銀行口座へ引き出す方式です。1回5万円以上の引き出しは無料で、それを下回ると250円かかるため、まとめて引き出す運用にすると費用を抑えられます。
個人事業主や小規模ECならどちらを選ぶべきですか?
コードを書いて自分のサイトに組み込むなら、APIが単純で少額でも固定費のかからないStripeが扱いやすい選択です。購入者からPayPalで払いたいという要望が出る海外向けの販売なら、PayPalを追加します。国内の少額販売だけなら、Stripe1本で始めて十分です。
StripeとPayPalを併用するときの注意点は何ですか?
管理画面と入金サイクルが2つに分かれるため、売上の突き合わせ方を経理と先に決めておきます。実装では、金額の型(Stripeは整数、PayPalは文字列で日本円は小数不可)、冪等キーのヘッダー名、Webhookの署名検証方法が違います。この差は決済手段ごとのアダプターで吸収し、注文側のコードに持ち込まない設計が安全です。
関連記事
- Stripeとは?決済プラットフォームの仕組み・手数料・実装パターンを開発視点で解説:Stripeの料金体系と3段階の実装パターンの全体像。
- PAY.JPとは?3プランの手数料とAPI実装コード・Stripeとの選び分けを開発視点で解説:国内決済代行とStripeを比べるときの判断軸。
- Square APIとは?決済統合の仕組み・実装フロー・Stripe/PAY.JPとの選び分けを開発視点で解説:対面決済も含めて比べる場合の選択肢。
- Stripeの機能一覧|主要プロダクト14種の守備範囲と日本での提供可否:日本で使えるStripeの決済手段と料率。
- Adyenとは?仕組み・料金体系と日本での使いどころ、国内決済代行との併用判断:越境ECで複数の決済代行を併用する判断。