Skip to main content
POST
Release a held payment

Authorizations

x-api-key
string
header
required

Path Parameters

id
string<uuid>
required

The unique identifier of the payment method

paymentId
string<uuid>
required

The unique identifier of the held payment to release

Response

Hold released successfully

Response after releasing a held payment

id
string<uuid>
required

Unique identifier of the payment

Example:

"11111111-2222-3333-4444-555555555555"

status
enum<string>
required

Payment status after a successful release. A hold released by the automatic nightly expiry sweep (23:00 and again at 23:15 America/Mexico_City) instead of by this endpoint ends up as HOLD_EXPIRED.

Available options:
HOLD_RELEASED
Example:

"HOLD_RELEASED"

amount
number<decimal>
required

The released amount

currency
string
required
Example:

"MXN"

heldAmount
number<decimal> | null

What the bank authorized when the hold was placed. On a released hold nothing was ever captured, so it equals amount.

Example:

3500

externalId
string | null

The idempotency key supplied when the payment was created, echoed back so you can map this payment id to your own order reference. Null when none was supplied. Not to be confused with the payment method externalId, which identifies the saved card.

Example:

"invoice-2025-01-8842"

heldAt
string<date-time> | null

When the bank approved the hold

Example:

"2026-08-12T10:00:00.000Z"

capturedAt
string<date-time> | null

Null on a released hold: nothing was ever captured.

holdReleasedAt
string<date-time> | null

When the hold was released

Example:

"2026-08-14T09:30:00.000Z"

holdExpiresAt
string<date-time> | null

When the hold would have expired: 23:00 America/Mexico_City on the 7th natural day, counting the day of heldAt as day 1. The hold window is counted in NATURAL DAYS, not in elapsed hours. The day the hold is placed counts as day 1 and the time of day it was placed is irrelevant: a hold placed Monday 10:00 and one placed Monday 23:29 both expire at the same instant, at the end of the following Sunday. The bank closes its day at 23:30 America/Mexico_City and Compago closes the hold at 23:00, 30 minutes earlier, so the last minute to capture is 22:59 on the last day. It keeps being reported after the release, because it is a fact about the payment.

Example:

"2026-08-19T05:00:00.000Z"

holdExpired
boolean

Whether the hold window has closed. It flips at 23:00 America/Mexico_City on the last natural day, not 7 times 24 hours after heldAt.

holdDaysRemaining
integer | null

Null once the hold is released: it is only reported while the payment is HELD.