エラーコード

UnivaPay で発生するエラーは、APIリクエストエラーとペイメントエラーに分けられます。APIリクエストエラーは、何らかの理由でAPIの呼び出しが正しく行えなかったことを表します。API呼び出しが正常に行えた場合でも、課金や返金等のゲートウェイとの処理が失敗した場合はペイメントエラーが発生します。

APIリクエストエラー

このエラーは APIリクエストが正常に受け付けられなかったことを意味し、HTTP ステータスコードが 4xx もしくは 5xx 系統で返されます。

HTTP ステータス内容
400 Bad Requestsリクエストの内容に問題があります。詳細はボディのエラー情報で提供されます。
401 Unauthorized認証ができませんでした。Authorization ヘッダが無いか、内容に問題があります。
403 Forbiddenリクエストを実行する為の権限が不足しています。
404 Not Found指定されたパスもしくはリソースIDは存在しません。
429 Too Many Requestsレート制限の上限に達した場合に発生します。
500 Internal Server ErrorUnivaPay システム内部で予期しないエラーが発生しました。この場合、処理の一部は実行されている可能性があります。

また、多くの場合、以下のJSONの形式で詳細なエラー情報が提供されます。

  • status (string) – レスポンスの種別 (一般的に error になります)。
  • code (string) – エラーコード.
  • errors – 以下の要素の配列。
    • field (optional, string) – エラーが発生してたリクエストのパラメータ
    • reason (string) – エラーの詳細な理由

例 HTTPステータスコードのみの場合:

HTTP/1.1 429 Too Many Requests
...
Content-Length: 0

例 JSONのエラー情報が返され、エラーコードのみの場合:

HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...

{
    status: "error",
    code: "NON_UNIQUE_ACTIVE_TOKEN"
    errors: []
}

例 JSONのエラー情報が返され、リクエストパラメータに関して詳細なエラー理由がある場合:

HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...

{
    status: "error",
    code: "VALIDATION_ERROR"
    errors: [{
        field: "card_number"
        reason: "INVALID_CARD_NUMBER"
    }]
}

例 JSONのエラー情報が返され、より詳細なエラーの理由がある場合:

HTTP/1.1 400 Bad Requests
...
Content-Type: application/json
...

{
    status: "error",
    code: "CHARGE_AMOUNT_TOO_LOW"
    errors: [{
        reason: "Charge amount must exceed 100"
    }]
}

APIリクエストエラーのエラーコード

JSON形式の詳細なエラー情報が提供される場合、エラーコードは以下のような内容を意味します。

