curl --request POST \
--url https://app.dimepayments.com/api/transaction/capture \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"data": []
}'import requests
url = "https://app.dimepayments.com/api/transaction/capture"
payload = { "data": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: []})
};
fetch('https://app.dimepayments.com/api/transaction/capture', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.dimepayments.com/api/transaction/capture",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.dimepayments.com/api/transaction/capture"
payload := strings.NewReader("{\n \"data\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.dimepayments.com/api/transaction/capture")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dimepayments.com/api/transaction/capture")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"message": "Transaction captured successfully."
}
}{
"errors": {
"data.transaction_id": [
"The data.transaction_id field is required."
]
}
}{
"data": {
"message": "Permission Denied."
}
}{
"data": {
"message": "No such Merchant"
}
}Capture an Authorized Credit Card
Captures funds from a credit card authorization created by the authorize endpoint. This is the point at which money actually moves: the authorization only reserved the funds.
Pass the transaction_number returned by the authorize endpoint as data.transaction_id.
Omit data.amount to capture the full authorized amount, or pass a smaller amount to capture
part of it — useful when the final total came in below the original estimate. The capture
amount may not exceed the authorized amount.
An authorization can only be captured once, and a partial capture closes it. Capturing 50ofa100 hold settles 50andreleasestheremaining50 back to the cardholder — a second call for the balance is refused with “Transaction is not an open authorization.” If you need to collect in more than one instalment (a split shipment, say), authorize each instalment separately. Capture the true final amount in one call wherever you can.
Capture promptly, typically within 24 hours of authorizing: an uncaptured authorization is released by the card issuer on its own schedule and can no longer be captured once it expires.
A captured transaction becomes an ordinary card payment and can be refunded or voided through
the refund and void endpoints. Note that the refund endpoint voids rather than refunds until
the transaction has settled, and reports "message": "void" when it does — that is the
correct handling for money that has not left the cardholder’s account yet, and it emits a
Credit Card Void event rather than a Credit Card Refund one.
To release a hold without taking any money, do not call this endpoint — call
PATCH /api/transaction/void with data.transaction_type of CC and the authorization’s
transaction_number as data.transaction_id. The refund and void endpoints are gated by
their own separate API key permission, not by this one.
curl --request POST \
--url https://app.dimepayments.com/api/transaction/capture \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"data": []
}'import requests
url = "https://app.dimepayments.com/api/transaction/capture"
payload = { "data": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: []})
};
fetch('https://app.dimepayments.com/api/transaction/capture', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.dimepayments.com/api/transaction/capture",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.dimepayments.com/api/transaction/capture"
payload := strings.NewReader("{\n \"data\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.dimepayments.com/api/transaction/capture")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dimepayments.com/api/transaction/capture")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": []\n}"
response = http.request(request)
puts response.read_body{
"data": {
"message": "Transaction captured successfully."
}
}{
"errors": {
"data.transaction_id": [
"The data.transaction_id field is required."
]
}
}{
"data": {
"message": "Permission Denied."
}
}{
"data": {
"message": "No such Merchant"
}
}
