Errors

เมื่อเกิดข้อขัดข้องในการทำรายการ ระบบจะแสดงข้อความดังต่อไปนี้เพื่ออธิบายความขัดข้องที่เกิดขึ้น

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

An authorized charge left uncaptured for more than 7 days will automatically be canceled (the exact duration depends on card issuing bank). This error indicates that the charge can no longer be captured.

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

Error message นี้จะปรากฏเมื่อพบข้อผิดพลาดในการ capture charge ซึ่งอาจเป็นได้ว่ารายการ charge ดังกล่าวยังไม่ได้ถูก authorize หรืออาจเป็นรายการที่ถูก capture ไปแล้ว ส่วนสาเหตุของ error จะถูกชี้แจงไว้ใน message

นี่เป็นตัวอย่างการตัดวงเงิน (capture) สำหรับรายการที่ยังไม่ได้ทำการอนุมัติวงเงิน (authorize) ไว้:

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

สำหรับรายการที่มีการส่งคำสั่งคืนเงิน (refund) ไว้แล้ว โดยเป็นการส่งคำสั่งก่อนช่วงเวลา settlement สถานะของรายการจะแสดงเป็น void=true (โดยรายการอาจสำเร็จหรือไม่สำเร็จก็ได้) ร้านค้าไม่สามารถส่งคำสั่งคืนเงิน (refund) ซ้ำได้อีก หากมีการส่งคำสั่งเข้ามาอีกรอบจะปรากฏ error message เป็น 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

การสร้างรายการรับชำระเงินที่ระบุจำนวนที่ไม่ถูกต้องจะปรากฏ error message เป็น invalid_amount

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

เมื่อทำการสร้าง charge แต่รายการนั้นๆ ไม่ตรงตาม requirement ของเรา จะปรากฏเป็น invalid_charge ส่วนสาเหตุของ error จะแสดงอยู่บนตัว error message นี่เป็นตัวอย่าง error ที่เกิดจากจำนวนและสกุลเงินไม่ถูกต้อง:

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 หมายถึงมีการใช้ key ที่ไม่ถูกต้องในการทำรายการ โดยสามารถตรวจสอบ key ของคุณได้จากบน dashboard

ตัวอย่าง error ที่เกิดขึ้นเมื่อใช้ key ที่ไม่ถูกต้องในการ retrieve ลูกค้า (customer):

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

error ที่จัดว่าเป็น 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

การเรียก API บางตัว ระบบจะกำหนดให้ใส่ token (string) ด้วย หากใส่ค่าที่เป็น non-string ลงไปก็จะปรากฏเป็น invalid_card_token ซึ่งบ่อยครั้งเราพบว่า error นี้เกิดจากการที่ผู้ใช้กรอกข้อมูลบัตรลงไปแทนที่จะเป็นการกรอก 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

ในการใช้งาน API ของโอมิเซะบางครั้งจะต้องกรอก ID และหากระบบไม่พบ ID ของ object ดังกล่าวจะปรากฏเป็น not_found

ตัวอย่างการ retrieve ลูกค้า (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 หมายถึง end-point ที่ผู้ใช้งานระบุไม่รองรับกับเวอร์ชัน API ที่ใช้อยู่ในปัจจุบัน สามารถอ่านวิธีอัพเดตเวอร์ชัน API version ได้ ที่นี่ หรือตรวจสอบวิธีการใช้งาน 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

Token ถูกกำหนดให้สามารถใช้งานได้เพียงครั้งเดียวเท่านั้น หากพบว่ามีการนำ token ไปใช้ซ้ำจะปรากฏเป็น used_token

ตัวอย่างการสร้างลูกค้า (Customer) ด้วย token ที่เคยถูกใช้งานแล้ว:

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

การสร้างลิงก์ด้วยสกุลเงินที่ไม่ถูกต้อง หรือไม่มี description parameter จะทำให้เกิด error ที่เรียกว่า invalid_link ด้านล่างนี้คือตัวอย่างการสร้าง invalid link:

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

เมื่อเพิ่มผู้รับเงิน (recipient) ในระบบและกรอกรายละเอียดบัญชีธนาคารที่ไม่ถูกต้อง เช่น เป็นบัญชีธนาคารที่โอมิเซะไม่รองรับ จะปรากฏ error message เป็น invalid_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

การเรียกใช้ Search API สามารถระบุ filter ได้ตามที่ระบุในรายการ Filter Key ของเราเท่านั้น หากมีการใส่ key อื่น ๆ นอกเหนือจากนี้จะปรากฏ error message เป็น invalid_filter

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

ในการเรียก Search API สามารถระบุค่าใน parameter page เป็นจำนวนบวกเท่านั้น หากมีการระบุค่าเป็น ศูนย์, จำนวนติดลบ หรือค่าที่ไม่ใช่ตัวเลข จะปรากฏ error message เป็น invalid_page

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

การเรียกใช้ Search API จะต้องระบุ scope เป็น charge, dispute, recipient หรือ customer (string) ใน parameter หากระบุ scope หรือค่าที่เป็น non-string ระบบจะส่ง error message เป็น invalid_scope

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

เมื่อระบบได้รับข้อมูลบัตรที่ไม่ถูกต้องจะไม่สามารถสร้าง token ได้ และจะปรากฏ error message เป็น invalid_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

ระบบจำเป็นต้องใช้ข้อมูลของบัตรในการสร้าง token ซึ่งหากได้รับข้อมูลไม่ครบจะปรากฏ error เป็น missing_card

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'
}