> ## Documentation Index
> Fetch the complete documentation index at: https://docs.readdy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrate with Toss Payments

> Accept one-time KRW payments with Korean local payment methods on your Readdy website

Toss Payments is a Korean payment service provider that helps businesses accept credit cards, bank transfers, virtual accounts, and local digital wallets. You can connect your Toss Payments merchant account to a Readdy project and ask AI to add a secure payment flow to your website.

Once connected, Readdy can generate a Toss Payments Payment Widget for one-time payments in Korean won (KRW), confirm completed payments securely, and update the corresponding order in your connected database.

<Frame>
  <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/overview.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=88cf274858dfb00d4e59dd750d1ec3d6" alt="Toss Payments integration announcement and payment widget" width="3344" height="1882" data-path="images/toss-payments/overview.png" />
</Frame>

## Before You Start

This guide will walk you through connecting Toss Payments to your Readdy project. Before you begin, make sure you have the following ready:

* An active Toss Payments merchant account.

* An approved electronic payment services application. You can apply through [**Apply for Electronic Payments**](https://onboarding.tosspayments.com/registration/business-registration-number) in Toss Payments. Your application must be approved before you can accept live payments.

* A Readdy project connected to [Readdy Backend](/features/backend) or [Supabase](/integrations/supabase).

Once these are ready, let's connect Toss Payments.

## Get Your Toss Payments Keys

<Steps>
  <Step title="Open the Toss Payments Developer Center">
    Go to the [Toss Payments Developer Center](https://developers.tosspayments.com/), log in to your merchant account, and open **"API Keys"**.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/developer-center-api-keys.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=67b651e549d078bf0123add24307ae08" alt="API Keys page in the Toss Payments Developer Center" width="1090" height="689" data-path="images/toss-payments/developer-center-api-keys.png" />
    </Frame>
  </Step>

  <Step title="Choose the Environment">
    Select the **"Test"** or **"Live"** environment at the top of the page.

    <Info>
      Test payments simulate authorization and do not charge the payment method, even when you enter real payment information.
    </Info>

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/test-live-environment-switcher.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=748428d13fd5929efe9601ae35d2e17a" alt="Test and live environment switcher in the Toss Payments Developer Center" width="1092" height="681" data-path="images/toss-payments/test-live-environment-switcher.png" />
    </Frame>
  </Step>

  <Step title="Copy the Payment Widget Keys">
    Find **Payment Widget integration keys** (`결제위젯 연동 키`), then copy the Client Key and Secret Key from the same key pair.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/payment-widget-integration-keys.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=b6c45c80e0154846cd5b2ff2c40865d2" alt="Payment Widget Client Key and Secret Key in the Toss Payments Developer Center" width="2364" height="1484" data-path="images/toss-payments/payment-widget-integration-keys.png" />
    </Frame>
  </Step>
</Steps>

<Info>
  You can view your Payment Widget integration keys only after applying for Toss Payments electronic payment services. Even test keys require an application. Before applying, you can use the following public test pair:

  `clientKey = 'test_gck_docs_Ovk5rk1EwkEbP0W43n07xlzm'`

  `secretKey = 'test_gsk_docs_OaPz8L5KdmQXkzRz3y47BMw6'`
</Info>

<Warning>
  Do not use **individual API integration keys** (`API 개별 연동 키`). Keys beginning with `test_ck_`, `test_sk_`, `live_ck_`, or `live_sk_` are not supported by Readdy's current Payment Widget integration.
</Warning>

Keys in different environments have different prefixes

|                   | Test key prefix | Live key prefix |
| ----------------- | --------------- | --------------- |
| Widget Client Key | `test_gck_`     | `live_gck_`     |
| Widget Secret Key | `test_gsk_`     | `live_gsk_`     |

<Note>
  The Client Key and Secret Key must:

  * Come from the same merchant ID.

  * Belong to the same Payment Widget key pair.

  * Both be test keys or both be live keys.
</Note>

You can use a matching test pair while building and testing your website. Test payments do not create a real charge. Use a matching live pair when your Toss Payments contract and website are ready to accept real payments.

For more information about the keys and Payment Widget, see the [official Toss Payments Payment Widget guide](https://docs.tosspayments.com/guides/v2/payment-widget/integration).

## Connect Toss Payments in Readdy

<Steps>
  <Step title="Open the Connects Panel">
    In the Readdy editor, click **"Connects"** at the top of the screen.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/connects-button.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=715a7edbcfd37480113eb30272b1521e" alt="Connects button at the top of the Readdy editor" width="1516" height="904" data-path="images/toss-payments/connects-button.png" />
    </Frame>
  </Step>

  <Step title="Select Toss Payments">
    Find **Toss Payments** in the Connects panel, then click **"Connect"**.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/connects-panel.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=3cad21fba2469a85532f9e4b19e74cb6" alt="Toss Payments integration in the Connects panel" width="1876" height="1896" data-path="images/toss-payments/connects-panel.png" />
    </Frame>

    <Info>
      If your project does not have a connected database, Readdy asks you to connect **Readdy Backend** or **Supabase** first. Toss Payments uses the connected backend to create orders, keep the Secret Key secure, and confirm payments.
    </Info>
  </Step>

  <Step title="Enter Your Integration Keys">
    Paste the matching **Widget Client Key** and **Widget Secret Key**, then click **"Connect"**.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/connection-key-fields.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=5db82d403e0c7336db194cd1fba1aad0" alt="Widget Client Key and Widget Secret Key fields in Readdy" width="2840" height="2116" data-path="images/toss-payments/connection-key-fields.png" />
    </Frame>
  </Step>

  <Step title="Confirm the Connection">
    Check that the panel displays **"Connected"** and masks both keys.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/connected-panel-redacted.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=aecfe386de3519820edd70086a1714d5" alt="Toss Payments connected in Readdy with masked keys" width="2840" height="2116" data-path="images/toss-payments/connected-panel-redacted.png" />
    </Frame>
  </Step>

  <Step title="Ask Readdy to Add the Payment Flow">
    Ask Readdy AI to add a Toss Payments checkout flow to the products, cart, or checkout button on your website.

    <Frame>
      <img src="https://mintcdn.com/readdy/li8h8lQSE4LiodJx/images/toss-payments/website-display.png?fit=max&auto=format&n=li8h8lQSE4LiodJx&q=85&s=d90cbe2e908a83d021e986925fffbd7c" alt="Example website with a Toss Payments checkout flow" width="2850" height="2006" data-path="images/toss-payments/website-display.png" />
    </Frame>
  </Step>
</Steps>

## Best Practices

* Tell Readdy AI which products, cart, or checkout button should use Toss Payments.

* Use positive whole-won prices. Toss Payments currently supports one-time KRW payments in Readdy.

* Review your Toss Payments contract and Payment Widget settings to confirm which payment methods customers can use.

* Test the complete flow through your website's share link or published URL before accepting live payments.

<Warning>
  Readdy acts only as a platform that provides the Toss Payments integration and does not participate in payment processing. You receive funds directly through your Toss Payments account; Readdy does not hold these funds. Before going live, complete an end-to-end test and verify payment amounts and order statuses. If the records differ, check Toss Payments before fulfilling or refunding the order.
</Warning>

## FAQ

<AccordionGroup>
  <Accordion title="Why can't I see Toss Payments in Connects?">
    Toss Payments is currently available to eligible accounts. Make sure you are signed in to the correct Readdy account. If the integration is still missing, [submit a support ticket](https://readdy.ai/feedback) to request access.
  </Accordion>

  <Accordion title="Why does Readdy reject my keys?">
    Make sure you copied **Payment Widget integration keys** (`결제위젯 연동 키`), not individual API integration keys. The Client Key must use a `test_gck_` or `live_gck_` prefix, the Secret Key must use the matching `test_gsk_` or `live_gsk_` prefix, and both keys must come from the same merchant ID.
  </Accordion>

  <Accordion title="Why do I need to connect a database first?">
    Readdy uses the connected backend to validate order amounts, create orders, protect your Secret Key, confirm payments with Toss Payments, and update the order only after payment succeeds.
  </Accordion>

  <Accordion title="Which payment methods will customers see?">
    Customers see the methods enabled in your Toss Payments contract and Payment Widget settings. If a payment method is missing, review your contract and [Widget configuration in Toss Payments](https://docs.tosspayments.com/guides/v2/payment-widget/admin).
  </Accordion>
</AccordionGroup>

## Need Help?

If this guide doesn't resolve your issue, [submit a support ticket](https://readdy.ai/feedback). We're here to help!
