Skip to main content

Getting Started

Set up your environment to start integrating with Ottu's payment API.

1. Get Your API Keys

You'll need API credentials to authenticate requests. Ottu supports multiple authentication methods depending on your use case:

  • API Key (Private Key) — for server-side API calls
  • Basic Authentication — username and password
  • Public Key — for client-side SDK usage

See Authentication for setup instructions.

2. Understand the API

Familiarize yourself with the request format, base URLs, error handling, and conventions:

  • Sandbox: https://<your-merchant>.ottu.dev
  • Production: https://<your-merchant>.ottu.com

All requests and responses use JSON. See API Fundamentals for the complete reference on base URLs, authentication headers, error codes, pagination, and rate limiting.

3. Configure Your Environment

Before making API calls, ensure your Ottu dashboard is configured:

Enable Your Plugin

Ottu uses plugins to define payment types. Enable the one that matches your use case in the Admin Panel under Plugin Config:

  • Payment Request — for invoices, payment links, and manual payment collection
  • E-Commerce — for online store checkout flows

Activate Payment Gateway Codes

Activate the payment gateways (pg_codes) you intend to use. Ensure all desired pg_codes are set to active status in your configuration. These codes are passed to the Checkout API to determine which payment methods the customer can choose from.

Sandbox vs Production

  • Sandbox (type: sandbox) — for testing with simulated transactions
  • Production (type: production) — for live payments
info

Ensure you're in the correct mode before initiating payments.

4. Make Your First API Call

Create a payment transaction with a single API call:

curl -X POST https://<your-merchant>.ottu.dev/b/checkout/v1/pymt-txn/ \
-H "Authorization: Api-Key your_api_key" \
-H "Content-Type: application/json" \
-d '{
"type": "payment_request",
"pg_codes": ["your_pg_code"],
"amount": "10.000",
"currency_code": "KWD",
"customer_email": "[email protected]"
}'

The response includes a session_id and payment_url. Open the payment_url to see Ottu's checkout page.

tip

Use the Sandbox & Test Cards to simulate payments without processing real transactions.

5. Boost Your Integration

Ottu offers multiple integration paths depending on your stack and use case:

ApproachBest ForGet Started
REST APIFull control, any languageYou're already here
Checkout SDKDrop-in payment UI for web and mobileWeb, iOS, Android, Flutter
Python SDK (ottu-py)Python backend integrationsGitHub
Django SDKDjango projects with built-in session management, webhooks, and card operationsGitHub
MCP ServerAI-assisted integration with Claude Code, Cursor, or VS CodeClick MCP in the navbar

Python SDK (ottu-py)

The ottu-py package provides an object-oriented interface to Ottu's REST APIs:

  • Checkout — create, retrieve, and update payment sessions
  • User Cards — list and delete saved customer cards
  • Operations — refund, capture, void, and other post-payment actions
  • Auto-Debit — recurring and subscription payments

Install with pip install ottu-py.

Django SDK

The Django integration extends ottu-py with Django-specific tools:

  • Session management — Django model for tracking payment sessions
  • Webhook handling — built-in webhook receiver with signature verification
  • Template tags — render checkout forms in Django templates

See the Django Integration Guide for setup instructions.

MCP Server

The documentation site includes an MCP server that lets AI tools query Ottu's docs programmatically. Add it to your AI tool:

# Claude Code
claude mcp add --transport http ottu-docs https://docs.ottu.net/mcp

Or click the MCP button in the navbar for setup instructions for Cursor, VS Code, and other tools.

What's Next?

  • Checkout API — Full guide to creating, retrieving, and updating payment transactions
  • Checkout SDK — Drop-in UI for ecommerce and mobile apps
  • Webhooks — Get real-time notifications when payment states change
  • Authentication — API keys, Basic Auth, and permissions