マルチカレンシー
このページで扱うトピック
アカウントの入金通貨とは異なる通貨でクレジットカードおよびデビットカードのchargeを行うには、Multi-currencyを使用します。Omiseはアカウントの入金通貨(settlement通貨)への為替換算を透過的に処理し、カード保有者が希望する通貨(presentment通貨)で購入できるようにします。
この機能の使い方について、以降で説明します。
🔓 有効化の方法
- 対応国: タイ、シンガポール
- 最低APIバージョン:
2014-07-27
Multi-currencyを有効にするには、この機能を希望する旨のメールをsupport@omise.co宛てに送信してください。新しい利用規約の確認と同意が必要です。
重要な注意事項
- この機能はクレジットカードおよびデビットカードのchargeのみに対応しており、Internet Bankingなどの代替の支払い方法には対応していません
- この機能はVisaおよびMastercardブランドのカードのみに対応しています
- 状況によっては、カード保有者が自国通貨で支払った場合でも、カード発行会社から海外取引手数料を請求されることがあります
外国為替レートに関する留意点
自国通貨以外の通貨(settlement通貨と異なる通貨)でchargeを行う場合、カード保有者はカード発行会社が定める為替レートの適用を受けます。このカード発行会社側のFXレートは、charge時点でOmiseが適用するレートよりも高くなることが多く、Omiseがコントロールできるものではありません。
⚠️ 重要: 高額決済では、Omiseのレートとカード発行会社のレートとの間で為替差額が2,000〜3,000THB以上になることがあります。顧客の混乱や異議申立てを避けるため、可能な限り現地通貨でchargeを行うことをOmiseは推奨します。
💱 対応通貨
対応通貨は、アカウントが登録されている国によって異なります。
| 通貨コード | 名称 | タイ | シンガポール | マレーシア* | 日本* |
|---|---|---|---|---|---|
| AUD | オーストラリアドル | ✓ | ✓ | ||
| CAD | カナダドル | ✓ | |||
| CHF | スイスフラン | ✓ | ✓ | ||
| CNY | 人民元 | ✓ | ✓ | ||
| DKK | デンマーク・クローネ | ✓ | |||
| EUR | ユーロ | ✓ | ✓ | ||
| GBP | 英国ポンド(スターリング・ポンド) | ✓ | ✓ | ||
| HKD | 香港ドル | ✓ | ✓ | ||
| JPY | 日本円 | ✓ | ✓ | ✓† | |
| MYR | マレーシア・リンギット | ✓ | ✓† | ||
| SGD | シンガポールドル | ✓ | ✓† | ||
| THB | タイバーツ | ✓† | ✓ | ||
| USD | 米ドル | ✓ | ✓ |
* マレーシアおよび日本で登録されたアカウントでは、Multi-currencyはご利用いただけません。 † アカウントの入金通貨
🛠️ 実装方法
タイで登録されたアカウントを使って、USD 1,000のchargeを作成する手順を見ていきましょう。
Multi-currency chargeの作成は、通常のcharge作成とほとんど同じです。
トークンの作成
トークンを作成するには、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>
Multi-currency chargeの作成
前の手順で作成したtokenを使用して、charge APIのリクエストを作成します。生成されたcharge objectの以下の属性を確認してください。
currency: chargeが作成された通貨(USD
)funding_currency: アカウントの入金通貨(THB
)funding_amount: アカウントの入金通貨に換算した後のcharge金額
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
}
為替レート
Multi-currency chargeでは、元のchargeで指定した金額は、日次の仲値レートに約2〜4%上乗せしたレートで、アカウントの入金通貨へ透過的に換算されます。Omiseが適用する為替レートを確認するには、Forex APIをリクエストしてください。
chargeの最小・最大金額はアカウントの入金通貨で設定されているため、Multi-currency chargeにおける実質的な最小・最大金額は、その時点の為替レートによって変動します。
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"
}
🌍 海外発行カードの処理
Multi-currency取引と海外発行カードは技術的には別の概念ですが、実際にはあわせて発生することがよくあります。Multi-currency決済を受け付ける加盟店の多くは、海外発行カードも処理しています。
AVSによるオーソリ成功率の向上
Multi-currency決済の受け付けを検討する際は、クレジットカードフォームへの住所確認サービス(Address Verification Service、AVS)の導入もあわせてご検討ください。AVSは、特に米国、英国、カナダのカード保有者について、オーソリの成功率を大幅に向上させます。
AVSの実装に関する詳しいガイダンスについては、こちらをご覧ください: How can I improve my authorization rate for US, UK, and Canadian cardholders?
AVSを実装することで、海外発行カードの検証に関連する失敗した取引を減らし、顧客の決済体験全体を向上させることができます。
💸 返金
Multi-currency chargeの全額または一部の返金は、Refund APIまたはダッシュボードから行えます。適用される為替レートは、返金を作成した時点のレートです。返金は元のcharge通貨で処理されるため、金額のみを指定すれば十分です。
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"
}
📊 ダッシュボード
Multi-currency chargeの詳細は、アカウントのダッシュボードで確認できます。

