Payment Orchestrator
Split Payments (SplitPay)

Split Payments (SplitPay)

A split payment collects one order in several parts: several cards, or cards together with non-card methods such as wallets, mobile billing (Faturana Yansıt) and promissory notes (Senetle Öde). For example, a ₺1,000 order = Card A ₺400 + Card B ₺350 + mobile billing ₺250.

The outcome is all-or-nothing:

  • If every part succeeds, the order counts as paid.
  • If a part fails, the holds on the cards are released and the parts already charged are refunded. The buyer pays nothing net. The rule for a non-reversible part: Failure and compensation.

In the API each part is a leg (legs[]).

Amounts are integers in minor units: "amount": 40000 = ₺400.00. The part amounts must add up to the order amount exactly.

Ways to split

WayPartsPage
Multiple cardsCards onlyMultiple Cards — card parts, installments per part, 3D Secure display, continuation page, the result sent to your callbackUrl
Multiple payment methodsOne or more cards and non-card methodsMultiple Payment Methods — order of the steps, the non-reversible part, credit part, insurance, failure and compensation, method block and provider choice

This page covers what both ways share: the two paths, enabling, the order of the steps, rules, time limit, statuses, events, refunds, listing and detail.

Two paths

PathWho starts itSection
Checkout FormThe buyer, from the Pay with more than one method entry in the form. You do not need to write any extra codeWith the Checkout Form
Merchant APIYou, from your own payment page, with POST /payments/splitWith the API

Both paths use the same rules, the same order of steps and the same events.

Enabling

In the panel, the Payments → Form Settings → Split Payment section has two independent switches. You can turn on either one or both.

SwitchWhat it enables
Pay with Multiple CardsThe buyer can split the payment across several of their cards. You choose the number of cards between 2 and 5 (default 3)
Split Payment with Non-Card MethodsAlongside cards, the buyer can use the non-card methods you select as parts. You pick the methods from a list

The Shared settings apply to split payments that include a non-card method:

SettingValue
Maximum parts2–5, default 3. Cards and non-card methods are counted together
Minimum amount per partEmpty means no minimum. The provider's own amount limits always apply
Total time10–25 minutes, default 20. See Time limit
  • In a split payment with a non-card method, the number of cards follows the Pay with Multiple Cards limit when that switch is on; when it is off, at most 1 card can be used.
  • Only methods that are enabled in Form Settings can be part of a split payment.
  • Whether a method and a provider can be used in a split payment is shown by splitEligible on the GET /payments/methods row.
  • An API split payment made of cards only does not depend on the Pay with Multiple Cards switch; that switch enables multiple cards in the Checkout Form.

Order of the steps

The platform sets the order; neither you nor the buyer can change it. The order the platform sets is the steps[] list in the responses.

  • In a split payment made of cards only, the cards are processed in the order you sent them.
  • In a split payment with a non-card method, parts are arranged into four phases according to the method's split payment behaviour (splitBehavior): approval, card hold, reversible charge and non-reversible charge. The phases and the order within a phase: Multiple Payment Methods › Order of the steps.

When every part has succeeded, the holds on the cards (and the credit approval, if any) are captured and the order is complete.

Rules

A split payment is validated before it starts. A request that breaks a rule is rejected; no part is charged.

The installment rules for a card part are in Multiple Cards › Installments on a card part.

Time limit

A split payment with a non-card method must complete within the Total time (default 20 minutes).

  • The end time is in the expiresAt field of the responses. The Checkout Form shows the remaining time to the buyer.
  • When the time runs out, the holds on the cards are released, the reversible parts already charged are refunded and the split payment is cancelled.
  • Once the non-reversible part starts, the clock stops and expiresAt becomes null. The card holds are kept until that part's result is final.
  • The steps' own time limits (e.g. how long a verification code is valid) also apply.
  • A split payment made of cards only has no total time; a card part whose 3D Secure is not completed ends with its own time limit.

