Omise Account and Balance API
Retrieve your account profile (country, currencies, webhook URI, transfer configuration, default API version) and your current balance - total, transferable, and reserve amounts in the smallest currency unit.
Retrieve your account profile (country, currencies, webhook URI, transfer configuration, default API version) and your current balance - total, transferable, and reserve amounts in the smallest currency unit.
openapi: 3.0.3
info:
title: Omise (Opn Payments) API
description: >-
Omise, now Opn Payments (part of Opn), is an online payment gateway for
Thailand, Japan, and Singapore. This OpenAPI document describes a
representative, grounded subset of the public REST API. The core API is
served from https://api.omise.co and authenticated with a secret key via
HTTP Basic (the key is the username, the password is empty). Raw card data
is tokenized on a separate PCI-scoped vault host, https://vault.omise.co,
authenticated with the public key. API behavior is pinned with the optional
`Omise-Version` header. All monetary amounts are integers in the smallest
unit of the currency (for example satang for THB, yen for JPY).
Scope note: paths, methods, and object identifiers here are grounded in the
published Omise documentation (docs.omise.co). Request and response schemas
are modeled as a solid representative subset rather than a byte-for-byte
mirror of every field; verify exact payloads against the live docs.
version: 2019-05-29
contact:
name: Opn Payments (Omise)
url: https://www.omise.co
license:
name: Proprietary
url: https://www.omise.co
servers:
- url: https://api.omise.co
description: Core API (secret key)
- url: https://vault.omise.co
description: Vault - tokenization only (public key)
security:
- secretKeyAuth: []
tags:
- name: Charges
description: Core payment object - authorize, capture, reverse, expire.
- name: Tokens
description: Single-use card tokenization on the vault host.
- name: Sources
description: Non-card / local payment method sources.
- name: Customers
description: Saved customers and their reusable cards.
- name: Cards
description: Cards saved against a customer.
- name: Refunds
description: Full or partial refunds against a charge.
- name: Disputes
description: Cardholder chargebacks and evidence.
- name: Transfers
description: Payouts from your balance to a recipient bank account.
- name: Recipients
description: Bank-account recipients that transfers pay out to.
- name: Schedules
description: Recurring charges and transfers.
- name: Links
description: Shareable payment links.
- name: Events
description: Account events backing webhooks.
- name: Account
description: Account profile and balance.
paths:
/charges:
post:
operationId: createCharge
tags: [Charges]
summary: Create a charge
description: >-
Creates a charge funded by a token, a saved customer card, or a Source.
Set `capture` to false to authorize only and capture later.
parameters:
- $ref: '#/components/parameters/OmiseVersion'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChargeCreate'
responses:
'200':
description: The created charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
'400':
$ref: '#/components/responses/BadRequest'
get:
operationId: listCharges
tags: [Charges]
summary: List charges
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
- $ref: '#/components/parameters/Order'
responses:
'200':
description: A list of charges.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/charges/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getCharge
tags: [Charges]
summary: Retrieve a charge
responses:
'200':
description: The requested charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateCharge
tags: [Charges]
summary: Update a charge
description: Updates the description or metadata of a charge.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
description:
type: string
metadata:
type: object
additionalProperties: true
responses:
'200':
description: The updated charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/charges/{id}/capture:
parameters:
- $ref: '#/components/parameters/Id'
post:
operationId: captureCharge
tags: [Charges]
summary: Capture a charge
description: Captures a previously authorized (uncaptured) charge.
responses:
'200':
description: The captured charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/charges/{id}/reverse:
parameters:
- $ref: '#/components/parameters/Id'
post:
operationId: reverseCharge
tags: [Charges]
summary: Reverse a charge
description: Reverses an authorized charge that has not yet been captured.
responses:
'200':
description: The reversed charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
/charges/{id}/expire:
parameters:
- $ref: '#/components/parameters/Id'
post:
operationId: expireCharge
tags: [Charges]
summary: Expire a charge
description: Expires a pending charge so it can no longer be paid.
responses:
'200':
description: The expired charge.
content:
application/json:
schema:
$ref: '#/components/schemas/Charge'
'401':
$ref: '#/components/responses/Unauthorized'
/charges/{id}/refunds:
parameters:
- $ref: '#/components/parameters/Id'
post:
operationId: createRefund
tags: [Refunds]
summary: Create a refund
description: Refunds all or part of a charge.
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [amount]
properties:
amount:
type: integer
description: Amount to refund, in the smallest currency unit.
metadata:
type: object
additionalProperties: true
responses:
'200':
description: The created refund.
content:
application/json:
schema:
$ref: '#/components/schemas/Refund'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listChargeRefunds
tags: [Refunds]
summary: List refunds for a charge
responses:
'200':
description: A list of refunds.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/charges/{id}/refunds/{refund_id}:
parameters:
- $ref: '#/components/parameters/Id'
- name: refund_id
in: path
required: true
schema:
type: string
get:
operationId: getRefund
tags: [Refunds]
summary: Retrieve a refund
responses:
'200':
description: The requested refund.
content:
application/json:
schema:
$ref: '#/components/schemas/Refund'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/refunds:
get:
operationId: listAllRefunds
tags: [Refunds]
summary: List all refunds
responses:
'200':
description: A list of refunds across the account.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/tokens:
post:
operationId: createToken
tags: [Tokens]
summary: Create a token
description: >-
Tokenizes raw card data. Served from the vault host
(https://vault.omise.co) and authenticated with the public key. Tokens
are single-use.
servers:
- url: https://vault.omise.co
security:
- publicKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [card]
properties:
card:
$ref: '#/components/schemas/CardInput'
responses:
'200':
description: The created token.
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'401':
$ref: '#/components/responses/Unauthorized'
/tokens/{id}:
parameters:
- $ref: '#/components/parameters/Id'
servers:
- url: https://vault.omise.co
get:
operationId: getToken
tags: [Tokens]
summary: Retrieve a token
security:
- publicKeyAuth: []
responses:
'200':
description: The requested token.
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'404':
$ref: '#/components/responses/NotFound'
/sources:
post:
operationId: createSource
tags: [Sources]
summary: Create a source
description: >-
Creates a payment Source for a non-card method (for example promptpay,
truemoney, internet_banking_bbl, mobile_banking_scb, installment_kbank,
alipay, rabbit_linepay). Can be created with the public key.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SourceCreate'
responses:
'200':
description: The created source.
content:
application/json:
schema:
$ref: '#/components/schemas/Source'
'401':
$ref: '#/components/responses/Unauthorized'
/sources/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getSource
tags: [Sources]
summary: Retrieve a source
responses:
'200':
description: The requested source.
content:
application/json:
schema:
$ref: '#/components/schemas/Source'
'404':
$ref: '#/components/responses/NotFound'
/customers:
post:
operationId: createCustomer
tags: [Customers]
summary: Create a customer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerInput'
responses:
'200':
description: The created customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listCustomers
tags: [Customers]
summary: List customers
responses:
'200':
description: A list of customers.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/customers/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getCustomer
tags: [Customers]
summary: Retrieve a customer
responses:
'200':
description: The requested customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateCustomer
tags: [Customers]
summary: Update a customer
description: >-
Updates a customer. Pass a token in `card` to attach a new saved card.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerInput'
responses:
'200':
description: The updated customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCustomer
tags: [Customers]
summary: Delete a customer
responses:
'200':
description: Deletion confirmation.
content:
application/json:
schema:
$ref: '#/components/schemas/Deleted'
'404':
$ref: '#/components/responses/NotFound'
/customers/{id}/cards:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: listCustomerCards
tags: [Cards]
summary: List a customer's cards
responses:
'200':
description: A list of the customer's cards.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/customers/{id}/cards/{card_id}:
parameters:
- $ref: '#/components/parameters/Id'
- name: card_id
in: path
required: true
schema:
type: string
get:
operationId: getCustomerCard
tags: [Cards]
summary: Retrieve a card
responses:
'200':
description: The requested card.
content:
application/json:
schema:
$ref: '#/components/schemas/Card'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateCustomerCard
tags: [Cards]
summary: Update a card
description: Updates the billing details of a saved card.
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
responses:
'200':
description: The updated card.
content:
application/json:
schema:
$ref: '#/components/schemas/Card'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCustomerCard
tags: [Cards]
summary: Delete a card
responses:
'200':
description: Deletion confirmation.
content:
application/json:
schema:
$ref: '#/components/schemas/Deleted'
'404':
$ref: '#/components/responses/NotFound'
/disputes:
get:
operationId: listDisputes
tags: [Disputes]
summary: List all disputes
responses:
'200':
description: A list of disputes.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/disputes/{status}:
parameters:
- name: status
in: path
required: true
description: One of open, pending, or closed.
schema:
type: string
enum: [open, pending, closed]
get:
operationId: listDisputesByStatus
tags: [Disputes]
summary: List disputes by status
responses:
'200':
description: A filtered list of disputes.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/disputes/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getDispute
tags: [Disputes]
summary: Retrieve a dispute
responses:
'200':
description: The requested dispute.
content:
application/json:
schema:
$ref: '#/components/schemas/Dispute'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateDispute
tags: [Disputes]
summary: Update a dispute
description: Adds an evidence message or metadata to a dispute.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
message:
type: string
metadata:
type: object
additionalProperties: true
responses:
'200':
description: The updated dispute.
content:
application/json:
schema:
$ref: '#/components/schemas/Dispute'
'404':
$ref: '#/components/responses/NotFound'
/disputes/{id}/accept:
parameters:
- $ref: '#/components/parameters/Id'
patch:
operationId: acceptDispute
tags: [Disputes]
summary: Accept a dispute
description: Accepts the dispute, conceding the chargeback.
responses:
'200':
description: The accepted dispute.
content:
application/json:
schema:
$ref: '#/components/schemas/Dispute'
'404':
$ref: '#/components/responses/NotFound'
/transfers:
post:
operationId: createTransfer
tags: [Transfers]
summary: Create a transfer
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: integer
recipient:
type: string
description: Recipient id; defaults to the default recipient.
responses:
'200':
description: The created transfer.
content:
application/json:
schema:
$ref: '#/components/schemas/Transfer'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listTransfers
tags: [Transfers]
summary: List transfers
responses:
'200':
description: A list of transfers.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/transfers/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTransfer
tags: [Transfers]
summary: Retrieve a transfer
responses:
'200':
description: The requested transfer.
content:
application/json:
schema:
$ref: '#/components/schemas/Transfer'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateTransfer
tags: [Transfers]
summary: Update a transfer
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
amount:
type: integer
responses:
'200':
description: The updated transfer.
content:
application/json:
schema:
$ref: '#/components/schemas/Transfer'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteTransfer
tags: [Transfers]
summary: Delete a transfer
responses:
'200':
description: Deletion confirmation.
content:
application/json:
schema:
$ref: '#/components/schemas/Deleted'
'404':
$ref: '#/components/responses/NotFound'
/recipients:
post:
operationId: createRecipient
tags: [Recipients]
summary: Create a recipient
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RecipientInput'
responses:
'200':
description: The created recipient.
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listRecipients
tags: [Recipients]
summary: List recipients
responses:
'200':
description: A list of recipients.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/recipients/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getRecipient
tags: [Recipients]
summary: Retrieve a recipient
responses:
'200':
description: The requested recipient.
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateRecipient
tags: [Recipients]
summary: Update a recipient
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RecipientInput'
responses:
'200':
description: The updated recipient.
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteRecipient
tags: [Recipients]
summary: Delete a recipient
responses:
'200':
description: Deletion confirmation.
content:
application/json:
schema:
$ref: '#/components/schemas/Deleted'
'404':
$ref: '#/components/responses/NotFound'
/recipients/{id}/verify:
parameters:
- $ref: '#/components/parameters/Id'
patch:
operationId: verifyRecipient
tags: [Recipients]
summary: Verify a recipient
description: Marks a recipient as verified (test mode / where supported).
responses:
'200':
description: The verified recipient.
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'404':
$ref: '#/components/responses/NotFound'
/schedules:
post:
operationId: createSchedule
tags: [Schedules]
summary: Create a schedule
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduleInput'
responses:
'200':
description: The created schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/Schedule'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listSchedules
tags: [Schedules]
summary: List schedules
responses:
'200':
description: A list of schedules.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/schedules/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getSchedule
tags: [Schedules]
summary: Retrieve a schedule
responses:
'200':
description: The requested schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/Schedule'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteSchedule
tags: [Schedules]
summary: Delete a schedule
responses:
'200':
description: Deletion confirmation.
content:
application/json:
schema:
$ref: '#/components/schemas/Deleted'
'404':
$ref: '#/components/responses/NotFound'
/schedules/{id}/occurrences:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: listScheduleOccurrences
tags: [Schedules]
summary: List schedule occurrences
responses:
'200':
description: A list of occurrences generated by the schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'404':
$ref: '#/components/responses/NotFound'
/links:
post:
operationId: createLink
tags: [Links]
summary: Create a payment link
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [amount, currency]
properties:
amount:
type: integer
currency:
type: string
title:
type: string
description:
type: string
multiple:
type: boolean
description: Whether the link can be paid more than once.
responses:
'200':
description: The created link.
content:
application/json:
schema:
$ref: '#/components/schemas/Link'
'401':
$ref: '#/components/responses/Unauthorized'
get:
operationId: listLinks
tags: [Links]
summary: List payment links
responses:
'200':
description: A list of links.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/links/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getLink
tags: [Links]
summary: Retrieve a payment link
responses:
'200':
description: The requested link.
content:
application/json:
schema:
$ref: '#/components/schemas/Link'
'404':
$ref: '#/components/responses/NotFound'
/events:
get:
operationId: listEvents
tags: [Events]
summary: List events
responses:
'200':
description: A list of events.
content:
application/json:
schema:
$ref: '#/components/schemas/List'
'401':
$ref: '#/components/responses/Unauthorized'
/events/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getEvent
tags: [Events]
summary: Retrieve an event
responses:
'200':
description: The requested event.
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
'404':
$ref: '#/components/responses/NotFound'
/account:
get:
operationId: getAccount
tags: [Account]
summary: Retrieve the account
responses:
'200':
description: The account object.
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'401':
$ref: '#/components/responses/Unauthorized'
/balance:
get:
operationId: getBalance
tags: [Account]
summary: Retrieve the balance
responses:
'200':
description: The balance object.
content:
application/json:
schema:
$ref: '#/components/schemas/Balance'
'401':
$ref: '#/components/responses/Unauthorized'
components:
securitySchemes:
secretKeyAuth:
type: http
scheme: basic
description: >-
HTTP Basic auth against https://api.omise.co. The secret key
(skey_test_... or skey_... ) is the username; the password is left
empty.
publicKeyAuth:
type: http
scheme: basic
description: >-
HTTP Basic auth against https://vault.omise.co for tokenization and for
creating sources. The public key (pkey_test_... or pkey_... ) is the
username; the password is left empty.
parameters:
Id:
name: id
in: path
required: true
description: The object identifier.
schema:
type: string
OmiseVersion:
name: Omise-Version
in: header
required: false
description: Pins the API version used for the request (for example 2019-05-29).
schema:
type: string
Limit:
name: limit
in: query
required: false
schema:
type: integer
default: 20
maximum: 100
Offset:
name: offset
in: query
required: false
schema:
type: integer
default: 0
Order:
name: order
in: query
required: false
schema:
type: string
enum: [chronological, reverse_chronological]
responses:
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The object was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: The request was invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
object:
type: string
example: error
location:
type: string
code:
type: string
description: For example authentication_failure, not_found, invalid_charge.
message:
type: string
List:
type: object
description: Omise paginated list envelope.
properties:
object:
type: string
example: list
data:
type: array
items:
type: object
additionalProperties: true
limit:
type: integer
offset:
type: integer
total:
type: integer
order:
type: string
location:
type: string
Deleted:
type: object
properties:
object:
type: string
id:
type: string
deleted:
type: boolean
CardInput:
type: object
required: [number, expiration_month, expiration_year]
properties:
name:
type: string
number:
type: string
expiration_month:
type: integer
expiration_year:
type: integer
security_code:
type: string
city:
type: string
pos
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/omise/refs/heads/main/openapi/omise-openapi.yml