APIエラー

OmiseのAPIでは、エラー発生時にエラーの種類、原因、具体的なエラーメッセージを記載したJSONを返します。このJSONに含まれる言語は英語のみで、他言語のメッセージはサポートしていません。

Type Error Code HTTP Status
Charge brand_not_supported 400
Charge expired_charge 400
Charge failed_capture 400
Charge failed_multi_currency 400
Charge failed_refund 400
Charge failed_reverse 400
Charge failed_void 400
Charge invalid_amount 400
Charge invalid_charge 400
Charge processed_charge 400
Dispute invalid_dispute 400
Document documents_locked 400
Document invalid_file_type 400
Document missing_file 400
General authentication_failure 401
General backend_error 502
General bad_request 400
General failed_deletion 422
General feature_not_supported 400
General internal_error 500
General invalid_card_token 400
General key_expired_error 403
General locked_account_error 403
General not_found 404
General service_not_found 404
General used_token 400
Link invalid_link 400
Recipient invalid_bank_account 400
Recipient invalid_recipient 400
Search invalid_filter 422
Search invalid_page 422
Search invalid_per_page 422
Search invalid_scope 422
Search search_unavailable 503
Token invalid_card 400
Token invalid_domain 400
Token missing_card 400
Transfer invalid_transfer 400

Charge Errors

Brand Not Supported

An attempt was made to create a charge using a card with a brand not supported by the account. Check the account capability and try again.

Type Error Code HTTP Status
Charge brand_not_supported 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#brand-not-supported', 
 'code': 'brand_not_supported', 
 'message': 'brand not supported'
}

Expired Charge

Expired Chargeエラーは、charge captureができなくなった有効期限切れのchargeをcaptureしようとした際に発生するエラーです。 authorizedしたchargeをcaptureせずに7日以上経過(この期間は国、クレジットカードのイシュアーによって異なります。) させると、自動的にそのchargeはキャンセルされてしまいます。

下記は、Curlで、有効期限が切れたchargeでcaptureを試み、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Charge expired_charge 400

Curl

curl https://api.omise.co/charges/chrg_test_4xvqmz1wx93it4cut8g/capture \
-X POST  \
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#expired-charge', 
 'code': 'expired_charge', 
 'message': 'charge expired'
}

Failed Capture

Failed Captureエラーは、Chargeのcaptureの使い方を誤った際に発生するエラーです。 Chargeがauthorizedされていなかった、またはすでにcaptureしているChargeでcaptureを実行すると発生します。 詳細は、このエラーメッセージに含まれますので、内容を確認の上ご理解ください。

下記は、Curlで意図的にFailed Captureエラーを発生させる例です。

Type Error Code HTTP Status
Charge failed_capture 400

Curl

curl https://api.omise.co/charges/chrg_test_4xvqmz1wx93it4cut8g/capture \
-X POST  \
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-capture', 
 'code': 'failed_capture', 
 'message': 'capture failed'
}

Failed Multi Currency

The account multi-currency settings need to be adjusted. Please contact support@omise.co.

Type Error Code HTTP Status
Charge failed_multi_currency 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-multi-currency', 
 'code': 'failed_multi_currency', 
 'message': 'the currency conversion could not be completed'
}

Failed Refund

An attempt was made to process a refund outside of the allowable, country-specific limits.

Type Error Code HTTP Status
Charge failed_refund 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-refund', 
 'code': 'failed_refund', 
 'message': 'charge exceeds refund limit (1000 refunds/charge)'
}

Failed Reverse

An attempt was made to reverse a charge, but the charge was not reversed. See the message attribute for more information.

Type Error Code HTTP Status
Charge failed_reverse 400

Curl

curl https://api.omise.co/charges/chrg_test_4xso2s8ivdej29pqnhz/reverse \
-X POST \
-u skey_test_4xsjvwfnvb2g0l81sjz:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-reverse', 
 'code': 'failed_reverse', 
 'message': 'only uncaptured authorized charges can be reversed'
}

Failed Void

Failed Voidエラーは、Refund APIでrefundを作成した際に、voidパラメーターをtrueとした際、refund対象のchargeはvoidができないケースがあり、この場合に発生するエラーです。

下記は、Curlで、意図的にFailed Voidエラーを発生させる例です。

Type Error Code HTTP Status
Charge failed_void 400

Curl

curl https://api.omise.co/charges/chrg_test_4ype2jynk2len88i4er/refunds \
-X POST \
-u skey_test_4ypcvnwzy9ob6gs89pn: \
-d "amount=10000" \
-d "void=true"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-void', 
 'code': 'failed_void', 
 'message': 'void failed'
}

Invalid Amount