With the Checkout Form

Enable split payments (once)

In the panel, on Payments → Form Settings → Split Payment, turn on Pay with Multiple Cards, Split Payment with Non-Card Methods, or both. See Enabling.

Create an intent and mount the form

The steps are the same as for cards → Checkout Form. The order amount is read from the intent.

The buyer adds the parts

The buyer selects the Pay with more than one method entry in the method list. They add their cards and the non-card methods you enabled as parts, and distribute the amount across the parts. For a card part see Multiple Cards › With the Checkout Form; for a non-card part see Multiple Payment Methods › With the Checkout Form.

The form runs the steps in order

When the payment starts, the form shows the steps in the platform's order as a checklist. At each step the buyer does what is asked: 3D Secure verification for a card, a verification code or the requested data for a non-card method. The remaining time is shown on screen.

A card's 3D Secure verification opens within the form in a window or on a separate page, according to the 3D Secure display you selected. On a separate page, the payment continues on the continuation page and at the end the buyer returns to your callbackUrl with the result.

Receive the result by webhook

When the order completes, a single payment.captured arrives for the main payment. Ship the order on this event → Events.

The states the buyer may see during the payment are in Multiple Payment Methods › States the buyer may see.

Order lock

When a split payment starts, the order is locked:

  • While the split payment is in progress, no single-card, non-card or wallet payment can be started for the same order: the request gets 409 payment.checkout.order_locked.
  • The reverse also holds: while a single-method payment is in progress for the order, or once the order is closed, no split payment can be started: 409 split_pay.checkout.order_not_open.
  • If the split payment fails, its time runs out or the buyer gives up, the lock is released and the order stays open. The buyer can pay the same order with another method.
  • Only one split payment runs for an order at a time. If the page is reloaded or the request is sent twice, the existing split payment continues; no new charge is made.

When a credit or BNPL provider is connected, the credit approval rules are in Multiple Payment Methods › Credit part.

How a card part's 3D Secure verification opens in the form is described in Multiple Cards › 3D Secure display.

The page where the payment continues after 3D Secure on a separate page is described in Multiple Cards › Continuation page.

The fields sent from the continuation page to your callbackUrl are in Multiple Cards › The result sent to your callbackUrl.

Endpoint reference

This section is for reference; the Checkout Form SDK calls the endpoints. As with the other form endpoints, authentication is the form token (token) and, when needed, checkoutSessionProof.

