Skip to main content
Creates a new integrated collection. This endpoint allows you to:
  • Create a payment collection linked to an external payment provider
  • Automatically create or find contacts based on customer information
  • Generate payment options (payment links, virtual accounts, etc.)
  • Configure automated follow-up messages
  • Track payment metadata and events

Request Body

type
string
default:"integrated"
Collection type. Currently only “integrated” is supported for public API
reference
string
required
Unique identifier from your payment provider (e.g., Paystack transaction ID)
amount
object
required
Payment amount object
amount.value
number
required
Payment amount as a number
amount.currency
string
required
ISO currency code (e.g., “NGN”, “USD”, “GHS”)
contact
object
required
Customer information. Contact will be auto-created if not exists, or found by phone/email if already exists
contact.firstName
string
required
Customer’s first name
contact.lastName
string
required
Customer’s last name
contact.phone
string
required
Customer’s phone number (E.164 format recommended)
contact.email
string
required
Customer’s email address
metadata
array | object
Metadata can be an array or object in any format. Must include a description field when metadata is provided.
expiresIn
number
default:"1440"
Collection expiration time in minutes (default: 1440 = 24 hours)
payable
object
Payment options configuration
payable.enabled
boolean
default:"false"
Whether to generate payment options
payable.methods
array
Array of payment methods to generate when enabled: - payment_link: Generates a payment link URL - virtual_account: Creates a dedicated virtual bank account - mobile_money: Generates mobile money payment instructions - card: Card payment option - bank_transfer: Bank transfer instructions
provider
string
Slug of the payment provider (must exist in your providers list)
followUp
object
Follow-up configuration
followUp.enabled
boolean
Whether to enable automated follow-up messages
followUp.startAfter
number
Minutes to wait before sending first follow-up
followUp.cadence
string
Follow-up frequency. Options: every_5m, every_10m, every_15m, every_30m, every_1h, every_2h, every_4h, every_6h, every_12h, daily
followUp.channels
array
Array of communication channels. Options: whatsapp, sms, email
followUp.tone
string
Message tone. Options: gentle, professional, urgent

Example Request

{
  "type": "integrated",
  "reference": "PSK_txn_8a7f34",
  "amount": {
    "value": 45000,
    "currency": "NGN"
  },
  "contact": {
    "firstName": "Amina",
    "lastName": "Lawal",
    "phone": "+2348012345678",
    "email": "[email protected]"
  },
  "metadata": [
    {
      "name": "Standard Membership",
      "amount": {
        "value": 15000,
        "currency": "NGN"
      },
      "description": "January plan renewal",
      "quantity": 1
    }
  ],
  "expiresIn": 1440,
  "payable": {
    "enabled": true,
    "methods": ["payment_link", "virtual_account", "mobile_money"]
  },
  "provider": "paystack",
  "followUp": {
    "enabled": true,
    "startAfter": 20,
    "cadence": "every_10m",
    "channels": ["whatsapp", "sms"],
    "tone": "gentle"
  }
}

Response

status
string
Response status (“success”)
message
string
Success message
data
object
Collection object
data.id
string
Collection ID
data.type
string
Collection type
data.contact
object
Contact information
data.reference
string
External payment reference
data.amount
object
Payment amount
data.status
string
Collection status (pending, completed, expired, overdue, cancelled)
data.payable
object
Payment options (if enabled)
data.payable.options
array
Array of generated payment options
data.events
array
Array of collection events
data.createdAt
string
ISO 8601 timestamp
data.updatedAt
string
ISO 8601 timestamp
data.completedAt
string
ISO 8601 timestamp (null if not completed)

Example Response

{
  "status": "success",
  "message": "Collection created successfully",
  "data": {
    "id": "pay_9fmz6170pzaih14pmyl0a49o1l",
    "type": "integrated",
    "contact": {
      "id": "contact_gj7iyx04gs7hticrite6m6qdhc",
      "firstName": "Amina",
      "lastName": "Lawal",
      "phone": "+2348012345678",
      "email": "[email protected]"
    },
    "reference": "PSK_txn_8a7f34",
    "amount": {
      "value": 45000,
      "currency": "NGN"
    },
    "status": "pending",
    "expiresIn": 1440,
    "payable": {
      "enabled": true,
      "methods": ["payment_link", "virtual_account"],
      "options": [
        {
          "method": "payment_link",
          "link": "https://mitu.ai/pay/PSK_txn_8a7f34",
          "expiresAt": "2025-11-14T17:46:07.000Z"
        },
        {
          "method": "virtual_account",
          "bankName": "MituFi Bank",
          "accountNumber": "0123456789",
          "accountName": "Amina Lawal",
          "expiresAt": "2025-11-14T17:46:07.000Z"
        }
      ]
    },
    "followUp": {
      "enabled": true,
      "startAfter": 20,
      "cadence": "every_10m",
      "channels": ["whatsapp", "sms"],
      "tone": "gentle"
    },
    "metadata": [
      {
        "name": "Standard Membership",
        "amount": {
          "value": 15000,
          "currency": "NGN"
        },
        "description": "January plan renewal",
        "quantity": 1
      }
    ],
    "events": [
      {
        "id": "evt_5kk2yo9288or4ne0tvoef09303",
        "type": "collection.created",
        "timestamp": "2025-11-12T17:46:07.000Z"
      }
    ],
    "createdAt": "2025-11-12T17:46:07.000Z",
    "updatedAt": "2025-11-12T17:46:07.000Z",
    "completedAt": null
  }
}

Notes

  • If followUp is not provided, AI will intelligently determine the best follow-up strategy based on the collection context
  • Contact is automatically created or found based on phone/email
  • Payment options are only generated if payable.enabled is true
  • The reference must be unique within your account
  • metadata can be an array or object in any format, but must include a description field when provided