Orders
Use this reference for exact Orders API request attributes, response envelopes, object shape, and examples. For lifecycle, checkout patterns, ID boundaries, and fulfillment behavior, start with the Orders product guide.
Operations
The order object
Every single-order endpoint returns { "order": { ... } }. Page returns the same object inside page.orders. Optional fields are omitted until they exist; treat omission as absence, not as an empty value. When an order has refunds, order.refunds contains every refund in newest-first order and each entry uses the complete shared refund object. Orders without refunds omit the attribute entirely; they do not return refunds: [] or refunds: null.
Properties
line_item_groupobjectCart contents and totals.Click or tap to expandView line_items attributesClick or tap to expand
Array of products, fees, and shipping charges—each with atypediscriminator.View discount detailsClick or tap to expand
Discount details whentypeisdiscount. Reserved for orders that contain a discount line.View fee attributesClick or tap to expand
Fee details whentypeisfee—covers service charges, convenience fees, etc.View product attributesClick or tap to expand
Product details whentypeisproduct.View custom_data detailsClick or tap to expand
Your own key-value string pairs—exactly the same shape as thecustom_datafield in the API.
View shipping attributesClick or tap to expand
Shipping details whentypeisshipping.
paymentobjectPayment collection record tied to this order. Its status is independent from fulfillment state.Click or tap to expandView balance_transaction attributesClick or tap to expand
Ledger entry available after money movement is recorded. Its type ispaymentorrefund, with exactly one matching strong reference.View payout_configuration attributesClick or tap to expand
Payout routing instructions for this transaction. Present only when order-levelpayout_settingswas specified during order creation.
View billing_details detailsClick or tap to expand
Billing owner details associated with the payment method. Omitted when unavailable.View customer detailsClick or tap to expand
Customer snapshot associated with this payment. Omitted when unavailable.View latest_error detailsClick or tap to expand
Structured error for the latest failed payment operation. Omitted when unavailable.View latest_attempt attributesClick or tap to expand
Details about the most recent charge attempt. Omitted before the first attempt.View error detailsClick or tap to expand
Attempt error details. Omitted when no error is available.
View next_action attributesClick or tap to expand
What needs to happen next to complete the payment.View confirm_payment attributesClick or tap to expand
OTP confirmation flow details.View request attributesClick or tap to expand
Details about the OTP we sent.
View payment_method attributesClick or tap to expand
The payment method being charged.View mobile_money attributesClick or tap to expand
View payout_configuration attributesClick or tap to expand
Payout routing instructions for this payment. Present only when order-levelpayout_settingswas specified during order creation.
refundsarrayComplete refund objects for this order in newest-first order. Omitted when the order has no refunds.Click or tap to expandView items attributesClick or tap to expand
Each entry is the complete shared refund object. See the Refunds API reference for the canonical object and lifecycle fields.View custom_data detailsClick or tap to expand
Your metadata, returned as string values. Omitted when empty.View line_items attributesClick or tap to expand
Immutable allocations describing how much is refunded for each order line item.
Create an order
Create a new order for a first-time or returning customer, and decide whether to charge it now or later. Product line items can be fully inline, or they can reuse products and prices you already keep in your catalog.
AI clients can use create_order for this operation. Confirmed MCP actions still require explicit form confirmation before Inttegro changes state.
The MCP create_order tool creates orders from existing customer, product, and price IDs and never executes payment.
Clients should treat the published route in this reference as authoritative and should not construct alternative order-creation paths.
Rules
- Exactly one of
customer_idorcustomer_datais required. - Set
execute_paymenttotrueonly when a payment method is attached (payment_method_idorpayment_method_data). Omit it or passfalseto create the order first and charge it later. - Orders can contain at most 64 line items.
- Every line item in the request must use the same currency.
- Order totals are capped by currency:
ghsorders can total up to 100,000 in the currency's smallest unit, and all other supported currencies can total up to 50,000 in the currency's smallest unit. - If your business needs higher order limits, contact support before sending larger orders.
- Product line items support three valid shapes: inline product data,
product_idplus explicitprice, orproduct_idplusprice_id. - When you send
product_id, Inttegro snapshots the current catalog product onto the order. Do not combineproduct_idwith inline product fields such asname,type,about,reference,tax_code, orcustom_data. - When you send
product_id, you must also send eitherpriceorprice_id. Do not send both. Inttegro does not infer the amount from the product's default unit price. - Order-line IDs are generated by Inttegro. Do not send a product line's
id; anyidsupplied inside a fee or shipping input is not preserved in the created order. checkout_settings.redirect_urlandcheckout_settings.cancel_urlmust be HTTP or HTTPS URLs and must not already contain anorder_idquery parameter. Inttegro appends the created order ID to the final redirect.- When provided,
receipt_numberis trimmed, must satisfy the same configured length limits asnumber, and does not need to be unique.
Required attributes
line_itemsarrayCart contents. Provide at least one line item per order.Click or tap to expandView product attributesClick or tap to expand
Required whentypeisproduct. Use one of three shapes: inline product data,product_idwith explicitprice, orproduct_idwithprice_id.View custom_data detailsClick or tap to expand
Key-value strings for your own custom data. Only used for inline product data.View price attributesClick or tap to expand
Per-unit price. Use this for inline product data or when overriding the amount for a catalog-backed product line item.
View fee attributesClick or tap to expand
Required whentypeisfee. Use this for service or technology charges.View shipping attributesClick or tap to expand
Required whentypeisshipping. Captures fulfillment charges.
Product line item shapes
Use the shape that matches how you manage your catalog and pricing:
Inline product data
{
"type": "product",
"product": {
"name": "Utility Sneakers",
"type": "physical",
"quantity": 1,
"price": { "currency": "ghs", "value": 20000 }
}
}
Catalog product with explicit price
{
"type": "product",
"product": {
"product_id": "prod_abc123xyz",
"quantity": 2,
"price": { "currency": "usd", "value": 4100 }
}
}
Catalog product with saved catalog price
{
"type": "product",
"product": {
"product_id": "prod_abc123xyz",
"price_id": "pr_xyz789",
"quantity": 2
}
}
When you reference product_id, Inttegro snapshots the product data onto the order at creation time. Later edits to the catalog product or price do not rewrite an order that already exists. You can also mix catalog-backed and inline product line items in the same order, as long as every line item uses the same currency.
The complete HTTP examples below use inline product data. If you already keep products and prices in your catalog, replace the product payload with either catalog-backed shape shown above.
Optional attributes
custom_dataobjectClick or tap to expandArbitrary string key-value pairs for application-specific needs. Attach internal order IDs, fulfillment workflows, tracking identifiers, or any metadata your system requires. Maximum size when serialized: 25 KB. See the Custom Data guide for best practices.
payout_settingsobjectOrder-specific payout configuration. Overrides your application-level payout settings for this order—useful for marketplace scenarios where different orders route to different sellers.Click or tap to expandView destination attributesClick or tap to expand
Where funds from this order should be paid out.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/create \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"request_meta": {
"idempotency_key": "order_checkout_ORDER-NUMBER-2"
},
"number": "ORDER-NUMBER-2",
"receipt_number": "RCPT-NUMBER-2",
"statement_descriptor": "STMTDESC",
"execute_payment": true,
"finalize": true,
"checkout_settings": {
"redirect_url": "https://google.com/thank-you",
"cancel_url": "https://google.com/order-cancelled"
},
"customer_data": {
"name": "Customer Name",
"email_address": "[email protected]",
"phone_number": "+233242058841"
},
"payment_method_data": {
"type": "mobile_money",
"mobile_money": {
"network": "mtn",
"account_number": "0242057831"
}
},
"line_items": [
{
"type": "product",
"product": {
"type": "physical",
"name": "Utility Sneakers",
"quantity": 1,
"price": {
"currency": "ghs",
"value": 20000
}
}
}
],
"billing_details": {
"name": "Customer Name",
"email_address": "[email protected]",
"phone_number": "+233242058841",
"address": {
"name": "Customer Name",
"phone_number": "+233242058841",
"line1": "23 Adenta High Street",
"town": "Accra",
"region": "Greater Accra",
"country": "GH"
}
}
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.create({
requestMeta: {
idempotencyKey: "order_checkout_ORDER-NUMBER-2",
},
number: "ORDER-NUMBER-2",
receiptNumber: "RCPT-NUMBER-2",
statementDescriptor: "STMTDESC",
executePayment: true,
finalize: true,
checkoutSettings: {
redirectUrl: "https://google.com/thank-you",
cancelUrl: "https://google.com/order-cancelled",
},
customerData: {
name: "Customer Name",
phoneNumber: "+233242058841",
},
paymentMethodData: {
type: Inttegro.PaymentMethodTypes.MobileMoney,
mobileMoney: {
network: Inttegro.MobileMoneyNetworks.MTN,
accountNumber: "0242057831",
},
},
lineItems: [
{
type: Inttegro.LineItemTypes.Product,
product: {
type: Inttegro.ProductTypes.Physical,
name: "Utility Sneakers",
quantity: 1,
price: {
currency: "ghs",
value: 20000,
},
},
},
],
billingDetails: {
name: "Customer Name",
phoneNumber: "+233242058841",
address: {
name: "Customer Name",
phoneNumber: "+233242058841",
line1: "23 Adenta High Street",
town: "Accra",
region: "Greater Accra",
country: "GH",
},
},
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
"github.com/zebodotdev/inttegro-sdk-go/v4/money"
"github.com/zebodotdev/inttegro-sdk-go/v4/paymentmethods"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderCreateParams{
RequestMeta: &inttegro.RequestMeta{
IdempotencyKey: "order_checkout_ORDER-NUMBER-2",
},
Number: "ORDER-NUMBER-2",
StatementDescriptor: "STMTDESC",
ExecutePayment: inttegro.Bool(true),
Finalize: inttegro.Bool(true),
CheckoutSettings: &inttegro.CheckoutSettings{
RedirectURL: "https://google.com/thank-you",
CancelURL: "https://google.com/order-cancelled",
},
CustomerData: &inttegro.CustomerData{
Name: "Customer Name",
PhoneNumber: "+233242058841",
},
PaymentMethodData: &inttegro.PaymentMethodData{
Type: inttegro.PaymentMethodTypeMobileMoney,
MobileMoney: &inttegro.MobileMoneyParams{
Network: paymentmethods.MobileMoneyNetworkMTN,
AccountNumber: "0242057831",
},
},
LineItems: []inttegro.OrderLineItemParams{
{
Type: inttegro.LineItemTypeProduct,
Product: &inttegro.ProductLineItemParams{
Type: inttegro.ProductTypePhysical,
Name: "Utility Sneakers",
Quantity: 1,
Price: inttegro.PriceParams{
AmountParams: money.AmountParams{
Currency: money.GHS,
Value: 20000,
},
},
},
},
},
BillingDetails: inttegro.BillingDetails{
Name: "Customer Name",
PhoneNumber: "+233242058841",
Address: inttegro.Address{
Name: "Customer Name",
PhoneNumber: "+233242058841",
Line1: "23 Adenta High Street",
Town: "Accra",
Region: "Greater Accra",
Country: "GH",
},
},
}
result, err := client.Orders.Create(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.create(inttegro.orders.CreateRequest(
request_meta=inttegro.orders.RequestMeta(
idempotency_key="order_checkout_ORDER-NUMBER-2",
),
number="ORDER-NUMBER-2",
receipt_number="RCPT-NUMBER-2",
statement_descriptor="STMTDESC",
execute_payment=True,
finalize=True,
checkout_settings=inttegro.orders.CheckoutSettings(
redirect_url="https://google.com/thank-you",
cancel_url="https://google.com/order-cancelled",
),
customer_data=inttegro.orders.Customer(
name="Customer Name",
phone_number="+233242058841",
),
payment_method_data=inttegro.orders.PaymentMethod(
type=inttegro.PaymentMethodType.MOBILE_MONEY,
mobile_money=inttegro.orders.MobileMoney(
network=inttegro.MobileMoneyNetwork.MTN,
account_number="0242057831",
),
),
line_items=[
inttegro.orders.ProductLineItem(
type=inttegro.LineItemType.PRODUCT,
product=inttegro.orders.Product(
type=inttegro.ProductType.PHYSICAL,
name="Utility Sneakers",
quantity=1,
price=inttegro.orders.PriceParams(
currency=inttegro.Currency.GHS,
value=20000,
),
),
),
],
billing_details=inttegro.orders.BillingDetails(
name="Customer Name",
phone_number="+233242058841",
address=inttegro.orders.Address(
name="Customer Name",
phone_number="+233242058841",
line1="23 Adenta High Street",
town="Accra",
region="Greater Accra",
country="GH",
),
),
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->create([
'request_meta' => [
'idempotency_key' => 'order_checkout_ORDER-NUMBER-2',
],
'number' => 'ORDER-NUMBER-2',
'receipt_number' => 'RCPT-NUMBER-2',
'statement_descriptor' => 'STMTDESC',
'execute_payment' => true,
'finalize' => true,
'checkout_settings' => [
'redirect_url' => 'https://google.com/thank-you',
'cancel_url' => 'https://google.com/order-cancelled',
],
'customer_data' => [
'name' => 'Customer Name',
'phone_number' => '+233242058841',
],
'payment_method_data' => [
'type' => \Inttegro\PaymentMethodType::MobileMoney,
'mobile_money' => [
'network' => \Inttegro\MobileMoneyNetwork::MTN,
'account_number' => '0242057831',
],
],
'line_items' => [
[
'type' => \Inttegro\LineItemType::Product,
'product' => [
'type' => \Inttegro\ProductType::Physical,
'name' => 'Utility Sneakers',
'quantity' => 1,
'price' => [
'currency' => 'ghs',
'value' => 20000,
],
],
],
],
'billing_details' => [
'name' => 'Customer Name',
'phone_number' => '+233242058841',
'address' => [
'name' => 'Customer Name',
'phone_number' => '+233242058841',
'line1' => '23 Adenta High Street',
'town' => 'Accra',
'region' => 'Greater Accra',
'country' => 'GH',
],
],
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.create(
request_meta: {
idempotency_key: "order_checkout_ORDER-NUMBER-2",
},
number: "ORDER-NUMBER-2",
receipt_number: "RCPT-NUMBER-2",
statement_descriptor: "STMTDESC",
execute_payment: true,
finalize: true,
checkout_settings: {
redirect_url: "https://google.com/thank-you",
cancel_url: "https://google.com/order-cancelled",
},
customer_data: {
name: "Customer Name",
phone_number: "+233242058841",
},
payment_method_data: {
type: Inttegro::PaymentMethodType::MOBILE_MONEY,
mobile_money: {
network: Inttegro::MobileMoneyNetwork::MTN,
account_number: "0242057831",
},
},
line_items: [
{
type: Inttegro::LineItemType::PRODUCT,
product: {
type: Inttegro::ProductType::PHYSICAL,
name: "Utility Sneakers",
quantity: 1,
price: {
currency: "ghs",
value: 20000,
},
},
},
],
billing_details: {
name: "Customer Name",
phone_number: "+233242058841",
address: {
name: "Customer Name",
phone_number: "+233242058841",
line1: "23 Adenta High Street",
town: "Accra",
region: "Greater Accra",
country: "GH",
},
}
)
import com.inttegro.Client;
import com.inttegro.orders.OrderCreateParams;
import com.inttegro.RequestMeta;
import com.inttegro.orders.CheckoutSettings;
import com.inttegro.customers.CustomerData;
import com.inttegro.paymentmethods.PaymentMethodData;
import com.inttegro.paymentmethods.PaymentMethodType;
import com.inttegro.paymentmethods.MobileMoneyParams;
import com.inttegro.paymentmethods.MobileMoneyNetwork;
import com.inttegro.orders.OrderLineItemParams;
import com.inttegro.orders.ProductLineItemParams;
import com.inttegro.products.ProductType;
import com.inttegro.prices.PriceParams;
import com.inttegro.money.Currency;
import com.inttegro.customers.BillingDetails;
import com.inttegro.customers.Address;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderCreateParams.builder()
.requestMeta(RequestMeta.builder()
.idempotencyKey("order_checkout_ORDER-NUMBER-2")
.build())
.number("ORDER-NUMBER-2")
.receiptNumber("RCPT-NUMBER-2")
.statementDescriptor("STMTDESC")
.executePayment(true)
.finalizeOrder(true)
.checkoutSettings(CheckoutSettings.builder()
.redirectUrl("https://google.com/thank-you")
.cancelUrl("https://google.com/order-cancelled")
.build())
.customerData(CustomerData.builder()
.name("Customer Name")
.phoneNumber("+233242058841")
.build())
.paymentMethodData(PaymentMethodData.builder()
.type(PaymentMethodType.MOBILE_MONEY)
.mobileMoney(MobileMoneyParams.builder()
.network(MobileMoneyNetwork.MTN)
.accountNumber("0242057831")
.build())
.build())
.lineItem(OrderLineItemParams.product(ProductLineItemParams.builder()
.type(ProductType.PHYSICAL)
.name("Utility Sneakers")
.quantity(1L)
.price(PriceParams.of(Currency.GHS, 20000))
.build()))
.billingDetails(BillingDetails.builder()
.name("Customer Name")
.phoneNumber("+233242058841")
.address(Address.builder()
.name("Customer Name")
.phoneNumber("+233242058841")
.line1("23 Adenta High Street")
.town("Accra")
.region("Greater Accra")
.country("GH")
.build())
.build())
.build();
var result = client.orders().create(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.CreateAsync(new {
request_meta = new {
idempotency_key = "order_checkout_ORDER-NUMBER-2",
},
number = "ORDER-NUMBER-2",
receipt_number = "RCPT-NUMBER-2",
statement_descriptor = "STMTDESC",
execute_payment = true,
finalize = true,
checkout_settings = new {
redirect_url = "https://google.com/thank-you",
cancel_url = "https://google.com/order-cancelled",
},
customer_data = new {
name = "Customer Name",
phone_number = "+233242058841",
},
payment_method_data = new {
type = Inttegro.PaymentMethodType.MobileMoney,
mobile_money = new {
network = Inttegro.MobileMoneyNetwork.MTN,
account_number = "0242057831",
},
},
line_items = new[] {
new {
type = Inttegro.LineItemType.Product,
product = new {
type = Inttegro.ProductType.Physical,
name = "Utility Sneakers",
quantity = 1,
price = new {
currency = "ghs",
value = 20000,
},
},
},
},
billing_details = new {
name = "Customer Name",
phone_number = "+233242058841",
address = new {
name = "Customer Name",
phone_number = "+233242058841",
line1 = "23 Adenta High Street",
town = "Accra",
region = "Greater Accra",
country = "GH",
},
},
});
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"id": "or_f8y1p1",
"number": "ORDER-NUMBER-2",
"receipt_number": "RCPT-NUMBER-2",
"status": "requires_payment",
"initiated_at": "2025-01-13T10:00:00Z",
"sealed_at": "2025-01-13T10:00:01Z",
"line_item_group": { … },
"payment": { … },
"invoice": { … },
"customer": { … }
}
}
Pay for an order
Start or retry payment on an existing order without recreating it. This operation finalizes an open draft before collection. Five ways to use it:
- Already has a payment method: Just send
order_id—we'll charge the attached method. - Swap to a different saved method: Send
order_id+payment_method_id. - Use a new payment method once: Send
order_id+payment_method_data. - Use and save a new method: Add
save_payment_method: trueand includepayment_method_data.billing_details. - Offline payment: Send
order_id+paid_out_of_band: true—marks the payment as received outside Inttegro (cash, bank transfer, check). Complete the order separately when fulfillment is done.
Rules
- Pass either
payment_method_id,payment_method_data, orpaid_out_of_band, never multiple. paid_out_of_bandis mutually exclusive with payment method parameters.- Any
payment_method_idmust belong to the order's customer. save_payment_methodaffects only inlinepayment_method_data; it defaults tofalse.- The order must be
preparingorrequires_payment. Paid, completed, canceled, expired, and unknown orders are not payable. - A successful response can still require customer action. Inspect
order.payment.statusandorder.payment.next_action; do not infer success from HTTP200alone.
Required attributes
Optional attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/pay \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
"payment_method_data": {
"type": "mobile_money",
"mobile_money": {
"network": "mtn",
"account_number": "0544998605"
}
}
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.pay({
orderId: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
paymentMethodData: {
type: Inttegro.PaymentMethodTypes.MobileMoney,
mobileMoney: {
network: Inttegro.MobileMoneyNetworks.MTN,
accountNumber: "0544998605",
},
},
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
"github.com/zebodotdev/inttegro-sdk-go/v4/paymentmethods"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderPayParams{
OrderID: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
PaymentMethodData: &inttegro.PaymentMethodData{
Type: inttegro.PaymentMethodTypeMobileMoney,
MobileMoney: &inttegro.MobileMoneyParams{
Network: paymentmethods.MobileMoneyNetworkMTN,
AccountNumber: "0544998605",
},
},
}
result, err := client.Orders.Pay(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.pay(inttegro.orders.PayRequest(
order_id="or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_method_data=inttegro.orders.PaymentMethod(
type=inttegro.PaymentMethodType.MOBILE_MONEY,
mobile_money=inttegro.orders.MobileMoney(
network=inttegro.MobileMoneyNetwork.MTN,
account_number="0544998605",
),
),
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->pay([
'order_id' => 'or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt',
'payment_method_data' => [
'type' => \Inttegro\PaymentMethodType::MobileMoney,
'mobile_money' => [
'network' => \Inttegro\MobileMoneyNetwork::MTN,
'account_number' => '0544998605',
],
],
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.pay(
order_id: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_method_data: {
type: Inttegro::PaymentMethodType::MOBILE_MONEY,
mobile_money: {
network: Inttegro::MobileMoneyNetwork::MTN,
account_number: "0544998605",
},
}
)
import com.inttegro.Client;
import com.inttegro.orders.OrderPayParams;
import com.inttegro.paymentmethods.PaymentMethodData;
import com.inttegro.paymentmethods.PaymentMethodType;
import com.inttegro.paymentmethods.MobileMoneyParams;
import com.inttegro.paymentmethods.MobileMoneyNetwork;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderPayParams.builder()
.orderId("or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt")
.paymentMethodData(PaymentMethodData.builder()
.type(PaymentMethodType.MOBILE_MONEY)
.mobileMoney(MobileMoneyParams.builder()
.network(MobileMoneyNetwork.MTN)
.accountNumber("0544998605")
.build())
.build())
.build();
var result = client.orders().pay(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.PayAsync(new {
order_id = "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_method_data = new {
type = Inttegro.PaymentMethodType.MobileMoney,
mobile_money = new {
network = Inttegro.MobileMoneyNetwork.MTN,
account_number = "0544998605",
},
},
});
Confirm a payment
Submit the confirmation token for a specific payment and confirmation request. Read payment_id from order.payment.id and confirmation_id from order.payment.next_action.confirm_payment.request.id in the preceding create, pay, or request-confirmation response. The response always uses the { "order": ... } envelope; an actionable error can include both order and error.
Required attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/confirm_payment \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"confirmation_id": "otc_req_8Ks2Vn",
"order_id": "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
"payment_id": "py_3deNYy",
"token": "302673"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.confirmPayment({
confirmationId: "otc_req_8Ks2Vn",
orderId: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
paymentId: "py_3deNYy",
token: "302673",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderConfirmParams{
OrderID: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
Token: "302673",
}
result, err := client.Orders.ConfirmPayment(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.confirm_payment(inttegro.orders.ConfirmPaymentRequest(
confirmation_id="otc_req_8Ks2Vn",
order_id="or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_id="py_3deNYy",
token="302673",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->confirmPayment([
'confirmation_id' => 'otc_req_8Ks2Vn',
'order_id' => 'or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt',
'payment_id' => 'py_3deNYy',
'token' => '302673',
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.confirm_payment(
confirmation_id: "otc_req_8Ks2Vn",
order_id: "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_id: "py_3deNYy",
token: "302673"
)
import com.inttegro.Client;
import com.inttegro.orders.OrderConfirmParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderConfirmParams.builder()
.orderId("or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt")
.token("302673")
.build();
var result = client.orders().confirmPayment(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.ConfirmPaymentAsync(new {
confirmation_id = "otc_req_8Ks2Vn",
order_id = "or_JoPtqOmsjgZKwkPvqTrqGsopu07wfC7ttoWqmfwt",
payment_id = "py_3deNYy",
token = "302673",
});
Request confirmation
Some payment methods—especially mobile money—require the customer to confirm with an OTP. Call this to send (or resend) the confirmation token.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/request_confirmation \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.requestConfirmation({
orderId: "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Orders.RequestConfirmation(ctx, "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.request_confirmation(
"or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi"
)
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->requestConfirmation("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.request_confirmation(
order_id: "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi"
)
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.orders().requestConfirmation("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.RequestConfirmationAsync("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"id": "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi",
"status": "requires_payment",
"line_item_group": { … },
"initiated_at": "2025-04-09T00:11:47.74569+01:00",
"sealed_at": "2025-04-09T00:11:48.374979+01:00",
"payment": { … },
"customer": { … }
}
}
Update an order
Update mutable fields on an existing order and get back the same response shape as Lookup an order. Use this endpoint for three distinct cases: revising an open draft, reopening a sealed order so it becomes editable again, or applying changes and resealing in the same request.
What you can change
- Replace the full
line_itemscollection - Change the order
number - Set or change the order
receipt_number - Change the payment
statement_descriptor - Attach a different saved
payment_method_id - Tokenize and attach new inline
payment_method_data - Remove the attached payment method with
clear_payment_method - Replace order-level
custom_data - Replace or clear customer-facing
invoice_settings - Explicitly open, seal, or reseal the order with
finalize
Rules
- Include at least one mutable field besides
order_id. line_itemsis a full replacement field, not a sparse merge, and it cannot be empty when provided.- If you replace
line_items, the updated order must stay within the current order limits: at most 64 line items, up to 100,000 forghs, and up to 50,000 for all other supported currencies. Contact support if you need these limits increased. payment_method_id,payment_method_data, andclear_payment_methodare mutually exclusive.payment_method_datacurrently supports onlymobile_moneyfor order updates.- Completed, paid, canceled, and expired orders cannot be updated.
custom_datais metadata-only. Updating it does not require reopen / reseal by itself.- Omit
receipt_numberto leave it unchanged. When provided, Inttegro trims it and requires a different non-empty value within the same configured length limits asnumber. It cannot be cleared once set, and receipt numbers are not unique. - If payment confirmation or execution has already started, Inttegro rejects edits that change economics, payment configuration, or require reopening the order.
- When mutating seal-sensitive fields on a sealed order, you must provide
finalizeexplicitly:finalize: falsereopens the order and leaves it editable.finalize: trueapplies the changes and seals the order again in the same request.
Required attributes
Optional attributes
- Name
line_items- Type
- array
- Description
Full replacement for the order's current line items. Use the same line-item schema as Create an order.
payment_method_dataobjectNew payment method details to tokenize and attach to the order.Click or tap to expandView billing_details detailsClick or tap to expand
Required when providing inline payment method details. Must includenameandaddress.country.View mobile_money detailsClick or tap to expand
Required whentypeismobile_money. Providenetworkandaccount_number.
Response shape
- Returns the same
orderobject as Lookup an order. - If
finalize: falsereopens a sealed order,sealed_atandinvoiceare cleared until the order is sealed again. - If
finalize: trueseals or reseals the order, Inttegro returns the regenerated invoice and the updated payment amount. - The returned order object includes top-level
custom_datawhen present. - The returned order object includes top-level
receipt_numberwhen set.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/update \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
"receipt_number": "RCPT-2025-041-REV1",
"line_items": [
{
"type": "product",
"product": {
"name": "Quarterly support retainer",
"type": "digital",
"price": {
"currency": "ghs",
"value": 15000
},
"quantity": 1
}
},
{
"type": "fee",
"fee": {
"label": "Service fee",
"amount": {
"currency": "ghs",
"value": 500
}
}
}
],
"statement_descriptor": "ORDER REVISION",
"custom_data": {
"channel": "dashboard",
"edited_by": "ops"
},
"finalize": true
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.update({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
receiptNumber: "RCPT-2025-041-REV1",
lineItems: [
{
type: Inttegro.LineItemTypes.Product,
product: {
name: "Quarterly support retainer",
type: Inttegro.ProductTypes.Digital,
price: {
currency: "ghs",
value: 15000,
},
quantity: 1,
},
},
{
type: Inttegro.LineItemTypes.Fee,
fee: {
label: "Service fee",
amount: {
currency: "ghs",
value: 500,
},
},
},
],
statementDescriptor: "ORDER REVISION",
customData: {
channel: "dashboard",
edited_by: "ops",
},
finalize: true,
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := map[string]any{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
"receipt_number": "RCPT-2025-041-REV1",
"line_items": []any{
map[string]any{
"type": "product",
"product": map[string]any{
"name": "Quarterly support retainer",
"type": "digital",
"price": map[string]any{
"currency": "ghs",
"value": 15000,
},
"quantity": 1,
},
},
map[string]any{
"type": "fee",
"fee": map[string]any{
"label": "Service fee",
"amount": map[string]any{
"currency": "ghs",
"value": 500,
},
},
},
},
"statement_descriptor": "ORDER REVISION",
"custom_data": map[string]any{
"channel": "dashboard",
"edited_by": "ops",
},
"finalize": true,
}
result, err := client.Orders.Update(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.update(inttegro.orders.UpdateRequest(
order_id="or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
receipt_number="RCPT-2025-041-REV1",
line_items=[
inttegro.orders.ProductLineItem(
type=inttegro.LineItemType.PRODUCT,
product=inttegro.orders.Product(
name="Quarterly support retainer",
type=inttegro.ProductType.DIGITAL,
price=inttegro.orders.PriceParams(
currency=inttegro.Currency.GHS,
value=15000,
),
quantity=1,
),
),
inttegro.orders.FeeLineItem(
type=inttegro.LineItemType.FEE,
fee=inttegro.orders.Fee(
label="Service fee",
amount=inttegro.orders.PriceParams(
currency=inttegro.Currency.GHS,
value=500,
),
),
),
],
statement_descriptor="ORDER REVISION",
custom_data={
"channel": "dashboard",
"edited_by": "ops",
},
finalize=True,
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->update([
'order_id' => 'or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt',
'receipt_number' => 'RCPT-2025-041-REV1',
'line_items' => [
[
'type' => \Inttegro\LineItemType::Product,
'product' => [
'name' => 'Quarterly support retainer',
'type' => \Inttegro\ProductType::Digital,
'price' => [
'currency' => 'ghs',
'value' => 15000,
],
'quantity' => 1,
],
],
[
'type' => \Inttegro\LineItemType::Fee,
'fee' => [
'label' => 'Service fee',
'amount' => [
'currency' => 'ghs',
'value' => 500,
],
],
],
],
'statement_descriptor' => 'ORDER REVISION',
'custom_data' => [
'channel' => 'dashboard',
'edited_by' => 'ops',
],
'finalize' => true,
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.update(
order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
receipt_number: "RCPT-2025-041-REV1",
line_items: [
{
type: Inttegro::LineItemType::PRODUCT,
product: {
name: "Quarterly support retainer",
type: Inttegro::ProductType::DIGITAL,
price: {
currency: "ghs",
value: 15000,
},
quantity: 1,
},
},
{
type: Inttegro::LineItemType::FEE,
fee: {
label: "Service fee",
amount: {
currency: "ghs",
value: 500,
},
},
},
],
statement_descriptor: "ORDER REVISION",
custom_data: {
channel: "dashboard",
edited_by: "ops",
},
finalize: true
)
import com.inttegro.Client;
import com.inttegro.orders.OrderUpdateParams;
import java.util.List;
import com.inttegro.orders.OrderLineItemParams;
import com.inttegro.orders.ProductLineItemParams;
import com.inttegro.products.ProductType;
import com.inttegro.prices.PriceParams;
import com.inttegro.money.Currency;
import com.inttegro.orders.FeeLineItemParams;
import com.inttegro.money.AmountParams;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderUpdateParams.builder()
.orderId("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
.receiptNumber("RCPT-2025-041-REV1")
.lineItems(List.of(
OrderLineItemParams.product(ProductLineItemParams.builder()
.name("Quarterly support retainer")
.type(ProductType.DIGITAL)
.price(PriceParams.of(Currency.GHS, 15000))
.quantity(1L)
.build()),
OrderLineItemParams.fee(FeeLineItemParams.builder()
.label("Service fee")
.amount(AmountParams.of(Currency.GHS, 500))
.build())
))
.statementDescriptor("ORDER REVISION")
.customData(Map.<String, String>ofEntries(
Map.entry("channel", "dashboard"),
Map.entry("edited_by", "ops")
))
.finalizeOrder(true)
.build();
var result = client.orders().update(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.UpdateAsync(new {
order_id = "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
receipt_number = "RCPT-2025-041-REV1",
line_items = new object[] {
new {
type = Inttegro.LineItemType.Product,
product = new {
name = "Quarterly support retainer",
type = Inttegro.ProductType.Digital,
price = new {
currency = "ghs",
value = 15000,
},
quantity = 1,
},
},
new {
type = Inttegro.LineItemType.Fee,
fee = new {
label = "Service fee",
amount = new {
currency = "ghs",
value = 500,
},
},
},
},
statement_descriptor = "ORDER REVISION",
custom_data = new {
channel = "dashboard",
edited_by = "ops",
},
finalize = true,
});
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
"number": "ORDER-2025-REV2",
"receipt_number": "RCPT-2025-041-REV1",
"status": "requires_payment",
"initiated_at": "2025-05-01T10:00:00Z",
"sealed_at": "2025-05-01T10:04:00Z",
"line_item_group": { … },
"payment": { … },
"invoice": { … },
"customer": { … },
"custom_data": { … }
}
}
Finalize an order
Finalize a draft to seal its line items and total for payment. The response exposes the hosted invoice URLs you can share with the customer.
What finalization means
Finalizing an order is the transition from preparing to requires_payment. Before finalization, you can replace line items and change supported order or payment settings. After finalization:
- Line items freeze: No additions, removals, or quantity changes unless you later reopen the order with Update an order
- Totals lock: The amount due becomes fixed until the order is reopened
- Invoice generates: A viewable invoice with web and PDF formats
- Checkout activates: The hosted payment page becomes accessible
- Payment readiness: The order can accept payment attempts
Use this endpoint when you've finished building the cart and want to present it to the customer for payment. The response includes invoice URLs and the sealed_at timestamp marking when the order was finalized. Finalizing an already sealed order is safe and leaves the existing state unchanged.
Required attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/finalize \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.finalize({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Orders.Finalize(ctx, "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.finalize(
"or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
)
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->finalize("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.finalize(
order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
)
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.orders().finalizeOrder("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.FinalizeAsync("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
"number": "ORDER-12345",
"status": "requires_payment",
"sealed_at": "2025-01-25T10:30:00Z",
"initiated_at": "2025-01-25T10:25:00Z",
"expires_at": "2025-02-01T10:25:00Z",
"customer": { … },
"line_item_group": { … },
"invoice": { … }
}
}
Send an invoice
Send the hosted invoice link for an existing order. Inttegro uses the order customer's contact details: if the customer has both phone and email, it sends SMS and email; otherwise it sends to whichever contact method exists.
The order must have a hosted invoice before delivery. Finalize draft orders first with Finalize an order. If a sealed order is missing its invoice, Inttegro may generate the invoice before sending.
AI clients can use send_order_invoice for this operation. Confirmed MCP actions still require explicit form confirmation before Inttegro changes state.
Request body
Response
Returns the current order plus a delivery object. If one channel succeeds and another fails, the endpoint may return HTTP 207 with both sent_channels and failed_channels.
Invoice delivery can return draft_mode_order_has_no_invoice, order_delivery_auth_failed, order_delivery_contact_missing, order_delivery_failed, or order_not_found.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/send_invoice \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: send-invoice-or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.sendInvoice({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderSendInvoiceParams{
OrderID: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
}
result, err := client.Orders.SendInvoice(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.send_invoice(inttegro.orders.DocumentDeliveryRequest(
order_id="or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->sendInvoice("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.send_invoice(order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
import com.inttegro.Client;
import com.inttegro.orders.OrderSendInvoiceParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderSendInvoiceParams.builder()
.orderId("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
.build();
var result = client.orders().sendInvoice(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.SendInvoiceAsync("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
Send a receipt
Send the hosted receipt link for an existing paid order. Inttegro uses the same fan-out rules as invoice delivery: SMS and email when both customer contacts exist, otherwise whichever contact method is available.
Receipt delivery is available only after the order is paid. The link points to the hosted receipt path, such as /invoices/{order_id}/receipt; do not use the invoice PDF path for receipt delivery.
AI clients can use send_order_receipt for this operation. Confirmed MCP actions still require explicit form confirmation before Inttegro changes state.
Request body
Response
Returns the current order plus a delivery object. If one channel succeeds and another fails, the endpoint may return HTTP 207 with both sent_channels and failed_channels.
Receipt delivery can return order_delivery_auth_failed, order_delivery_contact_missing, order_delivery_failed, order_not_found, or order_receipt_missing.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/send_receipt \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: send-receipt-or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.sendReceipt({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderSendReceiptParams{
OrderID: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
}
result, err := client.Orders.SendReceipt(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.send_receipt(inttegro.orders.DocumentDeliveryRequest(
order_id="or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->sendReceipt("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.send_receipt(order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
import com.inttegro.Client;
import com.inttegro.orders.OrderSendReceiptParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderSendReceiptParams.builder()
.orderId("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
.build();
var result = client.orders().sendReceipt(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.SendReceiptAsync("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
Complete an order
Mark an order as completed when the customer has received their items or you've fulfilled the service. This transitions the order to the completed state, indicating the transaction is fully satisfied.
When to complete orders
Complete an order when:
- Physical goods: Items have been delivered or picked up
- Digital products: Files have been downloaded or access granted
- Services: Work has been performed and accepted
- Out-of-band payments: Cash, check, or bank transfer received offline
The order must have a successful payment before completion, unless you're marking an offline payment with paid_out_of_band: true.
Out-of-band payments
If the customer paid outside Inttegro (cash, bank transfer, check), set paid_out_of_band: true. This marks both the payment and order as complete in a single operation. The payment gets marked as paid offline before the order is completed.
Use this for:
- Cash on delivery scenarios
- Bank transfer confirmations
- Check payments that cleared
- Any payment method outside the Inttegro platform
Required attributes
Optional attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/complete \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.complete({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderCompleteParams{
OrderID: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
}
result, err := client.Orders.Complete(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.complete(inttegro.orders.CompleteRequest(
order_id="or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->complete([
'order_id' => 'or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt',
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.complete(
order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
)
import com.inttegro.Client;
import com.inttegro.orders.OrderCompleteParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderCompleteParams.builder()
.orderId("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
.build();
var result = client.orders().complete(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.CompleteAsync(new {
order_id = "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
});
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
"number": "ORDER-12345",
"status": "completed",
"completed_at": "2025-01-27T11:00:00Z",
"sealed_at": "2025-01-25T10:30:00Z",
"initiated_at": "2025-01-25T10:25:00Z",
"expires_at": "2025-02-01T10:25:00Z",
"customer": { … },
"line_item_group": { … }
}
}
Lookup an order
Fetch the current order and nested payment state by ID. A missing or inaccessible order returns HTTP 400 with error code order_not_found; use the error object rather than checking for 404.
AI clients can use get_order, prepare_order_payment, get_refund_options, pay_order or create_refund for this operation. Confirmed MCP actions still require explicit form confirmation before Inttegro changes state.
Required attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/lookup \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.lookup({
orderId: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Orders.Lookup(ctx, "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.lookup("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->lookup("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.lookup(order_id: "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt")
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.orders().lookup("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.LookupAsync("or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt");
Response
- Object
- JSON
OrderResponse {
order: { … },
}
{
"order": {
"line_item_group": { … },
"initiated_at": "2025-09-14T16:24:41.137708909Z",
"completed_at": "2025-09-14T16:29:45Z",
"sealed_at": "2025-09-14T16:24:41.312701813Z",
"payment": { … },
"invoice": { … },
"refunds": [ … ],
"customer": { … },
"status": "completed",
"id": "or_48ZW7BGvYUBWc1i6WBkL2jr0iPQP5jUy76mmmHpt"
}
}
Cancel an order
Cancel an unpaid, unfulfilled order. Cancellation moves the order to canceled and records the time of the transition. The reason and execute_refund inputs are retained as cancellation evidence; they are not returned as order fields.
Paid, completed, expired, and already canceled orders cannot be canceled. Cancellation does not currently void, reverse, or refund an attached payment. If money moved, use the refund flow separately and verify its result before treating funds as returned.
execute_refund is accepted for contract compatibility but currently records intent only. Setting it to true does not execute a refund.
Request attributes
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/cancel \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi",
"reason": "customer_request",
"execute_refund": false
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.cancel({
orderId: "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi",
reason: "customer_request",
executeRefund: false,
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
result, err := client.Orders.Cancel(ctx, "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi")
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.cancel(
"or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi"
)
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->cancel("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.cancel(
order_id: "or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi"
)
import com.inttegro.Client;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var result = client.orders().cancel("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.CancelAsync("or_kAVwBsk6EhQVv2YBUhYAqMf0lktEoQ0S7ZR8y2xi");
Create a refund from an order
POST /orders/refund is a compatibility alias for Create a refund. It accepts the same request attributes, applies the same validation, and returns the same { "refund": { ... } } envelope. Prefer /refunds/create for new integrations.
Use this alias only when an existing integration already treats refunds as an order operation. Choose one URL for a logical refund and use that same URL, idempotency key, and body for every retry.
Request attributes
- Name
reason- Type
- enum
- Required
- required
- Description
Overall refund reason. Use one of the supported values in the Refund reasons list.
Response
Returns HTTP 200 with the new pending refund. Poll Lookup a refund when your workflow needs the final result.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl --fail-with-body https://api.inttegro.com/orders/refund \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: refund-return-1042" \
-d '{
"line_items": [{
"order_line_item_id": "oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
"refund_amount": { "currency": "ghs", "value": 2500 }
}],
"order_id": "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
"reason": "item_returned"
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.refund({
lineItems: [
{
orderLineItemId: "oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
refundAmount: {
currency: "ghs",
value: 2500,
},
},
],
orderId: "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
reason: Inttegro.RefundReasons.ItemReturned,
}, {
idempotencyKey: "refund-return-1042",
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
"github.com/zebodotdev/inttegro-sdk-go/v4/money"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.CreateRefundRequest{
LineItems: []inttegro.CreateRefundLineItem{
{
OrderLineItemID: "oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
RefundAmount: money.AmountParams{
Currency: money.GHS,
Value: 2500,
},
},
},
OrderID: "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
Reason: inttegro.RefundReasonItemReturned,
}
result, err := client.Orders.Refund(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.refund(inttegro.refunds.CreateRequest(
line_items=[
inttegro.refunds.LineItem(
order_line_item_id="oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
refund_amount=inttegro.refunds.AmountParams(
currency=inttegro.Currency.GHS,
value=2500,
),
),
],
order_id="or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
reason=inttegro.RefundReason.ITEM_RETURNED,
),
idempotency_key="refund-return-1042")
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->refund([
'line_items' => [
[
'order_line_item_id' => 'oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN',
'refund_amount' => [
'currency' => 'ghs',
'value' => 2500,
],
],
],
'order_id' => 'or_0123456789abcdefghijklmnopqrstuvwxyzABCD',
'reason' => \Inttegro\RefundReason::ItemReturned,
], [
'idempotency_key' => "refund-return-1042",
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.refund(
line_items: [
{
order_line_item_id: "oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
refund_amount: {
currency: "ghs",
value: 2500,
},
},
],
order_id: "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
reason: Inttegro::RefundReason::ITEM_RETURNED,
idempotency_key: "refund-return-1042"
)
import com.inttegro.Client;
import com.inttegro.refunds.CreateRefundParams;
import com.inttegro.refunds.CreateRefundLineItem;
import com.inttegro.money.AmountParams;
import com.inttegro.money.Currency;
import com.inttegro.refunds.RefundReason;
import com.inttegro.RequestOptions;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = CreateRefundParams.builder()
.lineItem(CreateRefundLineItem.builder()
.orderLineItemId("oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN")
.refundAmount(AmountParams.of(Currency.GHS, 2500))
.build())
.orderId("or_0123456789abcdefghijklmnopqrstuvwxyzABCD")
.reason(RefundReason.ITEM_RETURNED)
.build();
var result = client.orders().refund(params, RequestOptions.withIdempotencyKey("refund-return-1042"));
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.RefundAsync(new Inttegro.CreateRefundRequest {
LineItems = new List<Inttegro.CreateRefundLineItem> {
new Inttegro.CreateRefundLineItem {
OrderLineItemId = "oli_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN",
RefundAmount = new Inttegro.Money.AmountParams {
Currency = Inttegro.Money.Currency.GHS,
Value = 2500,
},
},
},
OrderId = "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
Reason = Inttegro.RefundReason.ItemReturned,
}, "refund-return-1042");
Response
- Object
- JSON
RefundResponse {
refund: { … },
}
{
"refund": {
"id": "rf_1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcd",
"order_id": "or_0123456789abcdefghijklmnopqrstuvwxyzABCD",
"status": "pending",
"reason": "item_returned",
"line_items": [ … ],
"total": { "currency": "ghs", "value": 2500 },
"created_at": "2026-08-31T09:40:00Z"
}
}
Page through orders
Retrieve a paginated list of your most recent orders. Orders are sorted by initiated_at in descending order, so page 0 contains the freshest activity and subsequent pages step back in time.
Provide customer_id to scope the page to a single customer. Omit customer_id to browse all recent orders.
page_size is required. page_number is zero-based, defaults to 0, and accepts values from 0 through 10. An unknown or inaccessible customer filter returns HTTP 400; a temporary page lookup failure returns 503 and can be retried unchanged.
AI clients can use list_orders for this operation. MCP read tools return minimized business data and do not change Inttegro state.
Required attributes
Optional attributes
Response shape
- Top level
pageobject includesnumber,size, and anordersarray. - Each array entry uses the complete shared order object, not a condensed summary.
- Orders created through a purchase intent include
created_fromattribution when available. Public API-key requests cannot filter pages by that attribution. - Optional fields are omitted when unavailable. The API does not add
payment.receiptorline_item_group.products_countsummary fields. - When you filter by
customer_id, every returned order belongs to that customer.
Request
- cURL
- TypeScript
- Go
- Python
- PHP
- Ruby
- Java
- C#
curl https://api.inttegro.com/orders/page \
-H "Authorization: Bearer $INTTEGRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"page_number": 0,
"page_size": 25
}'
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.orders.page({
pageNumber: 0,
pageSize: 25,
})
package main
import (
"context"
"log"
"os"
inttegro "github.com/zebodotdev/inttegro-sdk-go/v4"
)
func main() {
ctx := context.Background()
client := inttegro.NewClient(os.Getenv("INTTEGRO_API_KEY"))
params := inttegro.OrderPageParams{
PageNumber: 0,
PageSize: 25,
}
result, err := client.Orders.Page(ctx, params)
if err != nil {
log.Fatal(err)
}
_ = result
}
import os
import inttegro
client = inttegro.InttegroClient(api_key=os.environ["INTTEGRO_API_KEY"])
result = client.orders.page(inttegro.orders.PageRequest(
page_number=0,
page_size=25,
))
<?php
use Inttegro\Client;
$client = new Client($_ENV['INTTEGRO_API_KEY']);
$result = $client->orders->page([
'page_number' => 0,
'page_size' => 25,
]);
require "inttegro"
client = Inttegro::Client.new(api_key: ENV.fetch("INTTEGRO_API_KEY"))
result = client.orders.page(
page_number: 0,
page_size: 25
)
import com.inttegro.Client;
import com.inttegro.orders.OrderPageParams;
public class Example {
public static void main(String[] args) throws Exception {
var client = new Client(System.getenv("INTTEGRO_API_KEY"));
var params = OrderPageParams.builder()
.pageNumber(0)
.pageSize(25)
.build();
var result = client.orders().page(params);
}
}
using Inttegro;
using var inttegro = new InttegroClient(
Environment.GetEnvironmentVariable("INTTEGRO_API_KEY")!
);
var result = await inttegro.Orders.PageAsync(new {
page_number = 0,
page_size = 25,
});