EndpointWhat it does
POST /payments/form/split/initStarts the split payment. legs[]: card part { cardToken, amount, installment?, installmentQuoteToken? }, non-card part { paymentMethod, providerCode, amount }
POST /payments/form/split/statusReturns the current status, the main payment's paymentId, the step list and the expected step
POST /payments/form/split/methodStarts the non-card part whose turn it is. The body is the form/payment body plus legId
POST /payments/form/split/cardAfter a credit approval, starts a card part with the buyer's card: { legId, cardToken }
POST /payments/form/split/replacement-cardTakes the new card for the missing amount: { cardToken }. The amount comes from the server
POST /payments/form/split/continueTurns the continuation link's code (code) into a new form token for the order
POST /payments/form/split/restart-3dsWhen the bank does not allow a window, restarts 3D Secure for the same card part on a separate page. Once per card part; see 3D Secure display
  • The responses carry the status, steps, pendingStep and expiresAt fields of the API response; splitPaymentId is not given to the browser.
  • The responses also carry the 3D Secure display the payment started with in threeDsDisplay (INLINE or REDIRECT).
  • The form/split/init and form/split/status responses carry the main payment's paymentId at the top level. This is the id returned to you when you create the intent and sent to your callbackUrl. The parts' ids are in steps[].paymentId and pendingStep.paymentId.
  • The continuation page calls its own endpoints (/payments/split/resume/*); you do not need to call them.
  • The verification code of a non-card part is confirmed and resent with the action endpoints on Payment, using pendingStep.paymentId.

With the API

With POST /api/v1/payments/split you start a split payment from your own server. The endpoint requires Step-Up authentication (Bearer token and Ed25519 signature headers; see Authentication) and the payment:split-pay permission. The Idempotency-Key header is mandatory.

Read the methods

Get the methods and providers with GET /payments/methods. For a non-card part, offer the buyer only providers with splitEligible: true.

Start the split payment

Send the cards and the non-card method blocks in legs[]. The platform validates the rules and sets the order. The card holds are taken; the non-card part whose turn it is starts with the block in this request.

Complete the expected step

pendingStep in the response tells you what is expected from the buyer or from you: a 3D Secure redirect, a verification code or starting the next non-card part. See Steps.

Receive the result by webhook

When every part is complete, the cards are captured and a single payment.captured arrives for the main payment → Events.

Request

Example requests: with cards only in Multiple Cards › With the API, with non-card methods in Multiple Payment Methods › With the API.

FieldRequiredDescription
totalAmountYesOrder amount, minor units. Must equal the sum of the parts exactly
currencyYesISO-4217 (TRY, USD, EUR)
ownerRefYesCardholder key (cardUserKey); every card part must be a card of this owner. Sent even when there is no card part (your customer reference)
legs[]Yes1–5 parts. In a request with a non-card part, between 2 and Maximum parts
callbackUrlConditionalYour http(s) URL the buyer returns to after 3D Secure. Required when a card part sets force3D
orderIdNoYour order number. Returned as orderId in the events
ownerScopeNoOwner scope; default MERCHANT_CUSTOMER

The fields of a card part are in Multiple Cards › Card part fields.

The fields of a non-card part and its method block are in Multiple Payment Methods › Non-card part fields.

Response

{
  "success": false,
  "code": "AWAITING_ACTION",
  "message": "…",
  "data": {
    "splitPaymentId": "b1e4…",
    "status": "AWAITING_ACTION",
    "duplicate": false,
    "needsReconciliation": false,
    "steps": [
      { "legId": "leg-1", "sequence": 1, "kind": "CARD", "paymentMethod": "CARD", "providerCode": null, "splitBehavior": "HOLD_CAPTURE", "amount": 40000, "status": "AUTHORIZED", "paymentId": null, "replacesLegId": null, "current": false },
      { "legId": "leg-2", "sequence": 2, "kind": "CARD", "paymentMethod": "CARD", "providerCode": null, "splitBehavior": "HOLD_CAPTURE", "amount": 35000, "status": "AUTHORIZED", "paymentId": null, "replacesLegId": null, "current": false },
      { "legId": "leg-3", "sequence": 3, "kind": "METHOD", "paymentMethod": "MOBILE_BILLING", "providerCode": "<providerCode>", "splitBehavior": "CAPTURE_IRREVERSIBLE", "amount": 25000, "status": "AWAITING_ACTION", "paymentId": "7d3a…", "replacesLegId": null, "current": true }
    ],
    "pendingStep": {
      "legId": "leg-3",
      "sequence": 3,
      "step": "ACTION",
      "paymentMethod": "MOBILE_BILLING",
      "providerCode": "<providerCode>",
      "amount": 25000,
      "paymentId": "7d3a…",
      "actionId": "act_5c2e…",
      "redirectPath": null,
      "action": {
        "id": "act_5c2e…",
        "type": "OTP",
        "expiresAt": "2026-10-20T09:03:00.000Z",
        "otp": { "maskedTarget": "53****67" },
        "consent": { "required": true, "url": "https://…" }
      }
    },
    "expiresAt": null,
    "pendingLeg": { /* compatibility field */ },
    "legs": [ /* per-leg states */ ]
  }
}
FieldDescription
successtrue only when the split payment completed (COMPLETED)
code, data.statusThe split payment's status; see Statuses
duplicatetrue when a request with the same Idempotency-Key returned the existing split payment; no new charge is made
needsReconciliationThe split payment is under operations follow-up
steps[]The step list the platform built, in execution order
pendingStepThe expected step; null when nothing is pending
expiresAtEnd of the total time (ISO-8601). null when there is no time limit or the non-reversible part has started
pendingLeg, legs[]Kept for compatibility with card-only split payments. In a new integration use steps and pendingStep

