Learn how to authorize funds on a card before making a payment.
An Authorization
(also known as a card hold) reserves a specific amount on the card, confirming that the buyer's payment method has sufficient funds to cover the transaction.
All authorizations must be captured (i.e., debited) within seven days.
To create an authorization:
- Use the
Payment Instrument
ID provided by Finix as thesource
. - Use the seller's
Merchant
ID as themerchant
for the authorization. - Include a
fraud_session_id
to assess the transaction for potential fraud. Reviewing transactions for fraud helps prevent potentially fraudulent activities by malicious actors.
For more information on fraud detection, see: Creating an Authorization with Fraud Detection.
- Sandbox server
https://finix.sandbox-payments-api.com/authorizations
- Production server
https://finix.live-payments-api.com/authorizations
curl -i -X POST \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/authorizations \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"amount": 100,
"currency": "USD",
"merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
"source": "PIkxmtueemLD6dN9ZoWGHT44",
"tags": {
"order_number": "21DFASJSAKAS"
}
}'
A successful request returns a 201 Created
status code, with the response body containing:
- an
expires_at
timestamp for its expiration - the authorization's
state
asSUCCEEDED
{
"id": "AUgspz5X2AwSne5g78qNeYD1",
"created_at": "2024-12-04T08:25:21.93Z",
"updated_at": "2024-12-04T08:25:21.93Z",
"3ds_redirect_url": null,
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": "POSTAL_CODE_AND_STREET_MATCH",
"amount": 100,
"amount_requested": 100,
"application": "APc9vhYcPsRuTSpKD9KpMtPe",
"currency": "USD",
"expires_at": "2024-12-11T08:25:21.93Z",
"failure_code": null,
"failure_message": null,
"idempotency_id": null,
"is_void": false,
"merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
"merchant_identity": "IDjvxGeXBLKH1V9YnWm1CS4n",
"messages": [],
"raw": null,
"receipt_last_printed_at": null,
"security_code_verification": "MATCHED",
"source": "PIkxmtueemLD6dN9ZoWGHT44",
"state": "SUCCEEDED",
"tags": {
"order_number": "21DFASJSAKAS"
},
"trace_id": "27aad359-b747-4159-9f01-bcaa77245d71",
"transfer": null,
"void_state": "UNATTEMPTED",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/authorizations/AUgspz5X2AwSne5g78qNeYD1"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDjvxGeXBLKH1V9YnWm1CS4n"
}
}
}
The authorization must be captured before the expires_at
time passes, or the funds will be released. If transfer
is null
, the authorization has not been captured yet.
Capture the succeeded authorization when you're ready to debit the buyer's Payment Instrument
. Capturing an authorization initiates the movement of funds.
- Sandbox server
https://finix.sandbox-payments-api.com/authorizations/{authorization_id}
- Production server
https://finix.live-payments-api.com/authorizations/{authorization_id}
curl -i -X PUT \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/authorizations/AUg8unYpnWBEY1AdVUDkdQYJ \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"capture_amount": 100
}'
A successful request returns a 200 OK
status code, and the response body contains a transfer
property that corresponds to the ID of the Transfer
resource created to debit funds.
{
"id": "AUcmwpCN6yKJ2HGot6X4YSv7",
"created_at": "2025-04-30T20:31:12.63Z",
"updated_at": "2025-07-22T16:28:00.67Z",
"3ds_redirect_url": null,
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": "POSTAL_CODE_AND_STREET_MATCH",
"amount": 100,
"amount_requested": 100,
"application": "APc9vhYcPsRuTSpKD9KpMtPe",
"currency": "USD",
"expires_at": "2025-05-07T20:31:12.63Z",
"failure_code": null,
"failure_message": null,
"idempotency_id": null,
"is_void": false,
"merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
"merchant_identity": "IDjvxGeXBLKH1V9YnWm1CS4n",
"messages": [],
"raw": null,
"receipt_last_printed_at": null,
"security_code_verification": "MATCHED",
"source": "PIkxmtueemLD6dN9ZoWGHT44",
"state": "SUCCEEDED",
"supplemental_fee": null,
"tags": {},
"trace_id": "836faa82-15e4-4945-8923-94253464ddc4",
"transfer": "TRfbdBWj2Ww6a2j7XfiqEoV4",
"void_state": "UNATTEMPTED",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/authorizations/AUcmwpCN6yKJ2HGot6X4YSv7"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
},
"transfer": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRfbdBWj2Ww6a2j7XfiqEoV4"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDjvxGeXBLKH1V9YnWm1CS4n"
}
}
}
- Use the Fetch the Transfer endpoint with its ID to check the
state
of theTransfer
when it will be ready to settle or to view its details. - Settle the
Transfer
(see Seller Payouts).
As opposed to Transfers
which can only be reversed or refunded, authorizations can be voided to release funds and stop a transaction from completing.
- Sandbox server
https://finix.sandbox-payments-api.com/authorizations/{authorization_id_void_to}
- Production server
https://finix.live-payments-api.com/authorizations/{authorization_id_void_to}
curl -i -X PUT \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/authorizations/AUnubzehgQfqcvJpoxhqja7k \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"void_me": true
}'
A successful request returns a 200 OK
status code, and the response body indicates the void_state
transitioned from UNATTEMPTED
to PENDING
. When the Authorization
is voided, the void_state
updates to SUCCEEDED
.
{
"id": "AUh4LG8REtmRBCxaSp85PMkr",
"created_at": "2024-12-04T10:49:28.93Z",
"updated_at": "2024-12-04T10:49:51.38Z",
"3ds_redirect_url": null,
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": "POSTAL_CODE_AND_STREET_MATCH",
"amount": 100,
"amount_requested": 100,
"application": "APc9vhYcPsRuTSpKD9KpMtPe",
"currency": "USD",
"expires_at": "2024-12-11T10:49:28.93Z",
"failure_code": null,
"failure_message": null,
"idempotency_id": null,
"is_void": false,
"merchant": "MU7noQ1wdgdAeAfymw2rfBMq",
"merchant_identity": "IDjvxGeXBLKH1V9YnWm1CS4n",
"messages": [],
"raw": null,
"receipt_last_printed_at": null,
"security_code_verification": "MATCHED",
"source": "PIkxmtueemLD6dN9ZoWGHT44",
"state": "SUCCEEDED",
"tags": {
"order_number": "21DFASJSAKAS"
},
"trace_id": "f9d829f3-6d84-41f1-a662-38ca99206af2",
"transfer": "TRhzVLqF1TKjtMZsMJwA7P9j",
"void_state": "PENDING",
"_links": {
"self": {
"href": "https://finix.sandbox-payments-api.com/authorizations/AUh4LG8REtmRBCxaSp85PMkr"
},
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
},
"transfer": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRhzVLqF1TKjtMZsMJwA7P9j"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDjvxGeXBLKH1V9YnWm1CS4n"
}
}
}
If an Authorization
is voided, it can no longer be captured.