Authorize
Overview
The Authorize RPC 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. This reduces chargebacks and improves cash flow management.
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
merchant_transaction_id
string
Yes
Your unique transaction reference
amount
Money
Yes
The amount for the payment in minor units (e.g., 1000 = $10.00)
order_tax_amount
int64
No
Tax amount for the order in minor units
shipping_cost
int64
No
Cost of shipping for the order in minor units
payment_method
PaymentMethod
Yes
Payment method to be used (card, wallet, bank)
capture_method
CaptureMethod
No
Method for capturing. Values: MANUAL, AUTOMATIC
customer
Customer
No
Customer information for fraud scoring
address
PaymentAddress
No
Billing and shipping address
auth_type
AuthenticationType
Yes
Authentication flow type (e.g., THREE_DS, NO_THREE_DS)
enrolled_for_3ds
bool
No
Whether 3DS enrollment check passed
authentication_data
AuthenticationData
No
3DS authentication results
metadata
SecretString
No
Additional metadata for the connector (max 20 keys)
connector_feature_data
SecretString
No
Connector-specific feature data for the transaction
return_url
string
No
URL to redirect customer after 3DS/redirect flow
webhook_url
string
No
URL for async webhook notifications
complete_authorize_url
string
No
URL to complete authorization after redirect
session_token
string
No
Session token for wallet payments (Apple Pay, Google Pay)
order_category
string
No
Category of goods/services being purchased
merchant_order_id
string
No
Your internal order ID
setup_future_usage
FutureUsage
No
ON_SESSION or OFF_SESSION for tokenization
off_session
bool
No
Whether customer is present (false = customer present)
request_incremental_authorization
bool
No
Allow increasing authorized amount later
request_extended_authorization
bool
No
Request extended hold period
enable_partial_authorization
bool
No
Allow partial approval (e.g., $80 of $100)
customer_acceptance
CustomerAcceptance
No
Customer consent for recurring payments
browser_info
BrowserInformation
No
Browser details for 3DS fingerprinting
payment_experience
PaymentExperience
No
Desired UX (e.g., REDIRECT, EMBEDDED)
description
string
No
Payment description shown on statements
payment_channel
PaymentChannel
No
E-commerce, MOTO, or recurring indicator
test_mode
bool
No
Process as test transaction
setup_mandate_details
SetupMandateDetails
No
Mandate setup for recurring SEPA/bank debits
statement_descriptor_name
string
No
Your business name on customer statement
statement_descriptor_suffix
string
No
Additional descriptor suffix
billing_descriptor
BillingDescriptor
No
Complete billing descriptor configuration
state
ConnectorState
No
State from previous multi-step flow
order_details
OrderDetailsWithAmount[]
No
Line item details with amounts
locale
string
No
Locale for localized responses (e.g., "en-US")
tokenization_strategy
Tokenization
No
Tokenization configuration
threeds_completion_indicator
ThreeDsCompletionIndicator
No
3DS method completion status
redirection_response
RedirectionResponse
No
Response data from redirect-based auth
continue_redirection_url
string
No
URL to continue after redirect
payment_method_token
SecretString
No
Token for previously saved payment method
Response Fields
merchant_transaction_id
string
Your transaction reference (echoed back)
connector_transaction_id
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
status_code
uint32
HTTP-style status code (200, 402, etc.)
response_headers
map<string,string>
Connector-specific response headers
redirection_data
RedirectForm
Redirect URL/form for 3DS or bank authentication
network_transaction_id
string
Card network transaction reference
incremental_authorization_allowed
bool
Whether amount can be increased later
state
ConnectorState
State to pass to next request in multi-step flow
raw_connector_response
SecretString
Raw API response from connector (debugging)
raw_connector_request
SecretString
Raw API request sent to connector (debugging)
captured_amount
int64
Amount already captured (0 for fresh auth)
Example
Request (grpcurl)
Response
Next Steps
Last updated
Was this helpful?