A steps[] item:

FieldDescription
legId, sequenceThe part's id and execution order (starting at 1)
kindCARD or METHOD (non-card)
paymentMethod, providerCodeMethod and provider. providerCode is null on a card part
splitBehaviorThe part's phase; see Order of the steps
amountThe part's amount, minor units
statusThe part's status; see Statuses
paymentIdThe non-card part's payment record; used with the action endpoints. null on a card part and before the part starts
replacesLegIdIf this part is a new card for a missing amount, the id of the part it replaces
currenttrue when the split payment is waiting on this part

Besides the same legId, sequence, paymentMethod, providerCode, amount and paymentId fields, pendingStep carries step, actionId, redirectPath and action. action is set only for an action started in this request that is still awaited; its shape is the same as in Payment — Actions. Read the action's current state with GET /payments/{paymentId}.

Steps

stepMeaningWhat to do
THREE_DSA card part awaits 3D SecureRedirect the buyer to redirectPath without delay (resolve it against https://api-gateway.lunixi.com). The buyer returns to your callbackUrl and the split payment continues by itself. See Multiple Cards › 3D Secure step
START_METHODThe next non-card part is waiting to startSend the same request with the same Idempotency-Key again. No new record is created; the part starts with the block in this request
ACTIONA buyer action is open on a non-card part (e.g. a verification code)Send the code with POST /payments/{paymentId}/actions/{actionId}/confirm; to send the code again use resend → Payment — Confirm. paymentId = pendingStep.paymentId
RESULT_PENDINGThe non-card part's result is awaited from the providerWait; once the result is final the split payment continues by itself. Show the buyer "your payment is being checked"
CREDIT_APPROVALCredit approval is awaitedOnly when a credit provider is connected. See Credit part
CARD_INPUT, REPLACEMENT_CARDThe buyer's card is awaitedSeen only in the Checkout Form
  • When an action completes, the platform advances the split payment by itself. If the next step is again a non-card part (START_METHOD), send the same request with the same Idempotency-Key. When all non-card parts are done, the cards are captured and the result arrives by webhook.
  • You can also send the same request with the same Idempotency-Key to get the current step list; the response carries duplicate: true and no money movement is repeated.
  • What to do when a non-card part cannot be started: Multiple Payment Methods › Completing a non-card part.
  • If the provider declines the payment or the action fails, the part fails and the split payment compensates (see Failure and compensation).
  • The Merchant API has no new-card step for a missing amount: if a card capture fails after the non-reversible part, the split payment moves to reconciliation required (see Failure and compensation).
  • When the buyer does not complete 3D Secure, and when 3D Secure holds are not enabled on your setup: Multiple Cards › 3D Secure step.

The compensation rules that apply when a part fails or the time runs out are in Multiple Payment Methods › Failure and compensation.

Statuses

Statuses of the split payment:

StatusMeaning
COMPOSINGValidated and recorded; no part has started yet
AUTHORIZINGThe parts are being run in order
AWAITING_3DSA card part awaits 3D Secure
AWAITING_ACTIONA non-card part is waiting to start, for a buyer action or for its result
AWAITING_CREDIT_APPROVALCredit approval is awaited (only when a credit provider is connected)
AWAITING_REPLACEMENT_CARDThe buyer's new card for a missing amount is awaited (Checkout Form only)
AUTHORIZED, CAPTURINGEvery part is ready; the cards are being captured
COMPLETEDEvery part was charged; the order is paid
COMPENSATINGCompensation in progress: holds are being released and charged parts refunded
VOIDEDCompensation finished; the buyer paid nothing net
FAILEDThe split payment ended in failure
RECONCILIATION_REQUIREDThe non-reversible part was charged but the rest of the order could not be collected; you decide about shipping

Statuses of a part (legStatus, steps[].status): PENDING, AUTHORIZING, AWAITING_3DS, AWAITING_ACTION, AUTHORIZED, CAPTURED, VOIDED, REFUNDED, COMPENSATING, FAILED.

A split payment that stays COMPENSATING with needsReconciliation: true is under operations follow-up; money risk is never silently abandoned.

Events

Result of the main payment

The result of a split payment always arrives as a single event: payment.captured or payment.failed, as in a single-method payment. Ship the order on payment.captured.

FieldDescription
settlementModeSPLIT: the money is collected on the parts
splitPaymentIdThe split payment's id
orderIdYour order number
intentIdCheckout Form only: the order's payment record
statusCAPTURED or FAILED; the split payment's own status is in splitStatus
totalAmountMinorOrder amount
capturedAmountMinor / amountMinorThe captured order amount on success / the order amount on failure
legs[]Per part: legId, sequence, amountMinor, legStatus, paymentIntentId, paymentMethod, providerCode and, when present, refundState

In the Checkout Form, if the split payment is cancelled (VOIDED), the order stays open and no payment.failed is sent; the buyer can pay the same order with another method. In that case payment.split.voided arrives.

Split payment events

EventWhen
payment.split.completedEvery part was charged (COMPLETED). Carries part summaries
payment.split.voidedCompensation finished (VOIDED); the buyer paid nothing net
payment.split.compensatingThe split payment needs operations follow-up (COMPENSATING, needsReconciliation). cause: CAPTURE_FAILURE or COMPENSATION_INCOMPLETE
payment.split.outcome_pendingThe non-reversible part's result is awaited; the clock stopped. Carries pendingLegId, pendingLegSequence
payment.split.reconciliation_requiredReconciliation required. Carries shortfallAmountMinor (missing amount), reason (REPLACEMENT_CARD_FAILED, REPLACEMENT_WINDOW_EXPIRED, BUYER_ABANDONED, CAPTURE_NOT_RECOVERABLE) and, when present, unsettledLegId

Each of these events is sent at most once per split payment. They are not part events: if your endpoint subscribes to the event type, they arrive regardless of the option below.

Part events

The events of each part's own payment record (payment.authorized, payment.captured, payment.failed, payment.voided, payment.refunded …) and payment.split.leg_refund_pending (compensation refund pending) are not sent by default.

  • To receive them, add the payment.split.leg_events option to your webhook endpoint's event list. In the panel it is the option that also sends part events for split payments.
  • The option is not an event type; you must also subscribe to the part event's type (e.g. payment.captured). A payment.* subscription does not turn this option on.
  • A part event's orderId has the form <order>:leg:<sequence>, and the data.splitLeg field carries splitPaymentId, parentPaymentId (the order's payment record in the Checkout Form, null in the API), parentOrderId, legId and legSequence.
  • Ship on the main payment's payment.captured, not on part events.

