Skip to main content
POST
This request creates one payment funded by exactly two cards. Each card pays its part of amount, and the two parts must add up to amount.value. The base URL is https://api-sandbox.y.uno/v2 in sandbox https://api.y.uno/v2 in production (US) and https://api.eu.y.uno/v2 in production (EMEA). Read Pay with two cards before you integrate.
  • DIRECT or REDIRECT: send payment_method.payment_methods with exactly two items, both type: CARD. Each item has its amount and detail.card or a vaulted_token.
  • SDK_CHECKOUT: send checkout.session and the composite payment_method.token from the headless Web SDK. Do not send payment_methods.
payment_method.capture applies to both cards and defaults to true. Do not send capture inside detail.card: the request is rejected. The response has the same shape as Retrieve Payment (two cards).
All or nothingIf one card fails, Yuno reverses the other card before it answers this request, so the response already shows the final outcome. See All or nothing.
EnablementIn production, two-card payments are enabled per organization. Until then, this request returns 403 PRODUCT_NOT_ENABLED. In sandbox they are enabled for every organization.
split_marketplace, external_subscription and amount.currency_conversion are not allowed with two cards, and promotion quotes are not accepted. This request requires an X-Idempotency-Key. See Authentication for details.

Authorizations

public-api-key
string
header
default:<Your public-api-key>
required
private-secret-key
string
header
default:<Your private-secret-key>
required

Headers

X-Idempotency-Key
string<uuid>
required

Unique key for this request. Required on every v2 payment request. Retry an unclear outcome with the same key. Without it the request is rejected with 400 INVALID_PARAMETERS: "The header 'x-idempotency-key' is required."

Body

application/json
account_id
string<uuid>
required

Your Yuno account id.

merchant_order_id
string
required

Your order id (MIN 3; MAX 255).

description
string
required

Description of the payment (MIN 3; MAX 255).

country
string
required

ISO 3166-1 alpha-2 country code.

amount
object
required

Total of the payment. It must equal the sum of the two card amounts. amount.currency_conversion is not allowed.

workflow
enum<string>
required

DIRECT or REDIRECT with payment_method.payment_methods, or SDK_CHECKOUT with checkout.session and the composite payment_method.token.

Available options:
DIRECT,
REDIRECT,
SDK_CHECKOUT
payment_method
object
required
customer_payer
object
required

Required. The payer, shared by both cards. Same fields as in Create Payment.

merchant_reference
string

Your reference for the payment (MIN 3; MAX 255).

checkout
object

Required for SDK_CHECKOUT.

callback_url
string

Optional. Where a 3DS challenge or a redirect returns the customer.

additional_data
object

Optional, as in v1.

metadata
object[]

Response

Payment created. Read status and sub_status, then each card's transactions.

A payment funded by two cards.

id
string<uuid>
account_id
string<uuid>
description
string
country
string
status
string

Aggregated status of the payment. See Pay with two cards.

sub_status
string

Aggregated sub status, for example APPROVED, AUTHORIZED, PARTIALLY_CAPTURED, PARTIALLY_REFUNDED, REFUND_RETRY_IN_PROCESS or CANCEL_RETRY_IN_PROCESS.

merchant_order_id
string
merchant_reference
string
created_at
string<date-time>
updated_at
string<date-time>
split_payment_methods
boolean

true for a payment funded by two cards.

payment_methods_count
integer

Number of cards that fund the payment: 2.

sdk_action_required
boolean

true when the SDK must continue the payment, for example to run a 3DS challenge.

amount
object

Total of the payment.

checkout
object
payment_method
object
customer_payer
object

The payer, as sent in the request.

additional_data
object | null
callback_url
string
workflow
enum<string>
Available options:
DIRECT,
REDIRECT,
SDK_CHECKOUT
metadata
object[]