Setup Recurring

Overview

The SetupRecurring RPC establishes a payment mandate (recurring payment instruction) at the payment processor. This enables future charges without requiring the customer to re-enter payment details or be present for each transaction. It's the foundation of subscription billing, recurring donations, and automated bill payment systems.

Business Use Case: When setting up a SaaS subscription, monthly utility bill, insurance premium, or any service that bills customers on a recurring basis. The mandate represents the customer's consent for future charges and is stored securely at the processor, reducing PCI compliance scope and improving authorization rates.

Purpose

Why use SetupRecurring?

Scenario
Developer Implementation

SaaS subscriptions

Customer signs up for monthly plan - call SetupRecurring to create mandate, then use mandate for recurring billing

Utility bills

Customer enrolls in auto-pay - call SetupRecurring to enable automatic monthly charges

Membership renewals

Gym or club membership - call SetupRecurring to set up annual renewal charges

Installment payments

Buy-now-pay-later setup - call SetupRecurring to create scheduled payment plan

Donation programs

Monthly charity donations - call SetupRecurring to enable recurring contributions

Key outcomes:

  • Mandate reference created for future charges

  • Customer consent stored at processor level

  • No PCI exposure for stored payment methods

  • Higher authorization rates for repeat charges

  • Compliance with SEPA and other mandate regulations

Request Fields

Field
Type
Required
Description

merchant_recurring_payment_id

string

Yes

Your unique identifier for this recurring setup

amount

Money

Yes

Initial amount (for validation)

payment_method

PaymentMethod

Yes

Payment method to be used for recurring charges

customer

Customer

No

Customer information

address

PaymentAddress

Yes

Billing and shipping address

auth_type

AuthenticationType

Yes

Type of authentication to be used (e.g., THREE_DS, NO_THREE_DS)

enrolled_for_3ds

bool

Yes

Indicates if the customer is enrolled for 3D Secure

authentication_data

AuthenticationData

No

Additional authentication data

metadata

SecretString

No

Additional metadata for the connector

connector_feature_data

SecretString

No

Connector-specific metadata for the transaction

return_url

string

No

URL to redirect after setup

webhook_url

string

No

URL for webhook notifications

complete_authorize_url

string

No

URL to complete authorization

session_token

string

No

Session token, if applicable

order_tax_amount

int64

No

Tax amount, if an initial payment is part of setup

order_category

string

No

Category of the order/service related to the mandate

merchant_order_id

string

No

Merchant's internal reference ID

shipping_cost

int64

No

Shipping cost, if an initial payment is part of setup

setup_future_usage

FutureUsage

No

Indicates future usage intention. Values: ON_SESSION, OFF_SESSION

off_session

bool

No

Indicates if off-session process

request_incremental_authorization

bool

Yes

Indicates if incremental authorization is requested

request_extended_authorization

bool

No

Indicates if extended authorization is requested

enable_partial_authorization

bool

No

Indicates if partial authorization is enabled

customer_acceptance

CustomerAcceptance

No

Details of customer acceptance for mandate

browser_info

BrowserInformation

No

Information about the customer's browser

payment_experience

PaymentExperience

No

Preferred payment experience

payment_channel

PaymentChannel

No

Describes the channel through which the payment was initiated

billing_descriptor

BillingDescriptor

No

Billing Descriptor information to be sent to the payment gateway

state

ConnectorState

No

State data for access token storage and other connector-specific state

payment_method_token

SecretString

No

Token for previously saved payment method

order_id

string

No

Connector order identifier if an order was created before authorize

locale

string

No

Locale/language preference for the shopper (e.g., "en-US")

connector_testing_data

SecretString

No

Connector-specific testing data (JSON stringified)

Response Fields

Field
Type
Description

connector_registration_id

string

Identifier for the mandate registration

status

PaymentStatus

Status of the mandate setup attempt

error

ErrorInfo

Error details if setup failed

status_code

uint32

HTTP status code from the connector

response_headers

map<string, string>

Optional HTTP response headers from the connector

mandate_reference

MandateReference

Reference to the created mandate for future charges

redirection_data

RedirectForm

Data for redirecting the customer's browser (if additional auth required)

network_transaction_id

string

Card network transaction reference

merchant_recurring_payment_id

string

Your recurring payment reference (echoed back)

connector_response

ConnectorResponseData

Various data regarding the response from connector

incremental_authorization_allowed

bool

Indicates if incremental authorization is allowed

captured_amount

int64

Captured amount in minor currency units if initial charge included

state

ConnectorState

State data for access token storage and other connector-specific state

raw_connector_request

SecretString

Raw request to the connector for debugging

connector_feature_data

SecretString

Connector-specific metadata for the transaction

Example

Request (grpcurl)

Response

Next Steps

Last updated

Was this helpful?