A chargeback (payment.disputed) is always sent regardless of this option and carries the main payment information in data.splitLeg.

Delivery, signatures and subscriptions: Webhooks.

Refunds

You request a refund on the main payment of a split payment; the platform distributes the amount across the parts. Only a completed (COMPLETED) split payment can be refunded.

Distribution rule

  • Card parts are refunded first, in order and partially if needed.
  • The remaining amount is covered from the reversible non-card parts. A non-card part is refunded only for its full remaining amount.
  • A non-reversible part (e.g. mobile billing, promissory notes) is never part of the distribution.
  • A part's refund ceiling is the amount captured from it; for a card part with installments the installment fee is included. A full refund also refunds the installment fee.
  • The refundable amount and the non-refundable amount are in the refund.refundableAmount and refund.nonRefundableAmount fields of the GET /payments/split/:id response.

If the amount exceeds the refundable total, the request gets 400 split_pay.refund.amount_exceeded; the refundable amount is in details.refundableAmount. If the amount is within the total but cannot be split across the parts (e.g. only non-card parts remain and the amount would split one of them), 422 split_pay.refund.amount_not_distributable is returned.

For a Checkout Form payment

Request the refund on the order's payment record with the existing refund endpoint: POST /payments/:id/refund → Refunds.

  • amount is required.
  • The per-part result is in the response's meta.details.splitRefund field.
  • If some parts could not be refunded, the response fails with the code split_pay.refund.incomplete. If a part's result is not yet known, the response is 202. In both cases retry with the same Idempotency-Key; a part already refunded is not refunded again.

