# Create a Multi Card Payment Session (/docs/guides/multi-card/multi-card-payment-sessions/create-a-multi-card-payment-session) 

# 🛠️ How to Create a Multi Card Payment Session [#️-how-to-create-a-multi-card-payment-session]

You can create a multi card payment by sending a `POST` request to `https://api.sandbox.handsin.com/v1/multi-card-payments`

## 🧾 Create Multi Card Request Examples [#-create-multi-card-request-examples]

<Tabs items="[&#x22;curl&#x22;, &#x22;Node.js (fetch)&#x22;, &#x22;Python (requests)&#x22;, &#x22;PowerShell&#x22;]">
  <Tab value="curl">
    ```bash
    curl --request POST \
      --url https://api.sandbox.handsin.com/v1/multi-card-payments \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --header "x-api-key: <your-api-key>" \
      --data '{
        "idempotencyKey": "example_unique_idempotency_key",
        "amountMoney": {
          "amount": 1000,
          "currency": "GBP"
        },
        "customer": {
          "firstName": "Example",
          "lastName": "Customer",
          "email": "example@handsin.com",
          "phoneNumber": "+447232323",
          "language": "en"
        }
      }'
    ```
  </Tab>

  <Tab value="Node.js (fetch)">
    ```javascript
    const url = "https://api.sandbox.handsin.com/v1/multi-card-payments";

    const payload = {
      idempotencyKey: "example_unique_idempotency_key",
      amountMoney: {
        amount: 1000,
        currency: "GBP",
      },
      customer: {
        firstName: "Example",
        lastName: "Customer",
        email: "example@handsin.com",
        phoneNumber: "+447232323",
        language: "en",
      },
    };

    try {
      const response = await fetch(url, {
        method: "POST",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
          "x-api-key": "<your-api-key>",
        },
        body: JSON.stringify(payload),
      });

      if (!response.ok) {
        throw new Error(`Response status: ${response.status}`);
      }

      const data = await response.json();
      console.log(data);
    } catch (error) {
      console.error("Request failed:", error.message);
    }
    ```
  </Tab>

  <Tab value="Python (requests)">
    ```python
    import requests

    url = "https://api.sandbox.handsin.com/v1/multi-card-payments"
    headers = {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "x-api-key": "<your-api-key>"
    }
    payload = {
        "idempotencyKey": "example_unique_idempotency_key",
        "amountMoney": {
            "amount": 1000,
            "currency": "GBP"
        },
        "customer": {
            "firstName": "Example",
            "lastName": "Customer",
            "email": "example@handsin.com",
            "phoneNumber": "+447232323",
            "language": "en"
        }
    }

    try:
        response = requests.post(url, headers=headers, json=payload)
        response.raise_for_status()
        print(response.json())
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
    ```
  </Tab>

  <Tab value="PowerShell">
    ```powershell
    $headers = @{
      "Accept" = "application/json"
      "Content-Type" = "application/json"
      "x-api-key" = "<your-api-key>"
    }

    $body = @{
      idempotencyKey = "example_unique_idempotency_key"
      amountMoney = @{
        amount = 1000
        currency = "GBP"
      }
      customer = @{
        firstName = "Example"
        lastName = "Customer"
        email = "example@handsin.com"
        phoneNumber = "+447232323"
        language = "en"
      }
    } | ConvertTo-Json -Depth 3

    try {
      $response = Invoke-RestMethod -Uri "https://api.sandbox.handsin.com/v1/multi-card-payments" \
        -Method POST -Headers $headers -Body $body
      $response
    } catch {
      Write-Host "Request failed: $($_.Exception.Message)"
    }
    ```
  </Tab>
</Tabs>

> 🔐 &#x2A;*Authentication Required:**
>
> Be sure to include your sandbox Merchant API key in the request headers using the `x-api-key` field. Otherwise, you will most likely encounter a 401 error.

## ✅ Example JSON Response [#-example-json-response]

```json
{
  "id": "example-multi-card-id-123",
  "amountMoney": {
    "amount": 1000,
    "currency": "GBP"
  },
  "totalMoney": {
    "amount": 1000,
    "currency": "GBP"
  },
  "status": "PENDING",
  "autocomplete": true,
  "enablePartialPayment": false,
  "url": "https://checkout.sandbox.handsin.com/r/example-multi-card-redirect-id",
  "customerId": "example-customer-id",
  "merchantId": "your-merchant-id",
  "createdAt": "2025-04-23T10:27:14.000Z",
  "updatedAt": "2025-04-23T10:27:14.000Z"
}
```

## 🧠 Response Field Breakdown [#-response-field-breakdown]

| Field                  | Description                                                                                                  |
| ---------------------- | ------------------------------------------------------------------------------------------------------------ |
| `id`                   | The unique identifier for this multi card payment session.                                                   |
| `url`                  | Hands In-hosted checkout link to redirect your customer for payment.                                         |
| `status`               | The current state of the payment session (e.g., `PENDING`, `APPROVED`, `COMPLETED`, `EXPIRED`, `CANCELLED`). |
| `autocomplete`         | Set to `false` if you want to **manually complete the session** via the API or dashboard.                    |
| `enablePartialPayment` | Set to `true` to **automatically capture payments** as customers authorize a transaction.                    |

> 📗 For detailed parameter descriptions and usage, visit our [Multi Card API reference documentation](/docs/API/v1/createMultiCardPayment) .