HTTPステータスエラーコード内容
400ALREADY_CAPTURED対象の課金は既にキャプチャ済みか、オーソリが完了していません。
400AUTH_NOT_SUPPORTEDオーソリに対応したゲートウェイが設定されていません。
400CANCEL_NOT_ALLOWEDこの支払い方法はキャンセルに対応していません。もしくは対象の課金のステータスはキャンセルできない状態です。 詳細はキャンセルを参照。
400CANNOT_CHANGE_CANCELED_SUBSCRIPTIONキャンセルされた定期課金は変更することはできません。
400CANNOT_CHANGE_TOKENこの状態の定期課金のトランザクショントークンは変更できません。トランザクショントークンの変更可能な条件は定期課金の更新を参照。
400CANNOT_REFUND_UNSUCCESSFUL_CHARGEsuccessful 以外の状態の課金は返金できません。
400CAPTURE_AMOUNT_TOO_LARGEキャプチャの金額がオーソリ時の金額より大きいです。
400CARD_BRAND_NOT_SUPPORTED指定されたカードブランドに対応したゲートウェイが設定されていません。
400CARD_COUNTRY_NOT_SUPPORTED指定されたカード発行国に対応したゲートウェイが設定されていません。
400CARD_PROCESSING_DISABLED支払い方法でカードが無効になっています。
400CHARGE_TOO_QUICK制限付きのリカーリングトークンで、指定期間内に複数の課金を作成しようとしました(リカーリングトークン)。
400CONVENIENCE_PROCESSING_DISABLED支払い方法でコンビニ決済が無効になっています。
400CURRENCY_MUST_MATCH_CHARGE返金時の通貨は課金時の通貨と同じである必要があります。
400CVV_REQUIREDCVV の提供が必要です。
400FILE_INVALID_TYPEアップロードされたファイルの MIME タイプが正しくありません。
400FILE_MAX_SIZE_EXCEEDEDアップロードされたファイルのサイズが大きすぎます。
400FORBIDDEN_IPリクエスト元のIPアドレスから割り出された国が、設定された許可する国に含まれていません。
400INSTALLMENT_MAX_PAYOUT_PERIOD_EXCEEDED分割払いの支払期間が、設定された最大の支払期間を超過しています。
400INSTALLMENT_PAYMENT_TYPE_NOT_ALLOWED_FOR_PLAN分割払いの支払い方法として許可されていない支払い方法です。
400INSTALLMENT_INVALID_CYCLES_COUNT利用できない分割回数です。
400INSTALLMENT_INVALID_PLANサポートされていない分割支払いプランです。
400INVALID_PLATFORMプラットフォームの指定が正しくありません。
400INVALID_TOKEN_TYPEトランザクショントークンの種類が正しくありません。
400INVALID_QR_SCAN_GATEWAYQRコード決済のゲートウェイが設定されていないか有効ではありません。
400LAST_NAME_REQUIREDカード名義にスペースで区切られた苗字が必要です。
400LIVE_MODE_NOT_ENABLED_WHEN_UNVERIFIED本番モード(live)を使用するにはアカウントの審査の完了が必要です。
400NO_DIRECT_CURRENCY_GATEWAY通貨の変換をせずに利用可能なゲートウェイが設定されていません。
400NO_GATEWAYS_AVAILABLE利用可能なゲートウェイが見つかりません。
400NO_TEST_CARD_IN_LIVE_MODE本番モード(live)でテストカードは使用できません。
400NON_SUBSCRIPTION_PAYMENT課金の作成にワンタイムトークンもしくはリカーリングトークンを指定してください。
400NOT_ONE_TIME_TOKENワンタムトークン以外はサポートされていません。
400NOT_SUBSCRIPTION_TOKEN定期課金トークンもしくはリカーリングトークンを指定してください。
400PARTIAL_CAPTURE_NOT_SUPPORTED部分的なキャプチャはサポートされていません。
400QR_PROCESSING_DISABLED支払い方法でQRコードが無効になっています。
400RECURRING_TOKEN_DISABLEDトランザクショントークンが無効になっているか、アカウントにリカーリングトークンを使用する権限がありません。
400RECURRING_USAGE_LIMIT_REQUIREDusage_limit パラメータが必要です。
400RECURRING_USAGE_REQUIRES_CVVCVV の提供が必要です。
400REFUND_EXCEEDS_CHARGE_AMOUNT返金金額が課金金額を超過しています。
400REFUND_NOT_ALLOWED返金に対応していない支払い方法、もしくは返金が許可されませんでした。
400RESOURCE_LIMIT_REACHEDリソース制限の上限に達しました。
400SUBSCRIPTION_ALREADY_ENDED定期課金は既に終了しています。
400TOKEN_FOR_WRONG_STOREトランザクショントークンのストアが定期課金のストアと異なります。
400TRANSACTION_ALREADY_PROCESSED使用済みのトランザクショントークンは指定できません。
400TRANSACTION_TOKEN_EXPIREDトランザクショントークンの有効期限が切れました。
400USAGE_LIMIT_NOT_APPLICABLEusage_limit は指定できません。
400VALIDATION_ERRORリクエスト内容のパラメータにバリデーションエラーがあります。詳細は errors を参照してください。
401AUTH_HEADER_MISSINGAuthorization ヘッダが指定されていません。
401EXPIRED_LOGIN_TOKENログイントークンの有効期限が切れました。
401INVALID_APP_TOKENアプリケーショントークンの指定が正しくありません。
401INVALID_CREDENTIALS認証情報が正しくありません。
401INVALID_DOMAINリクエストされた Origin ヘッダのドメインは、指定されたアプリケーショントークンのドメインに登録されていません。
401INVALID_LOGIN_TOKENログイントークンが無効です。
403CARD_LOCKEDこのカードは一定期間内の失敗回数がしきい値を超えた為、一時的にロックされています。
30分以内に5回以上失敗で、2時間制限をかけます。
403INVALID_PERMISSIONSアプリケーショントークンの種類が正しくないか、アカウントの権限が不足しています。
403INSTALLMENT_PROCESSOR_INITIAL_AMOUNTS_NOT_SUPPORTEDこのゲートウェイでは初回金額の指定はサポートされていません。
403OUTDATED_APP_TOKENアプリケーショントークンのバージョンが古いです。新しくアプリケーショントークンを作成しなおしてください。
403TEST_CARD_CANNOT_BE_BANNEDテストカードは禁止できません。
409IDEMPOTENCY_KEY_CONFLICT冪等性が保証されたリクエストの際に、指定された冪等性キーが以前に異なるAPIやメソッドで使用されています。
409NON_UNIQUE_ACTIVE_TOKENアクティブなトランザクショントークンが既に存在します。
409WEBHOOK_URL_EXISTS指定されたURLは既に登録されています。
500COULD_NOT_REFRESH_AUTHログイントークンの更新に失敗しました。サポートへお問い合わせください。
500DB_ERROR内部データベースエラー。サポートへお問い合わせください。
500FILE_UPLOAD_ERROR
500IMPROPER_AUTHオーソリの状態が正しくありません。サポートへお問い合わせください。
500TIMEOUT内部処理でタイムアウトが発生しました。サポートへお問い合わせください。
500UNABLE_TO_GET_IDEMPOTENT_RESULT冪等性キーに該当するキャッシュは見つかった為、リクエストされた内容は処理しませんでしたが、以前の処理結果のキャッシュの取得に失敗しました。
500UNKNOWN_ERROR予期しないエラーです。サポートへお問い合わせください。
503SERVICE_UNAVAILABLE_TRY_AGAINサービスが一時的に利用できません。時間を置いて再試行してください。