For a split payment started from the API

POST https://api-gateway.lunixi.com/api/v1/payments/split/{splitPaymentId}/refund

The body is { "amount": 15000, "reason": "…" }; reason is optional. The endpoint requires the payment:refund permission and a mandatory Idempotency-Key.

  • The response's data carries refundRequestId, splitPaymentId, orderId, currency, status (COMPLETED, PARTIAL, FAILED, PROCESSING), requestedAmount, refundedAmount, refundableAmount, nonRefundableAmount, duplicate and per-part legs[] (legId, sequence, paymentIntentId, paymentMethod, providerCode, amount, status, errorCode).
  • When every part was refunded the response has success: true. If some parts could not be refunded, the response carries success: false and code: "split_pay.refund.incomplete"; retry with the same Idempotency-Key.
  • A request with the same key but a different amount or reason is rejected.

After the refund

  • A single event arrives for the main payment: payment.refunded when no refundable amount is left on the main payment, otherwise payment.partially_refunded. The event carries settlementMode: "SPLIT", refundId, refundAmountMinor, totalRefundedMinor, fullyRefunded and refundedLegs[].
  • The main payment's status does not change after the refund. The refunded total is shown by totalRefundedMinor in the event and refund.refundedAmount in the GET /payments/split/:id response.
  • You can also refund a single part: POST /payments/:id/refund on the part's payment record. While the split payment is in progress, or while the part's compensation refund is pending, this request gets 409 split_pay.refund.not_allowed.

Listing and detail

Payment list

  • In the GET /payments list a Checkout Form split payment is a single row: the order's payment record, with the order amount. The parts are not in the list.
  • With includeLegs=true the parts' payment records are listed too.
  • Rows related to a split payment carry a split field: splitPaymentId, role (PARENT main payment, LEG part), and on a part parentPaymentId and legSequence.
  • The main payment of a split payment started from the API is not a payment record; its parts appear in the list with role: "LEG". Read the main payment with GET /payments/split.

Split payment detail

GET /api/v1/payments/split (list, keyset pagination) and GET /api/v1/payments/split/:id (detail) require a Bearer token and the payment:view permission.

Per part in the detail:

FieldDescription
legStatusThe part's status; see Statuses
paymentMethod, providerCodeMethod and provider
legAmountThe part's share of the order amount
installmentCount, chargeAmountNumber of installments and the charged amount including the installment fee
capturedAmount, refundedAmountCaptured and refunded amount
refundStateREFUND_PENDING (refund pending), REFUNDED (refunded), NOT_REFUNDABLE (cannot be reversed) or null
compensationRefundDetails of the compensation refund: status, amount, attempt, requestedAt, nextAttemptAt, lastErrorCode, refundedAt
disputeWhen the part has a chargeback: state, disputedAmount, openChargebackCount
pendingRedirectPath, awaiting3dsSinceWhile a card part awaits 3D Secure: the redirect path and when the wait started
cardTokenMasked, cardLast4, cardBrandCard identity; the raw token is never returned
paymentIntentId, paymentIntentStatusThe part's payment record and its status
failureReasonOn a failed part, the normalized error code and the provider message

