Instamojo Payment Requests API
Create and manage payment requests
Create and manage payment requests
openapi: 3.0.3
info:
title: Instamojo Payments Authentication Payment Requests API
description: 'REST API for creating and managing payment requests, processing refunds, retrieving payment details, and managing orders for Indian businesses. Instamojo is trusted by over 1.2 million Indian small businesses.
'
version: '2.0'
termsOfService: https://www.instamojo.com/terms/
contact:
name: Instamojo Support
url: https://support.instamojo.com/
license:
name: Proprietary
url: https://www.instamojo.com/terms/
servers:
- url: https://api.instamojo.com/v2
description: Production server
- url: https://test.instamojo.com/v2
description: Sandbox/Test server
security:
- BearerAuth: []
tags:
- name: Payment Requests
description: Create and manage payment requests
paths:
/payment_requests/:
get:
tags:
- Payment Requests
summary: List Payment Requests
description: Get a list of all payment requests, optionally filtered by date range.
operationId: listPaymentRequests
parameters:
- name: min_created_at
in: query
description: Filter payment requests created on or after this date (YYYY-MM-DD)
required: false
schema:
type: string
format: date
- name: max_created_at
in: query
description: Filter payment requests created on or before this date (YYYY-MM-DD)
required: false
schema:
type: string
format: date
- name: min_modified_at
in: query
description: Filter payment requests modified on or after this date (YYYY-MM-DD)
required: false
schema:
type: string
format: date
- name: max_modified_at
in: query
description: Filter payment requests modified on or before this date (YYYY-MM-DD)
required: false
schema:
type: string
format: date
- name: limit
in: query
description: Number of results per page
required: false
schema:
type: integer
minimum: 1
maximum: 200
- name: page
in: query
description: Page number for pagination
required: false
schema:
type: integer
minimum: 1
responses:
'200':
description: List of payment requests
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
payment_requests:
type: array
items:
$ref: '#/components/schemas/PaymentRequest'
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Payment Requests
summary: Create a Payment Request
description: 'Create a new payment request by specifying a purpose and amount. Returns a Payment Request ID and a URL to redirect the buyer to.
'
operationId: createPaymentRequest
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequestCreate'
example:
purpose: Online Course Fee
amount: '499.00'
buyer_name: John Doe
email: john@example.com
phone: '+919876543210'
send_email: true
send_sms: false
redirect_url: https://example.com/payment-success
webhook: https://example.com/webhook/instamojo
allow_repeated_payments: false
responses:
'200':
description: Payment request created successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
payment_request:
$ref: '#/components/schemas/PaymentRequest'
'400':
description: Bad request - validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
$ref: '#/components/responses/Unauthorized'
/payment_requests/{id}/:
get:
tags:
- Payment Requests
summary: Get a Payment Request
description: Retrieve the status and details of a specific payment request by ID.
operationId: getPaymentRequest
parameters:
- name: id
in: path
description: Unique ID of the payment request
required: true
schema:
type: string
responses:
'200':
description: Payment request details
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
payment_request:
$ref: '#/components/schemas/PaymentRequestDetail'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/payment_requests/{id}/{payment_id}/:
get:
tags:
- Payment Requests
summary: Get Payment Details for a Payment Request
description: Retrieve details of a specific payment associated with a payment request.
operationId: getPaymentForRequest
parameters:
- name: id
in: path
description: Unique ID of the payment request
required: true
schema:
type: string
- name: payment_id
in: path
description: Unique ID of the payment
required: true
schema:
type: string
responses:
'200':
description: Payment details within the payment request
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
payment_request:
allOf:
- $ref: '#/components/schemas/PaymentRequest'
- type: object
properties:
payment:
$ref: '#/components/schemas/Payment'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
PaymentRequestDetail:
allOf:
- $ref: '#/components/schemas/PaymentRequest'
- type: object
properties:
payments:
type: array
description: List of payments made against this payment request
items:
$ref: '#/components/schemas/Payment'
PaymentRequest:
type: object
properties:
id:
type: string
description: Unique payment request ID
example: ee5c9bf3e75445a8a7b8c3a7e2b4c9d1
purpose:
type: string
description: Purpose of the payment
amount:
type: string
description: Requested amount in INR
example: '499.00'
status:
type: string
description: Current status of the payment request
enum:
- Pending
- Completed
- Failed
- Expired
send_email:
type: boolean
send_sms:
type: boolean
email:
type: string
format: email
phone:
type: string
buyer_name:
type: string
redirect_url:
type: string
format: uri
webhook:
type: string
format: uri
allow_repeated_payments:
type: boolean
longurl:
type: string
format: uri
description: The payment URL to share with the buyer
example: https://www.instamojo.com/@merchant/ee5c9bf3e75445
created_at:
type: string
format: date-time
modified_at:
type: string
format: date-time
PaymentRequestCreate:
type: object
required:
- purpose
- amount
properties:
purpose:
type: string
description: Purpose or description of the payment
maxLength: 255
amount:
type: string
description: Amount to be paid in INR (e.g. "499.00")
pattern: ^\d+(\.\d{1,2})?$
buyer_name:
type: string
description: Name of the buyer (used for prefilling form)
maxLength: 100
email:
type: string
format: email
description: Email address of the buyer
phone:
type: string
description: Phone number of the buyer (with country code)
example: '+919876543210'
send_email:
type: boolean
description: Send payment link to buyer via email
default: false
send_sms:
type: boolean
description: Send payment link to buyer via SMS
default: false
redirect_url:
type: string
format: uri
description: URL to redirect buyer after payment (success or failure)
webhook:
type: string
format: uri
description: Webhook URL to receive payment notifications
allow_repeated_payments:
type: boolean
description: Allow multiple successful payments on this request
default: true
Error:
type: object
properties:
success:
type: boolean
example: false
message:
type: string
description: Error message describing what went wrong
errors:
type: object
description: Field-level validation errors
additionalProperties:
type: array
items:
type: string
Payment:
type: object
properties:
payment_id:
type: string
description: Unique payment ID
example: MOJO5a06005J21512345
quantity:
type: integer
description: Quantity purchased
example: 1
status:
type: string
description: Status of the payment
enum:
- Credit
- Failed
- Pending
currency:
type: string
description: Currency code
example: INR
amount:
type: string
description: Amount paid
example: '499.00'
buyer_name:
type: string
description: Name of the buyer
buyer_email:
type: string
format: email
description: Email of the buyer
buyer_phone:
type: string
description: Phone number of the buyer
instrument_type:
type: string
description: Payment instrument used
enum:
- CREDIT_CARD
- DEBIT_CARD
- NET_BANKING
- WALLET
- UPI
- EMI
billing_instrument:
type: string
description: Specific billing instrument name
failure_reason:
type: string
description: Reason for payment failure (if applicable)
nullable: true
payment_request:
type: string
description: ID of the associated payment request
created_at:
type: string
format: date-time
responses:
Unauthorized:
description: Authentication required or token expired
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: OAuth2 Bearer token obtained from /oauth2/token/