🔧 トラブルシューティング
よくある問題と解決策
chargeがfailed_multi_currencyエラーで失敗する
問題: Multi-currency chargeのリクエストがfailed_multi_currencyエラーを返します。
解決策: このエラーは、アカウントでMulti-currencyが有効になっていないことを示しています。この機能を有効にするにはsupport@omise.coまでご連絡ください。Multi-currencyの利用規約の確認と同意が必要です。APIエラーリファレンスのfailed_multi_currencyもあわせてご覧ください。
chargeがinvalid_chargeエラーで失敗する
問題: 通貨を指定してchargeをリクエストすると、invalid_chargeエラーで失敗します。
解決策: 指定した通貨が、アカウントの登録国では対応していません。対応通貨の表で、アカウントの登録国に対応している通貨を確認してください。APIエラーリファレンスのinvalid_chargeもあわせてご覧ください。
顧客から想定より高い金額を請求されたと報告される
問題: 顧客から、チェックアウトページに表示されていた金額よりも多く請求されたと報告される。
根本原因: カード保有者の自国通貨とは異なる通貨でchargeを行うと、カード発行会社が独自の外国為替レートを適用します。このカード発行会社側のレートは、通常Omiseのレートよりも高く、カード保有者の明細書に表示される金額がチェックアウト時と異なる場合があります。
解決策: - 銀行の為替レートにより最終的な金額が多少変動する可能性があることを、あらかじめ顧客に案内する - 可能な限り、顧客の現地通貨でchargeを行い、FXの差異を避ける - 高額決済の場合は、通貨換算による差異についての注意書きの表示を検討する
海外発行カードのオーソリ失敗
問題: 特に米国、英国、カナダのカード保有者について、海外発行カードのオーソリ失敗率が高い。
解決策: 決済フォームに住所確認サービス(AVS)を実装してください。AVSは海外取引のオーソリ成功率を大幅に向上させます。実装の詳細についてはHow can I improve my authorization rate for US, UK, and Canadian cardholders?をご覧ください。
返金額が元のchargeと異なる
問題: settlement通貨における返金額が、元のcharge時のfunding金額と異なる。
説明: 返金には、元のcharge時のレートではなく、返金を作成した時点の為替レートが適用されます。charge時と返金時の間で為替レートが変動している場合、funding金額に差が生じます。
補足: 顧客は元のcharge通貨(実際に支払った金額)で返金を受け取るため、この為替レートの差異による影響は受けません。
❓ よくある質問
一般的な質問
Multi-currency chargeとは何ですか? Multi-currency chargeを使うと、アカウントのsettlement通貨とは異なる通貨で顧客にchargeできます。例えば、タイを拠点とする加盟店(THBでsettlementされる)が、USD、EUR、GBPなど対応する他の通貨で顧客にchargeすることができます。通貨の換算はOmiseが自動的に処理します。
Multi-currencyに対応している国はどこですか? Multi-currencyは現在、タイおよびシンガポールで登録されたアカウントでご利用いただけます。対応状況はアカウントの登録国によって異なります。
Multi-currencyを利用するには特別な承認が必要ですか? はい。アカウントでMulti-currencyを有効にするにはsupport@omise.coまでご連絡のうえ、更新された利用規約に同意していただく必要があります。
Multi-currencyはどの支払い方法でも使えますか? いいえ。Multi-currencyが対応しているのはVisaおよびMastercardのクレジットカード・デビットカードのみです。Internet Bankingなどの代替の支払い方法には対応していません。
通貨と為替レート
為替レートはどのように決まりますか? Omiseは、charge通貨をsettlement通貨に換算する際、日次の仲値レートに約2〜4%上乗せしたレートを適用します。現在のレートはForex APIで確認できます。
顧客のカード明細に異なる金額が表示されるのはなぜですか? 顧客の自国通貨とは異なる通貨でchargeを行うと、カード発行会社がchargeの換算に独自の為替レートを適用します。発行会社のレートは、通常Omiseのレートとは異なり(多くの場合より高く)、チェックアウト時に表示される金額と明細書上の金額に差異が生じることがあります。このFXレートはカード発行会社が設定するものであり、Omiseが設定するものではありません。
為替レートの差はどの程度になりますか? 高額決済では、Omiseのレートとカード発行会社のレートとの間で為替差額が2,000〜3,000THB以上になることがあります。混乱を最小限に抑えるため、可能な限り顧客の現地通貨でchargeを行うことをおすすめします。
特定の期間、為替レートを固定することはできますか? できません。為替レートは変動制であり、取引時点のレートが適用されます。オーソリからsettlementまでの間にレートが変わる可能性があります。
返金にはどの為替レートが適用されますか? 返金には、元のcharge時のレートではなく、返金を作成した時点の為替レートが適用されます。顧客は元のcharge通貨で返金を受け取ります。
手数料と入金
Multi-currency chargeに追加料金はかかりますか?
通常の取引手数料が適用されます。為替レートにはOmiseの通貨換算マージン(仲値レートに約2〜4%上乗せ)が含まれています。取引手数料はcharge objectのtransaction_feesフィールドで確認できます。
入金はどの通貨で受け取れますか? 入金は常にアカウントの入金通貨(settlement通貨)で受け取ります。例えば、アカウントがタイで登録されている場合、charge通貨にかかわらずTHBで入金されます。
charge作成前に換算後の金額を知る方法はありますか? Forex APIで現在の為替レートを確認し、charge金額にそのレートを掛けることでfunding金額の目安を算出できます。確認した時点と実際のcharge時とでレートがわずかに変わる場合がある点にご注意ください。
Multi-currencyのchargeの最小・最大金額はいくらですか? 最小・最大金額はアカウントの入金通貨で設定されています。Multi-currency chargeにおける実質的な上限・下限は、その時点の為替レートによって変動します。例えば、最小金額がTHB 20で、USDでchargeする場合、最小USD金額はTHB/USDの為替レートに応じて変動します。
技術的な実装
Multi-currency chargeはどのように作成しますか?
通常のchargeと同様に作成しますが、settlement通貨とは異なるcurrencyパラメータを指定します。手順の詳細は実装方法セクションをご覧ください。
テストモードでMulti-currencyを試すことはできますか? はい。Multi-currencyはテストモードでも動作します。Tokens APIに記載されているテスト用のカード番号とAPIキーをご利用ください。
charge objectのどのフィールドに通貨情報が表示されますか?
主なフィールドは次のとおりです。
- currency: chargeが作成された通貨(presentment通貨)
- funding_currency: アカウントのsettlement通貨
- amount: presentment通貨でのcharge金額
- funding_amount: settlement通貨に換算した金額
Multi-currencyのためにチェックアウトフォームを変更する必要がありますか?
Omise.jsのスクリプトでdata-currencyパラメータを指定するだけで済みます。それ以外の実装は変わりません。
海外発行カード
Multi-currencyと海外発行カードの違いは何ですか? Multi-currencyは異なる通貨でchargeを行うこと(例: タイのアカウントでUSDのchargeを作成する)を指します。海外発行カードとは、加盟店アカウントとは異なる国で発行されたカードを指します。両者は別の概念ですが、実際にはあわせて発生することがよくあります。
海外発行カードのオーソリが失敗しやすいのはなぜですか? 海外取引では、カード発行会社による追加の確認が必要になります。多くの失敗は、請求先住所の情報が未入力または誤っていることが原因です。
AVSとは何ですか。またMulti-currencyにとってなぜ重要ですか? 住所確認サービス(AVS)は、カード保有者の請求先住所をカード発行会社に照会して確認する仕組みです。海外発行カード(特に米国、英国、カナダのカード)では、AVSによってオーソリの成功率が大幅に向上します。Multi-currency決済を受け付けている場合、海外発行カードも扱っている可能性が高いため、AVSの導入を推奨します。
顧客に海外取引手数料が請求されることはありますか? その可能性があります。顧客の自国通貨でchargeを行った場合でも、加盟店アカウントが顧客とは異なる国にある場合、カード発行会社が海外取引手数料を適用することがあります。これはカード発行会社のポリシーによって決まるものであり、Omiseが決めるものではありません。
返金と異議申立て
Multi-currency chargeはどのように返金しますか? Refund APIまたはダッシュボードから返金を作成します。金額は元のcharge通貨で指定してください。返金は、顧客が実際にchargeされた通貨と同じ通貨で処理されます。
Multi-currency chargeで一部返金はできますか? はい。一部返金は通常のchargeと同様に行えます。返金したい金額を元のcharge通貨で指定してください。
charge時と返金時で為替レートが変わった場合はどうなりますか? 顧客は元のcharge通貨で返金を受け取るため、為替レートの変動による影響は受けません。ただし、為替レートの変動により、settlement通貨への換算後の金額が元のfunding金額と異なる場合があります。
Multi-currency chargeで異議申立てが発生した場合はどうなりますか? 異議申立ては元のcharge通貨で処理されます。異議申立てに敗訴した場合、引き落とし金額は異議申立て解決時点の為替レートでsettlement通貨に換算されます。