At the top level there are refund (refundableAmount, nonRefundableAmount, refundedAmount) and dispute (hasDispute, disputedAmount, legCount).

Chargebacks

A chargeback is recorded on the part's payment record. The main payment's status does not change; the detail shows the dispute flag and amount. No automatic action is taken on the other parts. The payment.disputed event arrives with data.splitLeg → Chargebacks.

Errors

Every code is described on Error Handling.

StatusCodeWhat to do
422split_pay.validation.amount_mismatchMake the parts add up to the order amount
422split_pay.validation.leg_count_out_of_rangeKeep the number of parts between details.min and details.max
422split_pay.validation.card_leg_count_out_of_rangeLimit the number of cards to details.max
422split_pay.validation.invalid_leg_amountSend the part amount as a positive integer
422split_pay.validation.currency_mismatchSend every part in the order's currency, with a provider that supports it
422split_pay.validation.missing_card_tokenAdd cardToken to the card part; remove card fields from the non-card part
422split_pay.validation.methods_disabledTurn on Split Payment with Non-Card Methods
422split_pay.validation.method_not_allowedEnable the method for split payments or choose another method
422split_pay.validation.provider_not_availableChoose a provider from the GET /payments/methods list
422split_pay.validation.provider_not_split_eligibleChoose a provider with splitEligible: true
422split_pay.validation.duplicate_providerUse a provider in one part only
422split_pay.validation.multiple_irreversible_legsSend at most one non-reversible part
422split_pay.validation.leg_below_minimumRaise the part to details.minLegAmount or more
422split_pay.validation.leg_outside_provider_limitsBring the part into the provider's details.minAmount–details.maxAmount range
422split_pay.validation.invalid_installmentChoose installments between 1 and details.max; send no installments on a non-card part
422split_pay.validation.installment_quote_rejectedRefresh the quote with the part's amount
422split_pay.insurance.requires_card_legWith insurance selected, add at least one card part or continue without insurance; the premium is collected from a card part
422split_pay.validation.callback_url_required / callback_url_invalidWith a force3D part, send an http(s) callbackUrl
422split_pay.validation.duplicate_card / mixed_ownerDistinct cards, same cardholder
422payment.provider.disabled_in_formIn the Checkout Form, choose a provider shown in the form
409split_pay.checkout.order_not_openAnother payment is in progress for the order or the order is closed; check details.reason
409payment.checkout.order_lockedA split payment is in progress for the order; wait for it to finish
409split_pay.step.not_allowedRead the status and follow the expected step; check details.reason
409split_pay.step.busyRetry in a few seconds
410split_pay.continuation.unavailableThe continuation link can no longer be used; check details.reason
410split_pay.resume.unavailableThe continuation page link is invalid or has expired; check details.reason
409split_pay.resume.already_openedThe payment is continuing in another window; the buyer continues there
401split_pay.resume.proof_invalidThe buyer continues the payment in the window where the continuation page was first opened
503split_pay.resume.not_configuredThe split payment was not started and no money moved; try again shortly
409split_pay.three_ds.restart_exhausted3D Secure for this card has already been restarted once and the separate page was opened; the buyer completes verification on that page
410split_pay.three_ds.restart_expiredThe 3D Secure session is closed or has expired; the buyer is asked to enter the card again. Check details.reason
400split_pay.refund.amount_exceededLimit the amount to details.refundableAmount
422split_pay.refund.amount_not_distributableChoose an amount that covers a non-card part in full
409split_pay.refund.not_allowedCheck details.reason
—split_pay.refund.incompleteRetry with the same Idempotency-Key
400missing Idempotency-KeySend the header on every request
403Split payments disabledThe feature is off for your installation

Related pages