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

# Create order link

> This operation generates a payment link for a pay-in order. The link directs users to a hosted payment page where they can complete their payment for the order. You can share the link directly with users or embed the payment page in your website or application using an iframe.

For more details, see [Payment Link](https://www.cobo.com/payments/en/guides/payment-link).


<RequestExample>
  ```python Python theme={null}
  import cobo_waas2
  from cobo_waas2.models.create_order_link_request import CreateOrderLinkRequest
  from cobo_waas2.models.link import Link
  from cobo_waas2.rest import ApiException
  from pprint import pprint

  # See configuration.py for a list of all supported configurations.
  configuration = cobo_waas2.Configuration(
      # Replace `<YOUR_PRIVATE_KEY>` with your private key
      api_private_key="<YOUR_PRIVATE_KEY>",
      # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
      host="https://api.dev.cobo.com/v2",
  )
  # Enter a context with an instance of the API client
  with cobo_waas2.ApiClient(configuration) as api_client:
      # Create an instance of the API class
      api_instance = cobo_waas2.PaymentApi(api_client)
      # Supports 3 currencies: TRON_USDT/SOL_USDC use custom amounts; others (like ETH_USDT) default to system exchange rates.
      create_order_link_request = cobo_waas2.CreateOrderLinkRequest(
          business_info=cobo_waas2.OrderLinkBusinessInfo(
              merchant_id="M1001", 
              merchant_order_code="M20240201001",
              psp_order_code="P20240201001", 
              pricing_amount="100.00",
              pricing_currency="USD",
              payable_currencies=["ETH_USDT", "SOL_USDC", "TRON_USDT"],
              payable_amounts=[
                  cobo_waas2.OrderLinkBusinessInfoPayableAmountsInner(
                      token_id="TRON_USDT",
                      amount="103.03"
                  ),
                  cobo_waas2.OrderLinkBusinessInfoPayableAmountsInner(
                      token_id="SOL_USDC",
                      amount="105.05"
                  )
              ],
              fee_amount="2.00"
          )
      )

      try:
          # Create order link
          api_response = api_instance.create_order_link(
              create_order_link_request=create_order_link_request
          )
          print("The response of PaymentApi->create_order_link:\n")
          pprint(api_response)
      except Exception as e:
          print("Exception when calling PaymentApi->create_order_link: %s\n" % e)

  ```

  ```java Java theme={null}
  // Import classes:
  import com.cobo.waas2.ApiClient;
  import com.cobo.waas2.ApiException;
  import com.cobo.waas2.Configuration;
  import com.cobo.waas2.Env;
  import com.cobo.waas2.api.PaymentApi;
  import com.cobo.waas2.model.*;

  public class Example {
    public static void main(String[] args) {
      ApiClient defaultClient = Configuration.getDefaultApiClient();
      // Select the development environment. To use the production environment, replace `Env.DEV` with
      // `Env.PROD
      defaultClient.setEnv(Env.DEV);

      // Replace `<YOUR_PRIVATE_KEY>` with your private key
      defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
      PaymentApi apiInstance = new PaymentApi();
      // Supports 3 currencies: TRON_USDT/SOL_USDC use custom amounts; others (like ETH_USDT) default to system exchange rates.
      CreateOrderLinkRequest createOrderLinkRequest =
          new CreateOrderLinkRequest()
              .businessInfo(
                  new OrderLinkBusinessInfo()
                      .merchantId("M1001")
                      .merchantOrderCode("M20240201001")
                      .pspOrderCode("P20240201001")
                      .pricingCurrency("USD")
                      .pricingAmount("100.00")
                      .feeAmount("2.00")
                      .payableCurrencies(Arrays.asList("ETH_USDT", "SOL_USDC", "TRON_USDT"))
                      .payableAmounts(Arrays.asList(
                          new OrderLinkBusinessInfoPayableAmountsInner()
                              .tokenId("TRON_USDT")
                              .amount("103.03"),
                          new OrderLinkBusinessInfoPayableAmountsInner()
                              .tokenId("SOL_USDT")
                              .amount("105.05")
                      ))
              );
      try {
        Link result = apiInstance.createOrderLink(createOrderLinkRequest);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling PaymentApi#createOrderLink");
        System.err.println("Status code: " + e.getCode());
        System.err.println("Reason: " + e.getResponseBody());
        System.err.println("Response headers: " + e.getResponseHeaders());
        e.printStackTrace();
      }
    }
  }

  ```

  ```go Go theme={null}
  package main

  import (
  	"context"
  	"fmt"
  	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
  	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
  	"os"
  )

  func main() {
    // Supports 3 currencies: TRON_USDT/SOL_USDC use custom amounts; others (like ETH_USDT) default to system exchange rates.
  	businessInfo := coboWaas2.NewOrderLinkBusinessInfo("M1001", "P20240201001", "2")
  	businessInfo.SetMerchantOrderCode("M20240201001")
  	businessInfo.SetPricingCurrency("USD")
  	businessInfo.SetPricingAmount("100.00")
  	businessInfo.SetPayableCurrencies([]string{"ETH_USDT", "SOL_USDC", "TRON_USDT"})
  	businessInfo.SetPayableAmounts([]coboWaas2.OrderLinkBusinessInfoPayableAmountsInner{
  		*coboWaas2.NewOrderLinkBusinessInfoPayableAmountsInner("TRON_USDT", "103.03"),
  		*coboWaas2.NewOrderLinkBusinessInfoPayableAmountsInner("SOL_USDT", "105.05"),
  	})
  	createOrderLinkRequest := coboWaas2.NewCreateOrderLinkRequest(*businessInfo)

  	configuration := coboWaas2.NewConfiguration()
  	// Initialize the API client
  	apiClient := coboWaas2.NewAPIClient(configuration)
  	ctx := context.Background()

  	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
  	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
  	// Replace `<YOUR_PRIVATE_KEY>` with your private key
  	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
  		Secret: "<YOUR_PRIVATE_KEY>",
  	})
  	resp, r, err := apiClient.PaymentAPI.CreateOrderLink(ctx).
  		CreateOrderLinkRequest(createOrderLinkRequest).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(os.Stderr, "Error when calling `PaymentAPI.CreateOrderLink``: %v\n", err)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `CreateOrderLink`: Link
  	fmt.Fprintf(os.Stdout, "Response from `PaymentAPI.CreateOrderLink`: %v\n", resp)
  }

  ```

  ```javascript JavaScript theme={null}
  const CoboWaas2 = require("@cobo/cobo-waas2");
  // Initialize the API client
  const apiClient = CoboWaas2.ApiClient.instance;
  // Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
  apiClient.setEnv(CoboWaas2.Env.DEV);
  // Replace `<YOUR_PRIVATE_KEY>` with your private key
  apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
  // Call the API
  const apiInstance = new CoboWaas2.PaymentApi();
  // Supports 3 currencies: TRON_USDT/SOL_USDC use custom amounts; others (like ETH_USDT) default to system exchange rates.
  const opts = {
    CreateOrderLinkRequest: CoboWaas2.CreateOrderLinkRequest.constructFromObject({
        business_info: {
          merchant_id: "M1001",
          merchant_order_code: "M20240201001",
          psp_order_code: "P20240201001",
          pricing_amount: "100.00",
          pricing_currency: "USD",
          payable_currencies: [
            "ETH_USDT",
            "SOL_USDC",
            "TRON_USDT"
          ],
          payable_amounts: [
            {
              "amount": "103.03",
              "token_id": "TRON_USDT"
            },
            {
              "amount": "105.05",
              "token_id": "SOL_USDT"
            }
          ],
          fee_amount: "2",
          expired_in: 1800
        },
    }),
  };
  apiInstance.createOrderLink(opts).then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

  ```
</RequestExample>


## OpenAPI

````yaml post /payments/links/orders
openapi: 3.0.3
info:
  title: Cobo Wallet as a Service 2.0
  description: >
    The Cobo Wallet-as-a-Service (WaaS) 2.0 API is the latest version of Cobo's
    WaaS API offering. It enables you to access Cobo's full suite of crypto
    wallet technologies with powerful and flexible access controls. By
    encapsulating complex security protocols and streamlining blockchain
    interactions, this API allows you to concentrate on your core business
    activities without worrying about the safety of your assets. The WaaS 2.0
    API presents the following key features:


    - A unified API for Cobo's [all four wallet
    types](https://manuals.cobo.com/en/portal/introduction#an-all-in-one-wallet-platform)

    - Support for 80+ chains and 3000+ tokens

    - A comprehensive selection of webhook events

    - Flexible usage models for MPC Wallets, including [Organization-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ocw/introduction)
    and [User-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ucw/introduction)

    - Programmatic control of smart contract wallets such as Safe{Wallet} with
    fine-grained access controls

    - Seamlessly transfer funds across multiple exchanges, including Binance,
    OKX, Bybit, Deribit, and more


    For more information about the WaaS 2.0 API, see [Introduction to WaaS
    2.0](https://www.cobo.com/developers/v2/guides/overview/introduction).
  termsOfService: https://cobo.com/waas/tos/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Cobo WaaS
    url: https://www.cobo.com/waas
    email: help@cobo.com
  version: 1.0.0
servers:
  - url: https://api.dev.cobo.com/v2
    description: Development environment
  - url: https://api.cobo.com/v2
    description: Production environment
security:
  - CoboAuth: []
tags:
  - name: Organizations
    description: Operations related to Organizations.
  - name: Wallets
    description: Operations related to all wallets.
  - name: Wallets - MPC Wallets
    description: Operations related to mpc wallet.
  - name: Wallets - Exchange Wallet
    description: Operations related to exchange wallet.
  - name: Wallets - Smart Contract Wallets
    description: Operations related to smart contract wallet.
  - name: Transactions
    description: Operations related to all transactions.
  - name: Developers - Webhooks
    description: Operations related to webhooks.
  - name: Stakings
    description: Operations related to staking.
  - name: OAuth
    description: Operations related to OAuth.
  - name: Developers
    description: Operations related to developers.
  - name: AddressBooks
    description: Operations related to address books.
  - name: TravelRule
    description: Operations related to travel rule.
  - name: GraphQL
    description: Operations related to executing GraphQL queries and mutations.
  - name: PrimeBroker
    description: Operations related to prime broker.
  - name: AppWorkflows
    description: Operations related to app workflow.
  - name: FeeStation
    description: Operations related to fee station.
  - name: Payment
    description: Operations related to payment.
  - name: Batch Payouts
    description: Operations related to batch payouts.
  - name: Tokenization
    description: Operations related to tokenization.
  - name: AutoSweep
    description: Operations related to auto sweep.
  - name: Compliance
    description: Operations related to compliance.
paths:
  /payments/links/orders:
    post:
      tags:
        - Payment
      summary: Create order link
      description: >
        This operation generates a payment link for a pay-in order. The link
        directs users to a hosted payment page where they can complete their
        payment for the order. You can share the link directly with users or
        embed the payment page in your website or application using an iframe.


        For more details, see [Payment
        Link](https://www.cobo.com/payments/en/guides/payment-link).
      operationId: create_order_link
      requestBody:
        $ref: '#/components/requestBodies/createPaymentOrderLinkRequest'
      responses:
        '201':
          $ref: '#/components/responses/createPaymentLinkResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
components:
  requestBodies:
    createPaymentOrderLinkRequest:
      description: The request body to create a payment link for a pay-in order.
      content:
        application/json:
          schema:
            type: object
            required:
              - business_info
            properties:
              business_info:
                $ref: '#/components/schemas/OrderLinkBusinessInfo'
              display_info:
                $ref: '#/components/schemas/LinkDisplayInfo'
  responses:
    createPaymentLinkResponse:
      description: Link created successfully.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Link'
    badRequestError:
      description: >-
        Bad request. Your request contains malformed syntax or invalid
        parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    internalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    OrderLinkBusinessInfo:
      type: object
      required:
        - fee_amount
        - merchant_id
        - psp_order_code
        - pricing_currency
        - pricing_amount
        - payable_currencies
      properties:
        merchant_id:
          type: string
          description: The merchant ID.
          example: '1001'
        merchant_order_code:
          type: string
          description: >-
            A unique reference code assigned by the merchant to identify this
            order in their system. The code should have a maximum length of 128
            characters.
          example: M20240201001
        psp_order_code:
          type: string
          description: >
            A unique reference code assigned by you as a developer to identify
            this order in your system. This code must be unique across all
            orders in your system. The code should have a maximum length of 128
            characters.
          example: P20240201001
        pricing_currency:
          type: string
          description: >
            The pricing currency that denominates `pricing_amount` and
            `fee_amount`. If left empty, both values will be denominated in
            `payable_currency`. 

            Currently, For a complete list of supported currencies, see
            [Supported chains and
            tokens](https://www.cobo.com//payments/en/guides/supported-chains-and-tokens#pricing-currency).
          example: USD
        pricing_amount:
          type: string
          description: >
            The base amount of the order, excluding the developer fee (specified
            in `fee_amount`). Values must be greater than `0` and contain two
            decimal places.
          example: '100.00'
        fee_amount:
          type: string
          description: >
            The developer fee for the order. It is added to the base amount
            (`pricing_amount`) to determine the final charge. For example, if
            `pricing_amount` is "100.00" and `fee_amount` is "2.00", the payer
            will be charged "102.00" in total, with "100.00" being settled to
            the merchant account and "2.00" settled to the developer account.
            Values must be greater than 0 and contain two decimal places.
          example: '2.00'
        payable_currencies:
          type: array
          description: |
            The IDs of the cryptocurrencies used for payment. Supported values:
             - USDC: `ETH_USDC`, `ARBITRUM_USDC`, `SOL_USDC`, `BASE_USDC`, `MATIC_USDC`, `BSC_USDC`
             - USDT: `TRON_USDT`, `ETH_USDT`, `ARBITRUM_USDT`, `SOL_USDT`, `BASE_USDT`, `MATIC_USDT`, `BSC_USDT`
          items:
            type: string
          example:
            - ETH_USDT
            - SOL_USDC
            - TRON_USDT
        payable_amounts:
          type: array
          description: >
            The total amounts the payer needs to pay for each currency in
            `payable_currencies`. If this field is left blank, the system will
            automatically calculate the amounts at order creation using the
            following formula: (`pricing_amount` + `fee_amount`) / current
            exchange rate.


            Values must be greater than 0 and contain two decimal places.
          items:
            type: object
            properties:
              token_id:
                type: string
                description: >
                  The ID of the cryptocurrency used for payment. Supported
                  values:

                  - USDC: `ETH_USDC`, `ARBITRUM_USDC`, `SOL_USDC`, `BASE_USDC`,
                  `MATIC_USDC`, `BSC_USDC`

                  - USDT: `TRON_USDT`, `ETH_USDT`, `ARBITRUM_USDT`, `SOL_USDT`,
                  `BASE_USDT`, `MATIC_USDT`, `BSC_USDT`
                example: ETH_USDT
              amount:
                type: string
                description: The payable amount in the specified currency.
                example: '103.03'
            required:
              - token_id
              - amount
          example:
            - token_id: ETH_USDT
              amount: '103.03'
            - token_id: SOL_USDC
              amount: '105.05'
        expired_in:
          type: integer
          description: >
            The number of seconds until the pay-in order expires, counted from
            when the request is sent. For example, if set to `1800`, the order
            will expire in 30 minutes. Must be greater than zero and cannot
            exceed 3 hours (10800 seconds). After expiration:


            - The order status becomes final and cannot be changed

            - The `received_token_amount` field will no longer be updated

            - Funds received after expiration will be categorized as late
            payments and can only be settled from the developer balance.

            - A late payment will trigger a `transactionLate` webhook event.
          default: 1800
          example: 1800
        amount_tolerance:
          type: string
          description: >
            The allowed amount deviation, with precision up to 1 decimal place.


            For example, if `payable_amount` is `100.00` and `amount_tolerance`
            is `0.50`:

            - Payer pays 99.55 → Success (difference of 0.45 ≤ 0.5)

            - Payer pays 99.40 → Underpaid (difference of 0.60 > 0.5)
          example: '0.5'
        currency:
          type: string
          description: >-
            This field has been deprecated. Please use `pricing_currency`
            instead.
        order_amount:
          type: string
          description: This field has been deprecated. Please use `pricing_amount` instead.
        token_ids:
          type: array
          description: >
            This field has been deprecated. Please use `payable_currencies`
            instead.
          items:
            type: string
        custom_exchange_rates:
          type: array
          description: |
            This field has been deprecated.
          items:
            type: object
            properties:
              token_id:
                type: string
              exchange_rate:
                type: string
            required:
              - token_id
              - exchange_rate
        use_dedicated_address:
          type: boolean
          description: This field has been deprecated.
          example: false
    LinkDisplayInfo:
      type: object
      properties:
        developer_name:
          type: string
          description: >
            The brand name to display to end users on the page. This helps users
            identify who is providing the payment service.
          example: Acme Payment Solutions
          maxLength: 128
        logo:
          type: string
          description: |
            The URL of the logo image to display to end users on the page.
          example: https://example.com/logo.png
          format: uri
        return_url:
          type: string
          description: >
            The product page URL where end users will be redirected after the
            payment process ends. 

            This URL is embedded in a "Return to Merchant" button displayed on
            the following result pages:

            - Payment success

            - Payment timeout

            - Payment rejected

            - Payment error
          example: https://example.com/return
          format: uri
    Link:
      type: object
      required:
        - url
        - token
      properties:
        url:
          type: string
          format: uri
          description: >
            The base URL of the page. This URL should be combined with the
            `token` parameter to form the complete link.
          example: https://payment-link.dev.cobo.com/payment
        token:
          type: string
          description: >
            The token appended to the URL as a query parameter. This token
            identifies and authenticates a specific payment or refund session.


            The complete link should be constructed as: `[url]?token=[token]`
          example: 01EJ5QW8KtSBesqnRZsmadPgihYf754OnVnNhimKKBi6QQO5PNyr9EXPyFRJGGOF
    ErrorResponse:
      type: object
      description: The response of a failed request.
      required:
        - error_code
        - error_message
        - error_id
      properties:
        error_code:
          type: integer
          description: >-
            The error code. Refer to [Error codes and status
            codes](https://www.cobo.com/developers/v2/api-references/error-codes)
            for more details.
        error_message:
          type: string
          description: The error description.
        error_id:
          type: string
          description: >-
            The error log ID. You can provide the error ID when submitting a
            ticket to help Cobo to locate the issue.
          example: 0b6ddf19083c4bd1a9ca01bec44b24dd
  securitySchemes:
    CoboAuth:
      type: apiKey
      in: header
      name: BIZ-API-KEY
      description: >
        The API key. For more details, refer to [API
        key](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-key).


        In the API playground, enter your [API
        secret](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-secret),
        and your API key will be accordingly calculated.

````