Authorization header is required or checked) since it is called directly by the card processing provider rather than by an authenticated dashboard/API client. Provider-level trust (e.g. IP allow-listing, mutual TLS, or a shared-secret check) is expected to be enforced upstream of this handler.virtual_card_id, the transaction is declined with no side effects other than a log entry.status is not active (frozen, pending-approval, or terminated), the transaction is declined and a failed payout intent action is recorded with a status_reason describing why (card_frozen, card_pending_approval, card_terminated).currency does not match the card's funding currency, the transaction is declined and a failed payout intent action is recorded with status_reason: "currency_mismatch".amount exceeds the card's cached available balance, the transaction is declined and a failed payout intent action is recorded with status_reason: "insufficient_funds".CardFloat ledger account to the provider's Clearing ledger account, the card's cached_balance is debited by amount, a successful payout intent action is recorded, and a corresponding payout transaction is created against the funding account (when one is linked).provider_reference will result in a duplicate ledger entry, so callers should not retry a callback that already received a response.curl --location '/virtual-card-transaction-callbacks' \
--header 'Content-Type: application/json' \
--data '{
"virtual_card_id": "01HX8XKXZPYSVAE8HHZXMTZFRR",
"amount": 2500,
"currency": "USD",
"provider_reference": "txn_9f2a1c7d4e5b"
}'{
"message": "Request successful",
"status": "success",
"data": {
"status": "approved"
}
}