Hosted

Flow

Usually, payment flow looks like this:

  1. Customer wants to pay for some service or product on merchants side
  2. Merchant creates order for specific amount of money
  3. Api payment endpoint returns url that should be used to redirect customer
  4. Guides the customer through process of payment completion
  5. (Optional) After all necessary steps are completed, redirects customer to returnUrl
  6. (Optional) We sends webhook to the specified webhookUrl
  7. Customer wants to pay for some service or product on merchants side

 

Looking for something?

Feel free to contact us if you need some other payment method.

Methods

Currently, we support payment method:

  • Card
  • Сrypto
  • Wallets
  • Apple/Google Pay for example request contact us
  • APM for example request contact us
  • m-commerce for example request contact us
Card
Crypto
Wallets

Card

Request

POST /api/v3/order/payment-form/create
{
  "merchantOrderId": "string",
  "invoice": {
    "amount": "10.23",
    "currency": "eur"
  },
  "walletCurrency": "usdc", (or any other crypto currency)
  "client": {
    "id": "string",
    "ip": "192.168.0.1",
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "380934441122",
    "dateOfBirth": "1991-01-02",
    "billingAddress": {
      "addressLine1": "string",
      "addressLine2": "string",
      "city": "string",
      "state": "string",
      "zip": "string",
      "country": "ABW"
    },
    "taxpayer": {
      "number": "string",
      "documentType": "string"
    }
  },
  "description": "string",
  "webhookUrl": "https://merchant.com/webhook",
  "returnUrl": "https://merchant.com/return",
  "attributes": {
    "paymentFormLocale": "en"
  },
   "payoutCryptoRequisites": {
 "type": "crypto",
 "address": "string",
 "tagOrMemo": "string",
 "blockchainNetwork": "erc20"
    },
}

Request full field list

POST /api/v3/order/payment-form/create
{
  # required
  # string
  # maxLength: 191
  # minLength: 1
  # pattern: [a-zA-Z0-9-_+/=]+
  # order id on merchant side
  "merchantOrderId": "c4q=HhP5jpEDs725zkQ277XM",
  # required
  "invoice": {
    # Numeric-string.
    # Required               
    "amount": "10.23",
    # Three-letter ISO currency code, in lowercase. 
    # Required
    "currency": "eur"
  },
  # Client data section
  # nullable: true
  "client": {
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "id": "string",

    # string
    # nullable: true    
    "ip": "192.168.0.1",

    # string
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "name": "Michael Schumacher",

    # maxLength: 100
    # minLength: 1
    # example: [email protected]
    # nullable: true
    "email": "[email protected]",

    # string
    # maxLength: 15
    # minLength: 8
    # example: 4932333243895
    # nullable: true
    "phone": "4932333243895",

    # string
    # ISO 8601 (YYYY-MM-DD)
    # example: 1991-01-02
    # nullable: true
    "dateOfBirth": "1991-01-02",

    # nullable: true
    "billingAddress": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine1": "string",

      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine2": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "city": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "state": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "zip": "string",

      # string
      # nullable: true
      # ISO 3166 Alpha-3 code
      "country": "DEU"
    },

    # nullable: true
    "taxpayer": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true 
      "number": "string"
    }
  },

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "authorizationCurrency": "eur",

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "walletCurrency": "eur",

  # maxLength: 2048
  # minLength: 1
  # nullable: true
  "description": "string",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "webhookUrl": "https://merchant.com/webhook",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "returnUrl": "https://merchant.com/return",
  
  # nullable: true
  "attributes": {
    # string
    # example: en
    # nullable: true
    "paymentFormLocale": "en",

    # string
    # example: erc20
    # nullable: true
    "blockchainNetwork": "erc20",

    # string
    # nullable: true
    "routingKey": "string"
  }
}

RESPONSE

  1. Order was created successfully and actions should be performed by the customer
  2. Order was rejected by third party

Order was created successfully