invalid_amount は、リクエストされた課金額が無効な時に返されるエラーです。 テストとして意図的に同エラーを発生させる場合は、以下の例を参考に、無効な金額でAPIリクエストを送信してください。

Type Error Code HTTP Status
Charge invalid_amount 400

Curl

curl https://api.omise.co/charges \
-X POST \
-u skey_test_4xsjvwfnvb2g0l81sjz: \
-d "description=Invalid amount order" \
-d "amount[]=2000" \
-d "currency=thb" \
-d "return_uri=http://www.example.com/orders/3947/complete" \
-d "card=tokn_test_4xvpea0ifwajbx3f873"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-amount', 
 'code': 'invalid_amount', 
 'message': 'invalid amount'
}

Invalid Charge

Invalid Chargeエラーは、Chargeを作成する際に付与するパラメーターの値の型が間違っている場合に発生するエラーです。 下記は、Curlで、Chargeのパラメータの値の一部を誤った型で指定し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Charge invalid_charge 400

Curl

curl https://api.omise.co/charges \
-X POST \
-u skey_test_4xc6eevsmz5phbtjcaf: \
-d "amount=eleventy" \            # Not an integer
-d "currency=bottle caps" \       # Currently not an accepted currency
-d "return_uri=http://www.example.com/orders/3947/complete" \
-d "customer=cust_test_4xko29qxltncwq3u0i3"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-charge', 
 'code': 'invalid_charge', 
 'message': 'currency is currently not supported and amount is not a number'
}

Processed Charge

An attempt was made to process an offline charge, but the charge was already processed.

Type Error Code HTTP Status
Charge processed_charge 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#processed-charge', 
 'code': 'processed_charge', 
 'message': 'charge was already processed'
}

Dispute Errors

Invalid Dispute

An attempt was made to modify a dispute outside of the allowed parameters.

Type Error Code HTTP Status
Dispute invalid_dispute 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-dispute', 
 'code': 'invalid_dispute', 
 'message': 'invalid dispute'
}

Document Errors

Documents Locked

An attempt was made to upload a file to a dispute that is no longer open (status=open).

Type Error Code HTTP Status
Document documents_locked 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#documents-locked', 
 'code': 'documents_locked', 
 'message': 'documents list cannot be modified'
}

Invalid File Type

An attempt was made to upload a file with a type outside of the allowed file types. See Documents API for supported filetypes.

Type Error Code HTTP Status
Document invalid_file_type 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-file-type', 
 'code': 'invalid_file_type', 
 'message': 'invalid content-type'
}

Missing File

An attempt was made to upload a non-existent file.

Type Error Code HTTP Status
Document missing_file 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#missing-file', 
 'code': 'missing_file', 
 'message': 'missing file or filename'
}

General Errors

Authentication Failure

Authentication Failureは、APIキーが間違っている場合に発生します。 API Keysへアクセスし、正確なAPIキーの確認をしてください。

下記は、CurlでCustomer IDで指定したCustomerのRetrieveを試し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
General authentication_failure 401

Curl

curl https://api.omise.co/customers/cust_test_4xvqerqazpdhf5xu2zj \
-u skey_test_please_let_me_in:      # Incorrect secret key

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#authentication-failure', 
 'code': 'authentication_failure', 
 'message': 'authentication failed'
}

Backend Error

An error occurred communicating with the provider for this particular payment method. Please try again.

Type Error Code HTTP Status
General backend_error 502

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#backend-error', 
 'code': 'backend_error', 
 'message': 'backend error'
}

Bad Request

Omiseでは複数種類のエラーに対しBad Requestコードを振り分けています。 エラー要因の詳細については、messageに記載がございます。

Type Error Code HTTP Status
General bad_request 400

Curl

curl https://api.omise.co/sources \
-X POST  \
-u skey_test_4xc6eevsmz5phbtjcaf:  \
-d "amount=10000" \
-d "currency=thb"  \
-d "type=invalid_type"  # Invalid type

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#bad-request', 
 'code': 'bad_request', 
 'message': 'bad request'
}

Failed Deletion

An attempt was made to delete an object (e.g. a link or a schedule), but the operation failed. See the message attribute for more information.

Type Error Code HTTP Status
General failed_deletion 422

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#failed-deletion', 
 'code': 'failed_deletion', 
 'message': 'this object could not be deleted'
}

Feature Not Supported

The requested feature is not currently enabled. Please contact support@omise.co.

Type Error Code HTTP Status
General feature_not_supported 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#feature-not-supported', 
 'code': 'feature_not_supported', 
 'message': 'Platform fee is not currently enabled for this account'
}

Internal Error

An internal server error occurred. If the error occurs again, please contact support@omise.co.