エラーの詳細な理由

reason フィールドには更に詳細な理由が記載されます。

詳細な理由のコード内容
CAPTURE_ONLY_FOR_CARD_PAYMENTカード決済の場合のみキャプチャが可能。
CAPTURE_ONLY_FOR_CREDIT_CARDSオーソリはカードの種別がクレジットカードのみ可能です。デビットカード、プリペイドカード等ではオーソリは利用できません。
CARD_LIMIT_EXCEEDED_FOR_STORE一定期間内でのカードの合計決済額が限度額を超えました。
CHANGE_PROHIBITEDこのフィールドの変更は禁止されています。
CHARGE_AMOUNT_TOO_HIGH課金金額が課金最大額より超過しています。
CHARGE_AMOUNT_TOO_LOW課金金額が課金最少額より不足しています。
DEPRECATED非推奨のパラメータです。
EXPIRATION_DATE_OUT_OF_BOUNDS有効期限が許可された範囲外です。
FORBIDDEN_PARAMETERこのパラメータを使用する権限が不足しているか、要件を満たしていません。
INSTALLMENT_ALREADY_SET定期課金が既に開始しているため変更できません。
INSTALLMENT_INVALID_PLAN_TYPE認識できない分割払いプランです。
INVALID_AMOUNT金額は 0 より大きい整数である必要があります。
INVALID_CARD_BRAND認識できないカードブランドです。
INVALID_CARD_DESCRIPTORディスクリプタの形式が正しくありません。
INVALID_CARD_EXPIRATIONカード有効期限が過ぎています。
REFUND_NOT_WITHIN_BOUNDS返金金額が有効な範囲ではありません。0より大きく、課金金額以下の必要があります。
INVALID_CARD_NUMBERカード番号の形式が正しくありません。
INVALID_CHARGE_STATUS不正な課金の状態です。
INVALID_CURRENCY認識できない通貨です。
INVALID_CVVCVVは 3から5桁の整数である必要があります。
INVALID_FORMAT不正な形式です。
INVALID_FORMAT_COUNTRY認識できない国コードです。
INVALID_FORMAT_CURRENCY認識できない通貨コードです。
INVALID_FORMAT_DOMAINドメイン名の形式が不正です。
INVALID_FORMAT_EMAILメールアドレスの形式が不正です。
INVALID_LANGUAGE認識できない言語コードです。
INVALID_PHONE_NUMBER電話番号の形式が不正です。
INVALID_SCHEDULED_CAPTURE_DATEキャプチャ実行日時は、現在から1時間後かつ7日以内である必要があります。
INVALID_TIME_PERIOD認識できない期間の形式です。
MUST_BE_FUTURE_TIME未来の日時の必要があります。
MUST_BE_LOWER_THAN_FULL_AMOUNT合計金額より少ない必要があります。
MUST_BE_MONTH_BASED_TO_SET課金を行う頻度が monthly である必要があります。
NESTED_JSON_NOT_ALLOWEDネストされた JSON の形式は使用できません。
NOT_SUPPORTED_BY_PROCESSORゲートウェイでサポートされていません。
ONLY_FOR_CARD_PAYMENT支払い方法がカードでのみ利用できます。
ONLY_JAPANESE_PHONE_NUMBER_ALLOWED日本の電話番号のみサポートされています。
REQUIRED_VALUE必須のパラメータです。

