Capture Payment
POSThttps://api.cleverhub.co/api/v2/cards/capture_payment
This endpoint captures a previously authorised card payment created via the JavaScript SDK or API.
Use this only when the payment status is authorised
. Once captured, the status will transition to waiting
.
⚠️ Only full amount capture is supported. Partial capture is not allowed.
⚠️ Each payment can only be captured once. Attempting to capture a payment that is not in authorised
state or already captured will return an error.
Request
- application/json
Bodyrequired
uuidstringrequired
The unique ID of the authorised payment (e.g., VMMAOTFQ
).
Example:
PSADT5CE
Responses
- 200
- 400
- 401
- 422
Capture successful
- application/json
- Schema
- Example (auto)
- Example
Schema
uuidstring
Example:
7PPPMXIGH
namestring
Example:
Testing
emailstring
Example:
test@helloclever.co
external_idstring
Example:
wc_order_6C1hcvg4T7Pom
statusstring
Possible values: [pending
, authorised
, waiting
, received
, expired
, return_pending
, return_expired
, partially_refunded
, return_received
, return_rejected
, failed
, in_dispute
, dispute_lost
]
Example:
waiting
pay_code objectnullable
currencystring
Example:
USD
amountnumber
Example:
10000
totalnumber
Example:
10000
paid_amountnumber
Example:
0
is_refundableboolean
Example:
true
payment_methodstring
Example:
card
expired_atstring
Example:
webhook_notification object
refund_information object
sender_details object
created_atdate-time
Example:
2025-05-28T04:22:21.567+0000
{
"uuid": "7PPPMXIGH",
"name": "Testing",
"email": "test@helloclever.co",
"external_id": "wc_order_6C1hcvg4T7Pom",
"status": "waiting",
"pay_code": {
"3ds_url": "https://3ds-auth.example.com/verify"
},
"currency": "USD",
"amount": 10000,
"total": 10000,
"paid_amount": 0,
"is_refundable": true,
"payment_method": "card",
"expired_at": "",
"webhook_notification": {
"endpoint_url": "https://webhook.site/456adb8f-4407-4bce-90fe-2c431db19696",
"authorization_header": "****"
},
"refund_information": {
"total_amount": 200,
"refund_amount": 50,
"description": "Testing refund"
},
"sender_details": {
"card": {
"card_type": "card",
"card_brand": "visa",
"card_last_4": "4242"
}
},
"created_at": "2025-05-28T04:22:21.567+0000"
}
{
"uuid": "PSADT5CE",
"name": "Hello Clever",
"email": "test@helloclever.co",
"external_id": "order_test_01",
"status": "waiting",
"pay_code": null,
"currency": "USD",
"amount": "200.0",
"total": "200.0",
"paid_amount": "0.0",
"is_refundable": false,
"payment_method": "card",
"expired_at": "2025-06-30T01:29:16.826+0000",
"webhook_notification": {
"endpoint_url": "https://webhook.site/12da7803-c4cf-4f32-812d-aaeaecf20d9d",
"authorization_header": "****"
},
"sender_details": {
"card": {
"card_type": "card",
"card_brand": "visa",
"card_last_4": "1111"
}
},
"created_at": "2025-05-29T01:29:16.826+0000"
}
Bad Request
Unauthorized
- application/json
- Schema
- Example (auto)
- Example
Schema
errors object
{
"errors": {
"code": "string",
"message": "string"
}
}
{
"errors": {
"code": "REQUIRE_LOGIN",
"message": "Not Authorised"
}
}
Unprocessable Entity
- application/json
- Schema
- Example (auto)
- Example
Schema
errors object
{
"errors": {
"message": "string"
}
}
{
"errors": {
"message": "Transaction must be in authorised status before it can be captured."
}
}
Authorization: app-id
name: app-idtype: apiKeydescription: The app-id is registered and secured inside Hello Clever system and only required when client has initiated or in the middle of the transaction.in: header
name: secret-keytype: apiKeydescription: The secret-key is our client's secret of the source. Required if a publishable key is used to retrieve the source.in: header
- csharp
- curl
- dart
- go
- http
- java
- javascript
- kotlin
- c
- nodejs
- objective-c
- ocaml
- php
- powershell
- python
- r
- ruby
- rust
- shell
- swift
- HTTPCLIENT
- RESTSHARP
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.cleverhub.co/api/v2/cards/capture_payment");
request.Headers.Add("Accept", "application/json");
request.Headers.Add("app-id", "<app-id>");
request.Headers.Add("secret-key", "<app-id>");
var content = new StringContent("{\n \"uuid\": \"PSADT5CE\"\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
ResponseClear