Capture

Topics covered on this page

This document explains authorization and capture โ€” the two steps of processing a card payment โ€” and describes the capture types Omise supports, including Automatic Capture, Full Manual Capture, and Single Partial Capture (available only to merchants that have contracted with Omise Thailand).

๐Ÿ“– Understanding Authorization and Capture

Authorization and capture are the two steps to complete card payments.

Authorization occurs when the merchant initiates a charge to a customer's card at checkout. During this process, the payment processor checks with the cardholder's bank to verify that the account has sufficient funds and is in good standing. If the account meets the criteria, the transaction amount is held pending completion. Pre-authorizing a card confirms that the payment method is valid and the cardholder is genuine, without charging the account โ€” and it helps prevent chargebacks.

The authorization period โ€” the time during which the authorization remains valid โ€” determines the window in which the amount must be captured. This period depends on the country but is usually 7 days. If the amount isn't captured before the authorization period ends, it's automatically released, and the charge's status changes to reversed.

Capture is the process by which the transaction is completed. Funds are withdrawn from the customer account and transferred to the merchant account, moving the transaction status from pending to complete.

๐Ÿงพ Types of Capture

The capture process can either be automatic or manual.

Automatic Capture

With Automatic Capture, payments are captured automatically after a configurable delay called the capture delay โ€” the time between authorization and capture. By default, this delay is 0, so payments are captured immediately after authorization.

Manual Capture

With Manual Capture, the merchant must explicitly request a capture for each payment before the authorization expires.

Manual Capture supports the following types:

  • Full Manual Capture
  • Single Partial Capture (available only to merchants that have contracted with Omise Thailand โ€” see note below)
  • Multiple Partial Capture (not currently supported โ€” see Multiple Partial Capture below)

Choosing an authorization type

Manual Capture charges use an authorization_type parameter to indicate how the authorized amount relates to the amount you intend to capture:

  • authorization_type=final_auth (default) โ€” the authorized amount is final. Use this for general manual capture; the charge can be captured only once, in full.
  • authorization_type=pre_auth โ€” the authorized amount is an estimate that may be greater than what you intend to capture. Use this when you expect to capture less than the full authorized amount, such as with Single Partial Capture.

โš ๏ธ Warning: If the merchant doesn't deliver the goods or services for a charge, don't attempt to capture it โ€” a THB 0 capture request isn't supported. Sending capture_amount=0 captures the full authorized amount instead of nothing. To avoid capturing an authorization you no longer intend to collect, let it expire and release automatically rather than sending a zero-amount capture request.

Full Manual Capture

With Full Manual Capture, the authorized amount is captured in full.

The illustrative flow is as follows:

graph TD A["Merchant initiates card authorization"] --> B{"Is authorization successful?"} B -->|"No"| D["Stop"] B -->|"Yes"| C["Deliver Goods"] C --> E["Capture complete authorized amount"]

Authorizing a Full Manual Capture charge

The following example authorizes a charge of THB 70 using a card token. Since Full Manual Capture always captures the full amount, this example explicitly sets authorization_type=final_auth (the default):

curl https://api.omise.co/charges \
  -u $OMISE_SECRET_KEY: \
  -d "amount=7000" \
  -d "currency=THB" \
  -d "capture=false" \
  -d "card=$TOKEN_ID" \
  -d "authorization_type=final_auth"

Capturing the full authorized amount

The following example demonstrates a full capture of THB 70.

curl https://api.omise.co/charges/$FULL_UNCAPTURED_CHARGE_ID/capture \
  -u $OMISE_SECRET_KEY: \
  -d "capture_amount=7000"

Single Partial Capture

๐Ÿ”’ Important: Single Partial Capture is available only to merchants that have contracted with Omise Thailand.

The following example illustrates Single Partial Capture.

Suppose a customer buys goods worth THB 70. The card is authorized for THB 70. However, the merchant can deliver only THB 40 worth of goods. The final bill amount is THB 40, which is what is charged to the customer's card. The balance of THB 30 that was authorized but not charged is unblocked and released.

โ„น๏ธ Note: The transaction that charges the THB 40 to the customer's card is the Single Partial Capture.

The illustrative flow is as follows:

graph TD A["Merchant initiates card authorization"] --> B{"Is authorization successful?"} B -->|"No"| D["Stop"] B -->|"Yes"| C["Deliver some goods"] C --> E["Charge card partially"] E --> F["System unblocks and releases the remainder of the authorized amount"]

Enabling Single Partial Capture

Single Partial Capture is enabled by default for eligible merchants โ€” no setup is required. It's only available to merchants that have contracted with Omise Thailand; if you're unsure whether your account qualifies, contact your Omise account team.

Authorizing a Single Partial Capture charge

The following example authorizes a charge of THB 70 using a card token. Because the merchant expects to capture only part of this amount, the example sets authorization_type=pre_auth:

curl https://api.omise.co/charges \
  -u $OMISE_SECRET_KEY: \
  -d "amount=7000" \
  -d "currency=THB" \
  -d "capture=false" \
  -d "card=$TOKEN_ID" \
  -d "authorization_type=pre_auth"

Capturing part of the authorized amount

The following example demonstrates a Single Partial Capture of THB 40.

curl https://api.omise.co/charges/$PARTIAL_UNCAPTURED_CHARGE_ID/capture \
  -u $OMISE_SECRET_KEY: \
  -d "capture_amount=4000"

Multiple Partial Capture

At present, Omise does not support Multiple Partial Capture.

โ“ FAQ

Is Single Partial Capture enabled by default, or do I need to request it? For eligible merchants, it's enabled by default โ€” no setup is required. However, it's only available to merchants that have contracted with Omise Thailand; contact your Omise account team if you're unsure whether your account qualifies.

Can I capture a charge more than once (multiple partial captures over time)? Not currently. Omise doesn't support Multiple Partial Capture yet, so each authorized charge can only be captured once, whether in full or as a single partial amount.

Do I need to manually release the uncaptured balance after a Single Partial Capture? No. When you capture less than the full authorized amount, Omise automatically unblocks and releases the remaining balance โ€” no separate action is required.

What happens if I don't capture a charge within the authorization period? The uncaptured amount is automatically released, and the charge's status changes to reversed.

What's the difference between authorization_type=pre_auth and authorization_type=final_auth? Use pre_auth when the authorized amount is an estimate that may be greater than what you intend to capture โ€” typically for Single Partial Capture. Use final_auth (the default) for general manual capture, where the authorized amount is final and can only be captured once, in full.

What happens if I try to capture THB 0, for example because the merchant didn't deliver anything? It doesn't do what you might expect โ€” a THB 0 capture isn't supported. Sending capture_amount=0 captures the full authorized amount instead of nothing. If the merchant doesn't intend to collect payment, don't attempt to capture; let the authorization expire and release automatically instead.

๐Ÿ‘‰ Next steps

Omise uses cookies to improve your overall site experience and collect information on your visits and browsing behavior. By continuing to browse our website, you agree to our Privacy Policy. Learn more