ペイメントエラー

課金(Charge)返金(Refund)などのリソースは、リソースの作成、つまりリクエストの受付に成功した場合でも、実際にゲートウェイでの処理に失敗した場合等にエラーが発生する場合があります。この場合、課金や返金の状態は failed になり、error フィールドに以下のデータが設定されます。

  • code (number) – 課金が失敗またはエラーになった理由を表すエラーコード
  • message (string) – 課金が失敗した理由
  • detail (string) – 課金が失敗した詳細理由

エラーコードは、以下の通りです。

コード内容
301不正なカード番号です。
302不正な有効期限(月)です。
303不正な有効期限(年)です。
304有効期限切れです。
305不正なセキュリティコードです。
306カードが拒否されました。
307不正なカードです。
308不正なカードデータです。
309一般エラーが発生しました。詳細情報があります。
310ユーザーデータが不正です。
311短期間に同一カードでの課金が多すぎます。しばらく待ってから再試行してください。
312この課金はキャンセルできません。
313オーソリの期限が切れました(課金のキャプチャ時)。
314このカードは盗難されたものとして報告されたか、発行会社によって無効化されました。加盟店は利用者のこのカードを差し押さえてください。
315カード発行会社へお問い合わせください。
316名義人の姓は必須です。
317部分的なキャプチャはサポートされていません。
318部分的な返金はサポートされていません。
319不正行為の疑いがあります。
320銀行側のシステムでエラーが発生しました。
321ダイナミックディスクリプタはサポートされていません。
322バーコード/QRコードが無効です。
323バーコード/QRコードの有効期限が切れています。
324このバーコード/QRコードは既に処理済みです。
325このバーコード/QRコードは現在処理中です。
326リスクプロファイルが高いため拒否されました。
327確認期限が切れています。
328復帰に失敗しました。手動による介入が必要です。
329返金に失敗しました。
330残高が不足しています。
331メタデータフィールドの値が無効または不足しています。
332国境を越えた取引は許可されていません:身分証明書がありません。
333国境を越えた取引は許可されていません:電話番号がありません。
334国境を越えた取引は許可されていません:承認されていない支払方法です。
335国境を越えた取引は許可されていません:名前がありません。
336この支払方法の決済制限を超えました。
337この加盟店の決済制限を超えました。
338決済情報が見つかりません。
339決済情報が重複しています。
340このユーザーのリテールQRアカウントはゲートウェイによって拒否されました。
341この加盟店には、このゲートウェイに必要な情報が不足しています。
342国境を越えた取引は許可されていません: 承認されていない通貨です。
343ゲートウェイでサーバーエラーが発生したため、支払いを処理できませんでした。
344選択した支払方法は、ゲートウェイにより一時的に利用できません。

コード内容
500リクエストを実行したところ、前処理エラーが発生しました。正しい入力が行われたことを確認し、詳細はエラーメッセージを参照してください。
501内部エラーが発生しました。サポート担当者にご連絡ください。
502リクエストを実行しましたが、レスポンスせずにタイムアウトとなりました。

税関申告エラー

税関申告リソースは、失敗するとエラー情報を返すことがあります。税関申告エラーには、以下の情報が含まれます。

  • code (number) – エラーコードを照合するために使用できる一意のキー
  • message (string) – エラーの簡単な説明
  • detail (string) – より詳細なエラーメッセジがった場合の詳細

コードの定義は以下の表のとおりです。

コード内容
601Univapayでシステムリリースされたエラーが発生しましたが、具体的な情報はdetailをご覧ください。
602ペイメントプロセッサーが送信されたリクエストを拒否しました。具体的な情報はdetailをご覧ください。
603提出されたお客様の身元確認は、税関当局によって拒否されました。
604必要なお客様のID情報が加盟店から提出されていなかった。