マルチカレンシー
このページで扱うトピック
マルチカレンシー決済
マルチカレンシー決済を利用すると、口座の決済通貨(settlement currency)とは異なる通貨でクレジットカードやデビットカードの決済を行うことができます。Omiseが金額を自動的に口座の決済通貨へ変換するため、カード保有者は自身が希望する通貨(presentment currency)で支払うことができます。
有効化する方法
- 対応国: タイ、シンガポール
- 必要な最小APIバージョン:
2014-07-27
マルチカレンシー決済を有効化するには、support@omise.co 宛てにこの機能の利用をリクエストするメールを送信してください。新しい利用規約の確認と同意が必要です。
重要な注意事項
- この機能はクレジットカードおよびデビットカードによる決済のみに対応しており、インターネットバンキングなどの代替決済手段には対応していません。
- この機能はVisaおよびMastercardブランドのカードのみに対応しています。
- 場合によっては、カード保有者が自国通貨で支払った場合でも、発行銀行から海外取引手数料が請求されることがあります。
外国為替レートに関する注意事項
自国通貨以外(決済通貨と異なる通貨)で決済する場合、カード保有者はカード発行会社が定める為替レートの適用を受けます。この発行会社側の為替レートは、決済時にOmiseが適用するレートよりも高くなることが多く、Omiseが管理するものではありません。
重要: 高額決済の場合、Omiseのレートとカード発行会社のレートとの差により、2,000〜3,000THB以上の差額が生じることがあります。顧客の混乱や紛争を避けるため、可能な限り現地通貨で決済してください。
対応通貨
対応する通貨は、アカウントを登録した国によって異なります。
| 通貨 | 名称 | タイ | シンガポール |
|---|---|---|---|
| AUD | オーストラリアドル | ✓ | ✓ |
| CAD | カナダドル | ✓ | |
| CHF | スイスフラン | ✓ | ✓ |
| CNY | 人民元 | ✓ | ✓ |
| DKK | デンマーククローネ | ✓ | |
| EUR | ユーロ | ✓ | ✓ |
| GBP | 英ポンド | ✓ | ✓ |
| HKD | 香港ドル | ✓ | ✓ |
| JPY | 日本円 | ✓ | ✓ |
| MYR | マレーシアリンギット | ✓ | |
| SGD | シンガポールドル | ✓ | ✓† |
| THB | タイバーツ | ✓† | ✓ |
| USD | 米ドル | ✓ | ✓ |
† 口座の決済通貨
マレーシアと日本がこの表に含まれていないのは、これらの国ではマルチカレンシー決済自体が利用できないためです。 これらの国に登録されたアカウントは、それぞれの現地通貨(MYRまたはJPY)のみで決済され、この機能を有効化することはできません。
JPYはゼロ・ディシマル(小数点なし)通貨です。 USDやTHBのような2桁小数通貨とは異なり、APIリクエストにおいてJPYの金額は100倍にしません。¥1,000の決済はamount=1000として送信し、amount=100000とはしません。他の通貨と同じ「×100」の慣習でJPYの金額を送信すると、実際の100倍の金額が請求されてしまいます。
実装方法
タイに登録されたアカウントを使って、USD 1,000の決済を作成する手順を見ていきましょう。
マルチカレンシー決済の作成方法は、通常の決済の作成方法とほぼ同じです。
トークンの作成
トークンを作成するには、Omise.jsガイドの手順に従ってください。テストの際はこちらに記載されている例を参照してください。シンプルな決済フォームを作成する場合は、チェックアウトページに以下を挿入します:
<form id="checkout-form" method="POST" action="/checkout">
<script type="text/javascript" src="https://cdn.omise.co/omise.js"
data-key="OMISE_PUBLIC_KEY"
data-amount="100000"
data-currency="USD">
</script>
</form>
マルチカレンシーチャージの作成
前の手順で作成したトークンを使ってCharge APIリクエストを作成します。作成されたチャージオブジェクトの以下の属性を確認してください:
currency: チャージが作成された際の通貨(USD
)funding_currency: 口座の決済通貨(THB
)funding_amount: 口座の決済通貨に両替された後のチャージ金額
amountとrefunded_amountを除き、すべての金額は口座の決済通貨で表記されます。
curl https://api.omise.co/charges \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "amount=100000" \
-d "currency=USD" \
-d "card=$TOKEN_ID"
レスポンス:
{
"object": "charge",
"id": "chrg_test_example00000001",
"location": "/charges/chrg_test_example00000001",
"amount": 100000,
"net": 3174670,
"fee": 120585,
"fee_vat": 8441,
"interest": 0,
"interest_vat": 0,
"funding_amount": 3303696,
"refunded_amount": 0,
"transaction_fees": {
"fee_flat": "0.0",
"fee_rate": "3.65",
"vat_rate": "7.0"
},
"platform_fee": {
"fixed": null,
"amount": null,
"percentage": null
},
"currency": "USD",
"funding_currency": "THB",
"ip": null,
"refunds": {
"object": "list",
"data": [],
"limit": 20,
"offset": 0,
"total": 0,
"location": "/charges/chrg_test_example00000001/refunds",
"order": "chronological",
"from": "1970-01-01T00:00:00Z",
"to": "2023-04-26T04:22:24Z"
},
"link": null,
"description": null,
"metadata": {},
"card": {
"object": "card",
"id": "card_test_example00000001",
"livemode": false,
"location": null,
"deleted": false,
"street1": null,
"street2": null,
"city": "Bangkok",
"state": null,
"phone_number": null,
"postal_code": "10320",
"country": "us",
"financing": "credit",
"bank": "EXAMPLE BANK N.A.",
"brand": "Visa",
"fingerprint": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"first_digits": null,
"last_digits": "4242",
"name": "John Doe",
"expiration_month": 9,
"expiration_year": 2024,
"security_code_check": true,
"tokenization_method": null,
"created_at": "2023-04-26T04:22:22Z"
},
"source": null,
"schedule": null,
"customer": null,
"dispute": null,
"transaction": "trxn_test_example00000001",
"failure_code": null,
"failure_message": null,
"status": "successful",
"authorize_uri": null,
"return_uri": null,
"created_at": "2023-04-26T04:22:23Z",
"paid_at": "2023-04-26T04:22:23Z",
"expires_at": "2023-05-03T04:22:23Z",
"expired_at": null,
"reversed_at": null,
"zero_interest_installments": true,
"branch": null,
"terminal": null,
"device": null,
"authorized": true,
"capturable": false,
"capture": true,
"disputable": true,
"livemode": false,
"refundable": true,
"reversed": false,
"reversible": false,
"voided": false,
"paid": true,
"expired": false
}
為替レート
マルチカレンシー決済では、元のチャージで指定された金額は、日々の仲値レートに約2〜4%上乗せしたレートで口座の決済通貨に自動的に両替されます。Omiseが使用する為替レートはForex APIで確認できます。
チャージの最小・最大金額は口座の決済通貨で設定されているため、マルチカレンシーチャージの実質的な最小・最大金額は、その時点の為替レートによって変動します。
2段階のチャージフロー(オーソリと、その後の別途キャプチャ)を使用する場合、為替レートはオーソリ時点で確定し、キャプチャ時点では変わりません。オーソリ時に設定されたfunding_amountは、その後実際にキャプチャするまでの間に為替レートが変動しても変わりません。
curl https://api.omise.co/forex/usd \
-u $OMISE_SECRET_KEY:
レスポンス:
{
"object": "forex",
"rate": 33.036961874999996,
"location": "/forex/usd",
"livemode": false,
"base": "USD",
"quote": "THB"
}
海外発行カードの処理
マルチカレンシー決済と海外発行カードは、技術的には別の概念です。前者は決済に使う通貨、後者はカードの発行国に関するものです。しかし実際には両者が重なるケースが非常に多く、顧客が決済通貨ではなく自国通貨で支払っている場合、そのカードも別の国で発行されている可能性が高いといえます。そのため、マルチカレンシー決済を有効化している場合は、この機能自体には含まれませんが、以下のAVSに関するガイダンスも導入する価値があります。
AVSによる承認率の改善
マルチカレンシー決済の導入を検討する際は、クレジットカードフォームに本人認証サービス(Address Verification Service, AVS)を導入することも検討してください。AVSは、特に米国・英国・カナダのカード保有者について、海外発行カードの承認成功率を大幅に改善します。実装の詳細については米国・英国・カナダのカード保有者の承認率を改善するには?をご覧ください。
返金
マルチカレンシーチャージの全額または一部の返金には、Refund APIまたはダッシュボードの返金機能を使用します。適用される為替レートは返金を作成した時点のレートであり、元のチャージ時点のレートとは、その間に経過した時間によって異なる場合があります。返金自体は元のチャージ通貨で処理されるため、金額のみを指定すれば問題ありません。
curl https://api.omise.co/charges/$CHARGE_ID/refunds \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "amount=100000"
レスポンス:
{
"object": "refund",
"id": "rfnd_test_example00000001",
"location": "/charges/chrg_test_example00000001/refunds/rfnd_test_example00000001",
"livemode": false,
"voided": true,
"currency": "USD",
"amount": 100000,
"metadata": {},
"charge": "chrg_test_example00000001",
"terminal": null,
"transaction": "trxn_test_example00000002",
"status": "closed",
"funding_amount": 3303696,
"funding_currency": "THB",
"created_at": "2023-04-26T04:22:25Z"
}
ダッシュボード
マルチカレンシーチャージの詳細は、アカウントダッシュボードで確認できます:

