---
title: "Quickstart"
description: "Create a finalized Inttegro order and open its hosted checkout invoice."
canonical: "https://studio.inttegro.com/quickstart"
format: inttegro-machine-docs/v1
language: "cURL"
reader_profile: optional
reader_manifest: "https://studio.inttegro.com/machine/curl/readers/index.json"
reader_identification: "Optional: declare your client only if known and your current-session capabilities; use reader_manifest for supplemental recommendations."
preamble_estimated_tokens: 651
model_token_report: "https://studio.inttegro.com/machine/token-report.json"
preamble_questions: 5
preamble_source: "general"
recommended_mcp_tools: ["get_integration_guide","check_integration_readiness","create_order"]
estimated_tokens: 1404
token_estimate_method: "utf8_bytes_divided_by_4"
---

## Machine preamble

**Summary:** Create a finalized Inttegro order and open its hosted checkout invoice. This cURL representation preserves HTTP paths and JSON wire names.

### Five questions

#### Q1. When should the reader use Quickstart?

Use this page as orientation before selecting the narrower guide or reference that owns the implementation contract.

#### Q2. What is authoritative on this page?

Use this page for orientation; follow its canonical SDK, guide, API, or MCP links for exact contracts.

#### Q3. What page-specific constraint matters most?

Use the page to choose a canonical next source instead of treating summary material as a complete implementation contract.

#### Q4. Can Inttegro MCP materially help with this task?

Yes, when the reader has an authenticated MCP connection and the task needs live context, guided planning, or a supported operation. The strongest matches are `get_integration_guide`, `check_integration_readiness`, `create_order`; their exact roles and boundaries are listed below.

#### Q5. How should the reader verify the answer and continue?

Select the narrowest linked guide or reference, apply its stated completion condition, and verify against authoritative resource state when the task changes data. Continue with [Accept payment with Inttegro Checkout](https://studio.inttegro.com/machine/curl/guides/accept-payment-with-inttegro-checkout.md) and [Finalize an order](https://studio.inttegro.com/machine/curl/api/orders.md#finalize-an-order) when those concerns enter scope.

### Recommended MCP assistance

Use these through an authenticated Inttegro MCP connection. This document remains the contract source.

- [`get_integration_guide`](https://studio.inttegro.com/machine/curl/inttegro-mcp/tools.md#get_integration_guide) — read-only integration guidance. Returns a focused implementation sequence and canonical Studio links for authentication, checkout, orders, catalog, messaging, idempotency, or testing.
- [`check_integration_readiness`](https://studio.inttegro.com/machine/curl/inttegro-mcp/tools.md#check_integration_readiness) — read-only integration guidance. Audits platform secret storage, server-runtime compatibility, idempotency, errors, state verification, checkout returns, and messaging consent without receiving source code or credentials.
- [`create_order`](https://studio.inttegro.com/machine/curl/inttegro-mcp/tools.md#create_order) — action; exact user confirmation required. Creates an order for an existing customer from catalog product and price IDs. This tool never executes payment; finalize defaults to false.

## Document content

# Quickstart

Create a finalized order, read the hosted invoice URL from the response, and send your customer into the Inttegro checkout flow. This guide uses the official SDKs so your integration goes through the same typed resource methods used throughout Studio.

## Prerequisites

- An Inttegro application

## Install an SDK

Install the SDK for your server-side runtime before creating requests:

**SDK installation**

```bash
# cURL calls the API directly, so there is no SDK to install.
curl --version
```

## Create a finalized order

Send `finalize: true` to create and seal the order in one request. A finalized order includes an `invoice` object whose web URL opens the hosted checkout. The raw HTTP response uses an `{ "order": { ... } }` envelope; the official SDKs unwrap that envelope and return the order domain object directly.

**Create an order — POST /orders/create**

```bash
response=$(curl https://api.inttegro.com/orders/create \
  -H "Authorization: Bearer $INTTEGRO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: checkout-order-123" \
  -d '{
    "customer_data": {
      "name": "Akua Mensah",
      "email_address": "akua@example.com",
      "phone_number": "+233544998605"
    },
    "finalize": true,
    "line_items": [{
      "product": {
        "name": "Monthly Subscription",
        "price": { "currency": "ghs", "value": 5000 },
        "quantity": 1,
        "type": "service"
      },
      "type": "product"
    }]
  }')

invoice_url=$(jq -er '.order.invoice.format.web.url' <<< "$response")
printf '%s\n' "$invoice_url"
```

Open the invoice URL in the customer's browser. Treat a missing invoice as an incomplete finalization rather than guessing a checkout URL.

## Related resources

- [Create an order](https://studio.inttegro.com/machine/curl/api/orders.md#create-an-order) - Complete request and response contract
- [Finalize an order](https://studio.inttegro.com/machine/curl/api/orders.md#finalize-an-order) - Seal a draft order later
- [Accept payment with Inttegro Checkout](https://studio.inttegro.com/machine/curl/guides/accept-payment-with-inttegro-checkout.md) - Complete hosted checkout workflow