Type Error Code HTTP Status
General internal_error 500

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#internal-error', 
 'code': 'internal_error', 
 'message': 'request could not be completed due to an internal error'
}

Invalid Card Token

Omise APIのいくつかは、Card Tokenをパラメーターとして利用します。 Invalid Card Tokenエラーは、このパラメーターがCard Tokenの文字列でなかった場合に発生します。

下記は、Curlで、カジュアルにInvalid Card Tokenエラーを発生させる例です。

Type Error Code HTTP Status
General invalid_card_token 400

Curl

curl https://api.omise.co/customers \
-X POST \
-u skey_test_4xc6eevsmz5phbtjcaf: \
-d "description=John Doe (id: 30)" \
-d "email=john.doe@example.com" \
-d "card[number]=4242424242424242" \ # This endpoint expects a token, not a card object
-d "card[name]=Somchai Prasert"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-card-token', 
 'code': 'invalid_card_token', 
 'message': 'invalid card token'
}

Key Expired Error

An attempt was made to perform a request using an expired (i.e. "revoked") key. Current keys can be found in the account dashboard.

Type Error Code HTTP Status
General key_expired_error 403

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#key-expired-error', 
 'code': 'key_expired_error', 
 'message': 'expired key'
}

Locked Account Error

The account is locked. Please contact support@omise.co.

Type Error Code HTTP Status
General locked_account_error 403

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#locked-account-error', 
 'code': 'locked_account_error', 
 'message': 'account locked'
}

Not Found

Omise APIでは、オブジェクトのIDを指定して利用するケースがあります。 Not Foundエラーは、指定されたオブジェクトのIDが存在しない際に発生するエラーです。

下記は、Curlで存在しないCustomer IDを指定し、顧客情報を呼び出そうとする際に発生するエラーの例です。

Type Error Code HTTP Status
General not_found 404

Curl

curl https://api.omise.co/customers/cust_test_000000000000 \ # Not a valid customer ID.
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#not-found', 
 'code': 'not_found', 
 'message': 'the requested object was not found'
}

Service Not Found

Service-not-found は、現在ご使用中のAPIバージョンが、接続されたエンドポイント上でサポートされていないことを指しています。 APIのバージョンを更新する方法については、こちら をご覧ください。 各バージョンのAPIリファレンスは、こちら にあります。

Type Error Code HTTP Status
General service_not_found 404

Curl

curl https://api.omise.co/sources \
-X POST \
-u skey_test_54f501mmzcl8bukll65: \
-d "amount=10025" \
-d "currency=thb" \
-d "type=bill_payment_tesco_lotus"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#service-not-found', 
 'code': 'service_not_found', 
 'message': 'you are using api version which does not support this operation'
}

Used Token

Used Tokenエラーは、使用済みのトークンを指定してOmise APIを実行した際に発生するエラーです。 下記は、Curlで使用済みのトークンを指定してCustomerをCreateを試み、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
General used_token 400

Curl

curl https://api.omise.co/customers \
-X POST \
-u skey_test_4xc6eevsmz5phbtjcaf: \
-d "description=John Doe (id: 30)" \
-d "email=john.doe@example.com" \
-d "card=tokn_test_4xvpea0ifwajbx3f873" # This token has already been used

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#used-token', 
 'code': 'used_token', 
 'message': 'token was already used'
}

Link Errors

invalid_link は、Omiseがご契約上サポートしていない通貨、もしくはdescriptionのパラメータに指定がない場合に発生します。 下記は、descriptionのパラメータにaaaを指定し、意図的にエラーを発生させた例です。

Type Error Code HTTP Status
Link invalid_link 400

Curl

curl https://api.omise.co/links \
-X POST \
-u skey_test_4xsjvwfnvb2g0l81sjz: \
-d "description=Invalid currency input" \
-d "amount=2000" \
-d "currency=aaa"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-link', 
 'code': 'invalid_link', 
 'message': 'invalid link'
}

Recipient Errors

Invalid Bank Account

誤ったBank Accountでレシピエントの作成を試みた際に発生するエラーです。

下記は、Curlで誤ったBank Accountを使い、エラーを発生させる例です。

Type Error Code HTTP Status
Recipient invalid_bank_account 400

Curl

curl https://api.omise.co/recipients \
-X POST \
-u skey_test_4xsjvwfnvb2g0l81sjz: \
-d "name=James Smith" \
-d "email=test_recp123@localhost" \
-d "description=My first other recipient" \
-d "type=individual" \
-d "tax_id=1234567890" \
-d "bank_account[brand]=invalid-bank" \
-d "bank_account[number]=acc12345" \
-d "bank_account[name]=James Smith"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-bank-account', 
 'code': 'invalid_bank_account', 
 'message': 'invalid bank account'
}