{
  "data": {
    "id": "33bf4dd6-7ba7-40aa-9b2d-14b96db68dde",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2024-07-15T14:45:22+00:00",
    "auth": {
      "type": "redirect",
      "redirectUrl": "https://example.com/fp/check?orderId=33bf4dd6-7ba7-40aa-9b2d-14b96db68dde&next=..."
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Order was rejected by third party

{
  "data": {
    "id": "33bf4dd6-7ba7-40aa-9b2d-14b96db68dde",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2023-10-18T12:53:32+00:00",
    "auth": {
      # There is no actions needed to be performed by the customer
      "type": "none"
    },

    # Status of order
    "status": "rejected",

    # Reason of failure
    "rejectReason": "REJECTED_BY_THIRD_PARTY"
  },
  "error": null
}

Crypto

IMPORTANT

Please note that API keys are only displayed once. If you haven’t saved them, repeat step 4 to generate new keys.

Request BTC

POST /api/v3/order/payment-form/create
{
  #... 
  "invoice": {
    "amount": "0.05",
    "currency": "btc"
  }
}

Response

Order was created successfully
{
  "data": {
    "id": "ea089a8e-65d8-4813-985b-368d8a430482",
    "merchantOrderId": "payin_form_1721067117",
    "type": "payin",
    "createdAt": "2024-07-15T18:11:58+00:00",
    "auth": {
      "type": "crypto",
      "redirectUrl": "https://example.com/fp/check?orderId=ea089a8e-65d8-4813-985b-368d8a430482&nextPage=/challenge/0adc6247-6fec-440c-80c5-b9a93c1c8c2b",
      "address": "0xUXBbmgUbC4NUDyfXfVyhN3Rr5rd8qbKQGf5jy5pR",
      "tagOrMemo": null,
      "blockchainNetwork": "trc20",
      "expiresAt": "2024-07-15T18:41:58+00:00"
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Auth

Depending on the selected payment method, there are different ways in which customers can make a payment. The provided object specifies the required action for customers to complete their payment.

ATTENTION

Please note that the payment process may not always be consistent for the same payment method.
Therefore, you should be prepared to support all these variations.
Whenever possible, we provide you with all the data necessary for you to process the payment on your end. However, there may be situations where we have to resort to the redirect type and let the customer handle the payment themselves

Request USDT

In some cases, blockchain network is important.

You can specify your requirement as shown below:

POST /api/v3/order/payment-form/create
{
  # A unique id on the merchant side. Required
  "merchantOrderId": "1697633611",

  "invoice": {
    # The quantity of currency to be paid. Numeric-string. Required
    "amount": "100.54",

    # Three-letter crypto currency code, in lowercase. Required
    "currency": "usdt"
  },
  # Endpoint that will be used to return client on your site. Optional
  "returnUrl": "https://example.com/return-url/1697633610",

  # Endpoint that is expected to receive webhook. Optional
  "webhookUrl": "https://example.com/webhook-url/1697633610",

  "attributes": {
    # The acceptable specifications for the type of blockchain network the address should belong to include the following possible values: 
    #   "erc20", "trc20", "bep20" or "bep2"         
    "blockchainNetwork": "trc20"
  }
}

Response

Order was created successfully
{
  "data": {
    "id": "ea089a8e-65d8-4813-985b-368d8a430482",
    "merchantOrderId": "payin_form_1721067117",
    "type": "payin",
    "createdAt": "2024-07-15T18:11:58+00:00",
    "auth": {
      "type": "crypto",
      "redirectUrl": "https://example.com/fp/check?orderId=ea089a8e-65d8-4813-985b-368d8a430482&nextPage=/challenge/0adc6247-6fec-440c-80c5-b9a93c1c8c2b",
      "address": "0xUXBbmgUbC4NUDyfXfVyhN3Rr5rd8qbKQGf5jy5pR",
      "tagOrMemo": null,
      "blockchainNetwork": "trc20",
      "expiresAt": "2024-07-15T18:41:58+00:00"
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Auth

Depending on the selected payment method, there are different ways in which customers can make a payment. The provided object specifies the required action for customers to complete their payment.

ATTENTION

Please note that the payment process may not always be consistent for the same payment method.
Therefore, you should be prepared to support all these variations.
Whenever possible, we provide you with all the data necessary for you to process the payment on your end. However, there may be situations where we have to resort to the redirect type and let the customer handle the payment themselves

Request full field list

POST /api/v3/order/payment-form/create
{
  # required
  # string
  # maxLength: 191
  # minLength: 1
  # pattern: [a-zA-Z0-9-_+/=]+
  # order id on merchant side
  "merchantOrderId": "c4q=HhP5jpEDs725zkQ277XM",
  # required
  "invoice": {
    # Numeric-string.
    # Required               
    "amount": "10.23",
    # Three-letter ISO currency code, in lowercase. 
    # Required
    "currency": "eur"
  },
  # Client data section
  # nullable: true
  "client": {
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "id": "string",

    # string
    # nullable: true    
    "ip": "192.168.0.1",

    # string
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "name": "Michael Schumacher",

    # maxLength: 100
    # minLength: 1
    # example: [email protected]
    # nullable: true
    "email": "[email protected]",

    # string
    # maxLength: 15
    # minLength: 8
    # example: 4932333243895
    # nullable: true
    "phone": "4932333243895",

    # string
    # ISO 8601 (YYYY-MM-DD)
    # example: 1991-01-02
    # nullable: true
    "dateOfBirth": "1991-01-02",

    # nullable: true
    "billingAddress": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine1": "string",

      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine2": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "city": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "state": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "zip": "string",

      # string
      # nullable: true
      # ISO 3166 Alpha-3 code
      "country": "DEU"
    },

    # nullable: true
    "taxpayer": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true 
      "number": "string"
    }
  },

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "authorizationCurrency": "eur",

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "walletCurrency": "eur",

  # maxLength: 2048
  # minLength: 1
  # nullable: true
  "description": "string",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "webhookUrl": "https://merchant.com/webhook",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "returnUrl": "https://merchant.com/return",
  
  # nullable: true
  "attributes": {
    # string
    # example: en
    # nullable: true
    "paymentFormLocale": "en",

    # string
    # example: erc20
    # nullable: true
    "blockchainNetwork": "erc20",

    # string
    # nullable: true
    "routingKey": "string"
  }
}

Response

Order was created successfully
{
  "data": {
    "id": "ea089a8e-65d8-4813-985b-368d8a430482",
    "merchantOrderId": "payin_form_1721067117",
    "type": "payin",
    "createdAt": "2024-07-15T18:11:58+00:00",
    "auth": {
      "type": "crypto",
      "redirectUrl": "https://example.com/fp/check?orderId=ea089a8e-65d8-4813-985b-368d8a430482&nextPage=/challenge/0adc6247-6fec-440c-80c5-b9a93c1c8c2b",
      "address": "0xUXBbmgUbC4NUDyfXfVyhN3Rr5rd8qbKQGf5jy5pR",
      "tagOrMemo": null,
      "blockchainNetwork": "trc20",
      "expiresAt": "2024-07-15T18:41:58+00:00"
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Wallets

Request

POST /api/v3/order/payment-form/create
{
  #... 
  "invoice": {
    "amount": "100.54",
    "currency": "eur"
  },
  "client": {
    # Skrill, Neteller or "Paysafecard" account email. Required
    "email": "[email protected]",

    "billingAddress": {
      "country": "DEU"
    }
  },
  "attributes": {
    # Required
    "routingKey": "Skrill" # or "Neteller", "Paysafecard"
  }
}

Response

{
  "data": {
    "id": "33bf4dd6-7ba7-40aa-9b2d-14b96db68dde",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2024-07-15T14:45:22+00:00",
    "auth": {
      "type": "redirect",
      "redirectUrl": "https://example.com/fp/check?orderId=33bf4dd6-7ba7-40aa-9b2d-14b96db68dde&nextPage=/challenge/869885d4-d162-4a8f-9bc7-418207e848e7"
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Auth

Depending on the selected payment method, there are different ways in which customers can make a payment. The provided object specifies the required action for customers to complete their payment.

ATTENTION

Please note that the payment process may not always be consistent for the same payment method.
Therefore, you should be prepared to support all these variations.
Whenever possible, we provide you with all the data necessary for you to process the payment on your end. However, there may be situations where we have to resort to the redirect type and let the customer handle the payment themselves

Request full field list

POST /api/v3/order/payment-form/create
{
  # required
  # string
  # maxLength: 191
  # minLength: 1
  # pattern: [a-zA-Z0-9-_+/=]+
  # order id on merchant side
  "merchantOrderId": "c4q=HhP5jpEDs725zkQ277XM",
  # required
  "invoice": {
    # Numeric-string.
    # Required               
    "amount": "10.23",
    # Three-letter ISO currency code, in lowercase. 
    # Required
    "currency": "eur"
  },
  # Client data section
  # nullable: true
  "client": {
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "id": "string",

    # string
    # nullable: true    
    "ip": "192.168.0.1",

    # string
    # maxLength: 255
    # minLength: 1
    # nullable: true
    "name": "Michael Schumacher",

    # maxLength: 100
    # minLength: 1
    # example: [email protected]
    # nullable: true
    "email": "[email protected]",

    # string
    # maxLength: 15
    # minLength: 8
    # example: 4932333243895
    # nullable: true
    "phone": "4932333243895",

    # string
    # ISO 8601 (YYYY-MM-DD)
    # example: 1991-01-02
    # nullable: true
    "dateOfBirth": "1991-01-02",

    # nullable: true
    "billingAddress": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine1": "string",

      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true
      "addressLine2": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "city": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "state": "string",

      # string
      # maxLength: 50
      # minLength: 1
      # nullable: true
      "zip": "string",

      # string
      # nullable: true
      # ISO 3166 Alpha-3 code
      "country": "DEU"
    },

    # nullable: true
    "taxpayer": {
      # string
      # maxLength: 200
      # minLength: 1
      # nullable: true 
      "number": "string"
    }
  },

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "authorizationCurrency": "eur",

  # Three-letter ISO currency code, in lowercase.
  # default value is value from invoice.currency
  # string
  # nullable: true
  "walletCurrency": "eur",

  # maxLength: 2048
  # minLength: 1
  # nullable: true
  "description": "string",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "webhookUrl": "https://merchant.com/webhook",

  # maxLength: 255
  # example: https://merchant.com/webhook
  # nullable: true
  "returnUrl": "https://merchant.com/return",
  
  # nullable: true
  "attributes": {
    # string
    # example: en
    # nullable: true
    "paymentFormLocale": "en",

    # string
    # example: erc20
    # nullable: true
    "blockchainNetwork": "erc20",

    # string
    # nullable: true
    "routingKey": "string"
  }
}

Response

{
  "data": {
    "id": "33bf4dd6-7ba7-40aa-9b2d-14b96db68dde",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2024-07-15T14:45:22+00:00",
    "auth": {
      "type": "redirect",
      "redirectUrl": "https://example.com/fp/check?orderId=33bf4dd6-7ba7-40aa-9b2d-14b96db68dde&nextPage=/challenge/869885d4-d162-4a8f-9bc7-418207e848e7"
    },
    "status": "processing",
    "rejectReason": null
  },
  "error": null
}

Auth

Depending on the selected payment method, there are different ways in which customers can make a payment. The provided object specifies the required action for customers to complete their payment.

ATTENTION

Please note that the payment process may not always be consistent for the same payment method.
Therefore, you should be prepared to support all these variations.
Whenever possible, we provide you with all the data necessary for you to process the payment on your end. However, there may be situations where we have to resort to the redirect type and let the customer handle the payment themselves

Error list

 

Code Description
INVALID_DATA Invalid request data. Check json syntax
VALIDATION Validation error. See error.validationErrors for details
METHOD_NOT_FOUND Endpoint not found
INVALID_HTTP_METHOD Only POST method allowed
AUTHENTICATION_FAILED Check your api token
ORDER_ALREADY_EXISTS Order with same merchantOrderId already exists
ORDER_NOT_FOUND Specified order was not found
REJECTED_DUE_TO_TECHNICAL_ISSUE Rejected due to technical issue
REQUEST_FROM_UNTRUSTED_SOURCE Request from untrusted source (ip not allowed)
PAYIN_DISABLED Payment disabled. Contact us to enable
PAYOUT_DISABLED Withdrawal disabled. Contact support to enable
WALLET_NOT_FOUND Wallet not found. Contact support to enable wallet
WALLET_INACTIVE Wallet inactive. Contact support to enable wallet
ROUTING_NOT_CONFIGURED Routing not configured. Please contact us for details
POINT_NOT_FOUND There is no way to process transaction. If issue is persistent please contact us for additional details
AMOUNT_GREATER_THAN_ALLOWED Operation amount greater than allowed
AMOUNT_LESS_THAN_ALLOWED Operation amount less than allowed
NOT_ENOUGH_BALANCE Operation amount greater than available balance
OPERATION_NOT_SUPPORTED Operation not supported
REFERER_REQUEST_DOES_NOT_MATCH_ALLOWED_SOURCES Referer from request does not match user hosts. Please contact us if you have any questions.
UNKNOWN Unknown error

Order status

Refer to the Status & Webhook section for generic guidance.

POST /api/v3/order/get-status
{
  "merchantOrderId": "1697633610"
}

Processing

The processing order status indicates that the order is awaiting its final status.

This status is not final and can be changed.

RESPONSE
{
  "data": {
    "createdAt": "2023-10-18T12:53:32+00:00",

    # Status of order
    "status": "processing",
    "subStatus": "awaiting_confirmation",
    "merchantSourceWallet": null,

    "id": "2eab2f9e-8374-4ff6-bfeb-240b9cee3dbe",

    # Status of transaction
    "status": "processing",

    # Amount of money that will be charged from customer,
    # valid for any currency: EUR, USD, etc.
    "authorized": {
      "amount": "100.54",
      "currency": "eur"
    },

    # Amount of money that will be received
    # by merchant after order completion, valid
    # for any currency: EUR, USD, etc.
    "merchantWallet": {
      "amount": "100.54",
      "currency": "eur"
    },

    "counterpartyInfo": null,
    "paymentInfo": null,
    "createdAt": "2023-10-18T12:53:32+00:00",
    "completedAt": null,
    "rejectReason": null
  },
  "error": null
}

Completed

Order status completed means that order is completed.

Money was charged from customer and received by merchant.

This status is final and will not be changed.

RESPONSE
{
  "data": {
    "id": "8e310e68-ad38-427e-9a4f-c51c2db31214",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2023-10-18T12:53:32+00:00",
    # Status of order
    "status": "completed",
    "merchantSourceWallet": null,

    # Amount of money received by merchant
    "merchantTargetWallet": {
      "amount": "100.54",
      "currency": "eur"
    },
    "transactions": [
      {
        "type": "payin",
        "id": "2eab2f9e-8374-4ff6-bfeb-204b9cee3dbe",

        # Status of transaction
        "status": "completed",

        # Amount of money that will be charged from customer,
        # valid for any currency: EUR, USD, etc.
        "authorized": {
          "amount": "100.54",
          "currency": "eur"
        },

        # Amount of money that will be received
        # by merchant after order completion, valid
        # for any currency: EUR, USD, etc.
        "merchantWallet": {
          "amount": "100.54",
          "currency": "eur"
        },

        # Optional. Information about payer. May be present
        "counterpartyInfo": {
          "type": "card",
          "name": "John Doe",
          "taxpayerNumber": "48000000000"
        },
        "paymentInfo": null,
        "createdAt": "2023-10-18T12:53:32+00:00",
        "completedAt": "2023-10-18T12:55:20+00:00",
        "rejectReason": null
      }
    ]
  },
  "error": null
}

Rejected

Order status rejected means that order is failed.

There are number of reasons. You can find them in specific transaction.

This status is final and will not be changed.

RESPONSE
{
  "data": {
    "id": "8e310e68-ad38-427e-9a4f-c51c2db31214",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2023-10-18T12:53:32+00:00",

    # Status of order
    "status": "rejected",
    "merchantSourceWallet": null,
    "merchantTargetWallet": null,
    "transactions": [
      {
        "type": "payin",
        "id": "2eab2f9e-8374-4ff6-bfeb-204b9cee3dbe",

        # Status of transaction
        "status": "rejected",

        # Amount of money that will be charged from customer,
        # valid for any currency: EUR, USD, etc.
        "authorized": {
          "amount": "100.54",
          "currency": "eur"
        },

        # Amount of money that will be received
        # by merchant after order completion, valid
        # for any currency: EUR, USD, etc.
        "merchantWallet": {
          "amount": "100.54",
          "currency": "eur"
        },

        "counterpartyInfo": null,
        "paymentInfo": null,
        "createdAt": "2023-10-18T12:53:32+00:00",
        "completedAt": "2023-10-18T12:55:20+00:00",

        # Reason of rejection
        "rejectReason": "OPERATION_TIME_EXCEEDED"
      }
    ]
  },
  "error": null
}

Canceled

The order status canceled indicates that the order has failed. Typically, this occurs when the customer has not performed the required actions, and there is no involvement from a third party. For example, if a client did not fill out the card details on the payment form.

RESPONSE
{
  "data": {
    "id": "8e310e68-ad38-427e-9a4f-c51c2db31214",
    "merchantOrderId": "1697633610",
    "type": "payin",
    "createdAt": "2023-10-18T12:53:32+00:00",

    # Status of order
    "status": "canceled",
    "merchantSourceWallet": null,
    "merchantTargetWallet": null,
    "transactions": [
      {
        "type": "payin",
        "id": "2eab2f9e-8374-4ff6-bfeb-204b9cee3dbe",

        # Status of transaction
        "status": "canceled",
        # ...
      }
    ]
  },
  "error": null
}

Are there any inquiries still outstanding?

Our team of experts is available 24/7 to answer all your questions. Feel free to reach out to us at any time, and we will be happy to help you address any inquiries or issues. Your comfort and satisfaction are our priority.