トラブルシューティング
よくある問題と解決方法
failed_multi_currency エラーでチャージが失敗する
問題: マルチカレンシーチャージのリクエストがfailed_multi_currencyエラーを返す。
解決方法: このエラーは、アカウントでマルチカレンシー決済が有効化されていないことを示しています。support@omise.coに連絡してこの機能を有効化してください — 有効化する方法を参照してください。APIエラーリファレンスのfailed_multi_currencyもご覧ください。
invalid_charge エラーでチャージが失敗する
問題: 通貨を指定した際にチャージリクエストがinvalid_chargeエラーで失敗する。
解決方法: 指定した通貨が、アカウントの登録国では対応していません。対応通貨の表で、アカウントの登録国に対応する通貨を確認してください。APIエラーリファレンスのinvalid_chargeもご覧ください。
顧客から想定より高い金額を請求されたと報告される
問題: 顧客から、チェックアウトページに表示されていた金額よりも多く請求されたと報告される。
根本原因: 顧客のカード発行会社が、あなたが請求した金額に対して独自の為替レートを適用したためです。詳しい理由と軽減方法については外国為替レートに関する注意事項をご覧ください。
解決方法: - 顧客の銀行が適用する為替レートにより、最終的な金額が多少変動する可能性があることを事前に伝える - 可能な限り、顧客の現地通貨で決済してFXの差異を避ける - 高額決済の場合は、通貨換算による差異について注意書きを表示することを検討する
海外発行カードの承認失敗
問題: 特に米国・英国・カナダのカード保有者で、海外発行カードの失敗率が高い。
解決方法: 決済フォームに本人認証サービス(AVS)を導入してください — AVSによる承認率の改善をご覧ください。
返金額が元のチャージ額と異なる
問題: 決済通貨における返金額が、元のチャージのfunding_amountと異なる。
説明: 返金には、元のチャージ時点のレートではなく、返金作成時点の為替レートが適用されます。チャージから返金までの間に為替レートが変動した場合、funding_amountに差異が生じます。
補足: 顧客は元のチャージ通貨(支払った金額)で返金を受け取るため、この為替レートの差異による影響は受けません。
よくある質問
一般的な質問
マルチカレンシー決済とは何ですか? マルチカレンシー決済とは、口座の決済通貨とは異なる通貨で顧客に請求できる機能です。たとえば、タイの加盟店(THBで決済)は、顧客にUSD、EUR、GBPなど、対応する他の通貨で請求できます。通貨の変換はOmiseが自動的に行います。
マルチカレンシー決済に対応している国はどこですか? タイとシンガポールのみです — 有効化する方法をご覧ください。
マルチカレンシー決済を利用するには特別な承認が必要ですか? はい。申請方法については有効化する方法をご覧ください。
マルチカレンシー決済はどの決済方法でも利用できますか? いいえ。対応しているのはVisaおよびMastercardのクレジットカード・デビットカードのみで、インターネットバンキングなどの代替決済手段には対応していません — 重要な注意事項をご覧ください。
通貨と為替レート
為替レートはどのように決まりますか? 日々の仲値レートに約2〜4%上乗せされます — 為替レートをご覧ください。現在のレートはForex APIで確認できます。
なぜ顧客のカード明細に異なる金額が表示されるのですか? 顧客から想定より高い金額を請求されたと報告されるをご覧ください。
為替レートの差はどのくらいになりますか? 外国為替レートに関する注意事項をご覧ください。
特定の期間、為替レートを固定することはできますか? できません。為替レートは変動制で、取引時点のレートが適用されます。オーソリと決済の間でレートが変わることもあります。
返金にはどの為替レートが適用されますか? 元のチャージ時点のレートではなく、返金作成時点のレートです — 返金をご覧ください。
手数料と決済
マルチカレンシーチャージに追加の手数料はかかりますか?
通常の取引手数料が適用され、為替レートにはすでにOmiseの両替マージンが含まれています。取引手数料はチャージオブジェクトのtransaction_feesフィールドで確認できます。
決済ではどの通貨を受け取りますか? チャージ通貨に関わらず、常にアカウントの決済通貨で受け取ります。たとえば、タイに登録されたアカウントは常にTHBで決済されます。
チャージ作成前に、両替後の金額を知ることはできますか? Forex APIで現在の為替レートを確認し、チャージ金額に掛け合わせてください。確認時と実際のチャージ時とでレートが多少変わる場合があります。
マルチカレンシー決済の最小・最大チャージ金額はいくらですか? 口座の決済通貨で設定されているため、他の通貨での実質的な上限・下限は為替レートに応じて変動します — 通貨と金額をご覧ください。
技術的な実装
マルチカレンシーチャージはどのように作成しますか? 手順については実装方法をご覧ください。
マルチカレンシー決済はテストモードで試せますか? はい。Tokens APIに記載されているテストカード番号とAPIキーを使用してテストできます。
チャージオブジェクトのどのフィールドに通貨情報が表示されますか?
- currency: チャージが作成された通貨(presentment currency)
- funding_currency: アカウントの決済通貨
- amount: presentment currencyでのチャージ金額
- funding_amount: 決済通貨に両替された後の金額
マルチカレンシー決済のためにチェックアウトフォームを変更する必要がありますか?
Omise.jsスクリプトのdata-currencyパラメータを変更するだけで、それ以外の実装は変わりません。
マルチカレンシー決済はCharge Schedule(定期支払い)や継続課金に対応していますか? はい。Charge ScheduleおよびRecurring(継続課金)のどちらでも、マルチカレンシー決済に対応しています。
海外発行カード
マルチカレンシー決済と海外発行カードの違いは何ですか? マルチカレンシー決済は異なる通貨で請求すること(例:タイのアカウントでUSDを請求する)を指します。海外発行カードは、加盟店のアカウントとは異なる国で発行されたカードを指します。両者は別の概念ですが、実際には重なることがよくあります。
海外発行カードの承認失敗が多いのはなぜですか? 海外取引にはカード発行会社による追加の確認要件があり、請求先住所の情報が不足していたり誤っていたりすることが失敗の多くの原因です — AVSによる承認率の改善をご覧ください。
顧客に海外取引手数料が請求されることはありますか? 可能性はあります。顧客の自国通貨で決済した場合でも、カード発行会社が国境を越えた加盟店に対して手数料を課すことがあります。この手数料が適用されるかどうかは、カード発行会社の方針によって決まり、Omiseが決めるものではありません。
返金と申立て(ディスピュート)
マルチカレンシーチャージの返金はどのように行いますか? 返金をご覧ください。元のチャージ通貨で金額を指定してください。
マルチカレンシーチャージを一部返金することはできますか? はい。通常のチャージと同じ方法で、元のチャージ通貨で返金したい金額を指定してください。
チャージから返金までの間に為替レートが変わった場合はどうなりますか? 顧客は元のチャージ通貨で返金を受け取るため影響を受けませんが、決済通貨での換算額は元のfunding_amountと異なる場合があります。返金額が元のチャージ額と異なるをご覧ください。
マルチカレンシーチャージの申立て(ディスピュート)はどのように扱われますか? Omiseは元のチャージ通貨で申立てを処理します。申立てに敗訴した場合、Omiseは申立て解決時点の為替レートを使って、引き落とし額を決済通貨に変換します。