Initiation is the first request of every alternative payment. It creates the order and returns what the customer needs to pay: a link to the method’s payment page, a payment-button script, or payment details such as a QR code, voucher, or deep link.
Use this page to choose the request that fits the sale, prepare the fields each method needs, and decide whether to reuse the payment for later charges.
API Init payment API v1 endpoint initiates a payment using an alternative payment method, creates the order, and prepares the transaction so the customer can proceed with the payment process.How initiation works
- Send an init payment request with the order, customer, and method details. Each method lists its required fields, such as a document number or a phone number, on its page in choose APM.
- Show the customer the next step from the response: redirect to
pay_form.return_url, load the payment button frompay_form.script_url, or display the payment details returned inpayment_type_data. - Wait for the result. The order stays in processing until the customer completes the payment, and the final status arrives in the updated alternative order Webhook . The same event can arrive more than once, so process it idempotently.
- If the payment is reused for later charges, store the token from the order and charge it with the recurring API v1 endpoint.
Request types
Choose the request by where the price comes from. All three use the same endpoint, and payment_method selects the method.
| Request | When to use | Key fields | Methods |
|---|---|---|---|
| Payment | You set the price in the request, for a one-off sale or for recurring charges you schedule yourself. | amount, currency, future_usage where the method requires it |
All methods |
| Product-based payment | A one-time product, such as an upsell. The price comes from the product. | product_id, customer_account_id |
All methods except Bizum, Cash App Pay, and Pix Automático |
| Subscription payment | The first payment of a Solidgate subscription. The billing plan comes from the product. | product_id, customer_account_id |
Alipay, BLIK Recurring, GCash, Klarna, MB WAY, Mercado Pago, PayPal, Pix Automático, SmartPix, UPI, WeChat Pay |
Product-based and subscription requests do not take an amount. The billing plan comes from the product, so do not send future_usage.billing_period with a product for Klarna, Pix Automático, or UPI, or future_usage.billing_amount for Klarna. For Pix Automático and UPI subscription requests, billing_period results in a validation error. future_usage.max_amount stays optional and sets a custom authorization ceiling.
Init future payment
Billing logic defines who initiates a payment and whether the customer is present: a single purchase (one-time), a later purchase the customer starts without entering details again (1-click), charges on a fixed schedule (recurring), or charges you start when needed (unscheduled).
| Billing logic | payment_type |
|---|---|
| One-time | one-time 1-click recurring unscheduled |
| 1-click | one-time 1-click recurring unscheduled |
| Recurring | one-time 1-click recurring unscheduled |
| Unscheduled | one-time 1-click recurring unscheduled |
Payment type is the API value in future_usage.payment_type . The value can differ from the billing-logic label. unscheduled is a superset of Unscheduled, Recurring, and 1-click when the provider does not restrict token use. When a method supports both a native type and unscheduled , send the native type.
| Method | payment_type |
|---|---|
| Alipay alipay | one-time 1-click recurring unscheduled |
| Bizum bizum | one-time 1-click recurring unscheduled |
| BLIK One-time blik | one-time 1-click recurring unscheduled |
| BLIK Pay Later blik-bnpl | one-time 1-click recurring unscheduled |
| BLIK Recurring blik | one-time 1-click recurring unscheduled |
| Cash App Pay cashapp | one-time 1-click recurring unscheduled |
| GCash gcash | one-time 1-click recurring unscheduled |
| Klarna klarna-network | one-time 1-click recurring unscheduled |
| MB WAY mbway | one-time 1-click recurring unscheduled |
| MobilePay mobilepay | one-time 1-click recurring unscheduled |
| Multibanco multibanco | one-time 1-click recurring unscheduled |
| Pix Automático pix-automatico | one-time 1-click recurring unscheduled |
| UPI Collect upi | one-time 1-click recurring unscheduled |
| UPI Intent upi | one-time 1-click recurring unscheduled |
| WeChat wechatpay | one-time 1-click recurring unscheduled |
PayPal does not use future_usage. It stores a reusable token through a
billing agreement.
future_usage object Use this flow to define intent for subsequent use of the customer's payment credentials, token-based future charges.
It ensures compliance with scheme rules, reduces declines on future payments, and improves success rates. future_usage object Required
Description
Defines the usage of stored payment credentials.
Should be provided either future_usage or product_id.
Example
{
"future_usage": {
"payment_type": "recurring"
}
}
payment_type
string
Required
Description
Type of the token usage scenario.
- one-time no token created, for one-off use. Maps only to One-time billing logic.
- 1-click token for future customer-initiated payments without re-entering details. Maps only to 1-click billing logic.
- recurring token for fixed scheduled merchant-initiated charges, for subscriptions. Maps only to Recurring billing logic.
- unscheduled token for unscheduled or variable merchant-initiated charges, for auto-top-up. Maps to Unscheduled, Recurring, and 1-click when the provider does not restrict token use.
Billing period and amount ceiling
Methods that keep a mandate limit how often and how much you can charge. Set these limits in the first request, or in the Solidgate product for product-based and subscription requests. The method page holds the full rules.
| Method | Billing period | Amount ceiling | With a product |
|---|---|---|---|
| Klarna | Required for recurring . Any interval in days, weeks, months, or years. | billing_amount is required and sets the amount of each later charge. |
Do not send billing_period or billing_amount. |
| Pix Automático | Required. 7 days, 1 week, 1, 3, 6, or 12 months, or 1 year. A trial is at least 2 days. | max_amount is required and caps each charge in the billing cycle. |
The product uses an allowed period. max_amount is optional. |
| UPI Intent | Required for recurring . Daily, weekly, monthly, or yearly. A trial matches the billing period. | max_amount is required, up to ₹15,000 per charge. |
The product uses an allowed period. max_amount is optional. |
| UPI Collect | Not used. Charges are unscheduled . | max_amount is required without a product, up to ₹15,000 per charge. |
max_amount is optional. |
| BLIK Recurring | Not used. Charges are unscheduled . | Up to PLN 2,000 per charge. | Subscription requests take the plan from the product. |
| Alipay, GCash, MB WAY, WeChat Pay | Taken from the product. | Not used. | Recurring and unscheduled charges use subscription requests only. |
Init future payment calculation
Send at least
payment_type
or product_id. If only product_id is sent, the intent is the product type. Compatible requests use
payment_type
when it is present.
These requests succeed.
| payment_type | Product | Intent |
|---|---|---|
| Not sent | one-time | one-time |
| Not sent | recurring | recurring |
| one-time | No product | one-time |
| one-time | one-time | one-time |
| 1-click | No product | 1-click |
| 1-click | one-time | 1-click |
| recurring | No product | recurring |
| recurring | recurring | recurring |
| unscheduled | No product | unscheduled |
| unscheduled | one-time | unscheduled |
| unscheduled | recurring | unscheduled |
These requests are declined.
| payment_type | Product | Intent |
|---|---|---|
| Not sent | No product | DECLINED |
| one-time | recurring | DECLINED |
| 1-click | recurring | DECLINED |
| recurring | one-time | DECLINED |