Authorize and capture
Hold an order amount, then capture it or release it
You can use an authorized transaction to hold the amount of the order or service. You can either manually capture a partial or full amount of the order payment. Order amounts can also be released back to customers.
How it works
- You will be notified when the order has been authorized via your dashboard, and in the case of Payment Sessions, the Status response will be AUTHORIZED, and the webhook event will be "authorize."
- You can use the manual release or manual capture operations in the endpoint.
Note
Approval is needed. The Authorization Capture feature can be enabled by contacting your account manager or customer success.
Capture
The amount of the order is either captured fully or partially. Capture is done by sending a PUT request with the order ID orderId in the URL as a parameter, and inserting a transaction ID and amount in the body.
In case you are still in the development phase, you will need to call our API using the following testing endpoint API URL:
| Endpoint | Value |
|---|---|
| URL | https://test-fep.kashier.io/v3/orders/:orderId |
| Method | PUT |
Meanwhile, whenever you are ready for production, you should use the following production API endpoint URL instead:
| Endpoint | Value |
|---|---|
| URL | https://fep.kashier.io/v3/orders/:orderId |
| Method | PUT |
Headers
| Key | Description |
|---|---|
| Authorization | The Authorization is the secret key that is used to identify the merchant. You can obtain it from Kashier's dashboard. Learn more about Authorization. |
This call takes your secret key, not a hash
Capture, void and refund authenticate with the Authorization secret key — the same credential the Dashboard API uses. That differs from the pay call on the same host: creating a payment (POST /v3/orders) is gated by a Kashier-Hash header and takes no secret key. Kashier publishes no Kashier-Hash string-to-sign for PUT /v3/orders/:orderId, so there is nothing to compute here. Sending the header anyway is what some older integrations do and we have no report of it being rejected, but that is unconfirmed — if an update ever fails with INVALID_HASH_CHECK, raise it with Kashier support.
curl -X 'PUT' 'https://test-fep.kashier.io/v3/orders/:orderId'
-H 'Authorization: your_secretKey'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-d '{"apiOperation":"CAPTURE","transaction":{"amount":3}}'Body structure
{
"apiOperation": "CAPTURE",
"transaction": {
"amount": 3
}
}Full parameter and response reference → Refund, void, or capture an order.
Capture promptly
Capture an authorized amount as soon as you are ready to take the money. An authorization is a hold placed by the issuing bank, and holds do not last indefinitely — how long yours stays capturable depends on the issuer and on your account configuration, so confirm the window that applies to you with your Kashier account manager rather than assuming one.
Release
Releasing an authorized amount is a void of the authorize transaction — there is no separate release operation. Send a PUT request to the same endpoint with apiOperation set to VOID, the order ID orderId in the URL, and the transactionId of the authorized transaction as transaction.targetTransactionId in the body. Include transaction.amount to release only part of the hold.
The transactionId is returned in the callback URL, webhook, and response body.
{
"apiOperation": "VOID",
"transaction": {
"targetTransactionId": "TX-1902526801"
}
}Kashier also releases the remainder of a hold for you automatically after a partial capture when you send autoVoid: true on the capture.
Full contract → Void