Invalid Recipient

An attempt was made to update a recipient in an invalid way (e.g. deleting a recipient that cannot be deleted).

Type Error Code HTTP Status
Recipient invalid_recipient 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-recipient', 
 'code': 'invalid_recipient', 
 'message': 'invalid recipient'
}

Search Errors

Invalid Filter

検索APIリクエストは特定なフィルターキーのみ指定可能です (利用可能なフィルターリスト)。 invalid_filter エラーは無効なフィルターキーを指定した際に発生したエラーです。 下記は、filtersパラメーターに無効なキーを指定し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Search invalid_filter 422

Curl

curl 'https://api.omise.co/search?scope=charge&filters[currency]=thb' \
-X GET \
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-filter', 
 'code': 'invalid_filter', 
 'message': 'invalid filters'
}

Invalid Page

検索APIリクエストは page パラメーターに正の整数のみ指定可能です。 invalid_page エラーは0、負の数または非整数を指定した際に発生したエラーです。下記は、 page パラメーターに0を指定し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Search invalid_page 422

Curl

curl 'https://api.omise.co/search?scope=charge&filters[captured]=true&page=0' \
-X GET \
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-page', 
 'code': 'invalid_page', 
 'message': 'invalid page'
}

Invalid Per Page

Search requests expect positive integers in the per_page parameter. If zero, a negative number or a non-integer is passed in the per_page parameter, the invalid_per_page error will be returned.

Type Error Code HTTP Status
Search invalid_per_page 422

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-per-page', 
 'code': 'invalid_per_page', 
 'message': 'invalid per page'
}

Invalid Scope

検索APIリクエストは scope パラメーターに chargedisputerecipient または customer (文字列)しか指定できません。 invalid_scope エラーは上記以外のスコープ、または非文字列を指定した際に発生したエラーです。 下記は、スコープパラメーターにaccountsを指定し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Search invalid_scope 422

Curl

curl 'https://api.omise.co/search?scope=accounts' \
-X GET \
-u skey_test_4xc6eevsmz5phbtjcaf:

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-scope', 
 'code': 'invalid_scope', 
 'message': 'invalid scope'
}

Search Unavailable

Search is temporarily unavailable. Please try again.

Type Error Code HTTP Status
Search search_unavailable 503

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#search-unavailable', 
 'code': 'search_unavailable', 
 'message': 'search is temporarily unavailable'
}

Token Errors

Invalid Card

Invalid Cardは、利用できないカード情報で、Cardの作成を試みた際に発生するエラーです。 下記は、Curlで、利用できないカード情報で、Cardの作成をし、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Token invalid_card 400

Curl

curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_4xc6eevsm4i0ysitb4j: \
-d "card[name]=JOHN DOE" \
-d "card[city]=Bangkok" \
-d "card[number]=Definitely not a card number" \ # Invalid card number!
-d "card[expiration_month]=10" \
-d "card[expiration_year]=2016"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-card', 
 'code': 'invalid_card', 
 'message': 'invalid card'
}

Invalid Domain

An attempt was made to generate a token using the api.omise.co domain. Use vault.omise.co to generate tokens.

Type Error Code HTTP Status
Token invalid_domain 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-domain', 
 'code': 'invalid_domain', 
 'message': 'request must be made with the vault.omise.co domain'
}

Missing Card

Missing Cardエラーは、パラメーターにカード情報を付与することを忘れた際に発生するエラーです。 下記は、Curlで、意図的にカード情報のパラメーターをコメントアウトして付与せずOmise APIを実行し、意図的にエラーを発生させる例です。

Type Error Code HTTP Status
Token missing_card 400

Curl

curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_4xc6eevsm4i0ysitb4j:
# Omitting the following parameters:
#-d "card[name]=JOHN DOE" \
#-d "card[city]=Bangkok" \
#-d "card[postal_code]=10320" \
#-d "card[number]=4242424242424242" \
#-d "card[expiration_month]=10" \
#-d "card[expiration_year]=2016"

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#missing-card', 
 'code': 'missing_card', 
 'message': 'request contains no card parameters'
}

Transfer Errors

Invalid Transfer

An attempt was made to update a transfer in an invalid way (e.g. deleting a transfer that cannot be deleted or transferring more than the available balance.)

Type Error Code HTTP Status
Transfer invalid_transfer 400

JSON Response

{
 'object': 'error', 
 'location': 'https://www.omise.co/api-errors#invalid-transfer', 
 'code': 'invalid_transfer', 
 'message': 'this transfer has already been sent and cannot be destroyed anymore'
}