Skip to Content

Capture Payment

POST/payments/:paymentId/capture

Description

Capture an authorized payment transferring funds to your settlement address. This endpoint is only available for payments created with payment_method: "two_step".

Requires a signed request to authorize the fund movement.

🔐

The API verifies your signature before executing the capture. Use signCapture() from the @exodus/checkout-signer SDK.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your API keyyes
Content-Typeapplication/jsonyes
X-SignatureSignature from signCapture(), signed with your signing key.yes

Path Parameters

NameTypeDescriptionRequired
paymentIdstringThe unique identifier of the payment to capture.yes

Request Body

No request body required. The payment is identified by the :paymentId path parameter.

Example Request

import { signCapture } from '@exodus/checkout-signer'
 
// paymentId: system identifier for the payment (used in the URL path)
const paymentId = 'pay_0987654321fedcba'
// onChainId: on-chain identifier — available on the payment object as `on_chain_id`
const onChainId = '0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b'
const signature = signCapture(onChainId, process.env.SIGNING_PRIVATE_KEY)
 
const response = await fetch(
  `https://checkout.exodus.com/payments/${paymentId}/capture`,
  {
    method: 'POST',
    headers: {
      Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
      'Content-Type': 'application/json',
      'X-Signature': signature,
    },
  }
)

Response

SUCCESSFUL CAPTURE
{
  "id": "pay_0987654321fedcba",
  "on_chain_id": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b",
  "status": "settled",
  "tx_hash": "0x8a9c67b2d1e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9"
}

Error Responses

INVALID PAYMENT MODE
{
  "error": {
    "type": "invalid_request",
    "message": "Capture is only available for two-step payments"
  }
}
INVALID SIGNATURE
{
  "error": {
    "type": "authorization_error",
    "message": "Invalid signature"
  }
}
ALREADY CAPTURED
{
  "error": {
    "type": "invalid_request",
    "message": "Payment has already been fully captured"
  }
}

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help