Authorize
Overview
The authorize method reserves funds on a customer's payment method without transferring them. This is the first step in a two-step payment flow (authorize + capture), commonly used in e-commerce, marketplaces, and subscription businesses.
Business Use Case: When a customer places an order, you want to verify their payment method has sufficient funds and lock those funds for fulfillment. The actual charge (capture) happens later when the order ships or service is delivered.
Purpose
Why use authorization instead of immediate charge?
E-commerce fulfillment
Verify funds at checkout, capture when order ships
Hotel reservations
Pre-authorize for incidentals, capture final amount at checkout
Marketplace holds
Secure funds from buyer before releasing to seller
Subscription trials
Validate card at signup, first charge after trial ends
Key outcomes:
Guaranteed funds availability (typically 7-10 days hold)
Reduced fraud exposure through pre-verification
Better customer experience (no double charges for partial shipments)
Compliance with card network rules for delayed delivery
Request Fields
merchantTransactionId
string
Yes
Your unique transaction reference
amount
Money
Yes
The amount for the payment in minor units (e.g., 1000 = $10.00)
orderTaxAmount
int64
No
Tax amount for the order in minor units
shippingCost
int64
No
Cost of shipping for the order in minor units
paymentMethod
PaymentMethod
Yes
Payment method to be used (card, wallet, bank)
captureMethod
CaptureMethod
No
Method for capturing. Values: MANUAL, AUTOMATIC
customer
Customer
No
Customer information for fraud scoring
address
PaymentAddress
No
Billing and shipping address
authType
AuthenticationType
Yes
Authentication flow type (e.g., THREE_DS, NO_THREE_DS)
enrolledFor3ds
bool
No
Whether 3DS enrollment check passed
authenticationData
AuthenticationData
No
3DS authentication results
metadata
SecretString
No
Additional metadata for the connector (max 20 keys)
returnUrl
string
No
URL to redirect customer after 3DS/redirect flow
webhookUrl
string
No
URL for async webhook notifications
testMode
bool
No
Process as test transaction
Response Fields
merchantTransactionId
string
Your transaction reference (echoed back)
connectorTransactionId
string
Connector's transaction ID (e.g., Stripe pi_xxx)
status
PaymentStatus
Current status: AUTHORIZED, PENDING, FAILED, etc.
error
ErrorInfo
Error details if status is FAILED
statusCode
uint32
HTTP-style status code (200, 402, etc.)
incrementalAuthorizationAllowed
bool
Whether amount can be increased later
Example
SDK Setup
Request
Response
Next Steps
Last updated
Was this helpful?

