Skip to content

Payout

This resource represents the disbursement transactions from your Glomo account to your beneficiaries.

Create a new payout

Request

Create a payout in one of two ways:

  • Payout without quote — specify the beneficiary, currencies and amount inline. Fees and the FX rate are determined at creation time (CreatePayoutWithoutQuoteRequest).

  • Payout with quote — pass a quote_id from POST /quotes (with resource: payout) to settle against a locked rate and fee breakdown. The currencies, amount and payment rail are derived from the quote and must not be sent (CreatePayoutWithQuoteRequest).

The request variant is selected by the presence of quote_id.

Security
JWT
Bodyapplication/jsonrequired
One of:

Create a payout without a quote by specifying the beneficiary, currencies and amount. Fees and the FX rate are determined at creation time. Use this variant when you have not pre-generated a quote. To create a payout against a locked quote instead, see CreatePayoutWithQuoteRequest.

purpose_codestringrequired

Purpose code for this payout.

Example:"PYR002"
beneficiary_idstringrequired

The unique identifier for the beneficiary.

Example:"bene_5JU9yv0lGSUP"
source_currencystring, (iso-4217)required

The currency from which the amount is deducted from your source balance.

Enum:"USD""EUR""GBP""AED""SGD""AUD"
Example:"USD"
destination_currencystring, (iso-4217)required

The currency in which the beneficiary receives the payout. The currency code is in ISO 4217 format.

Enum:"USD""EUR""GBP""AED""SGD""AUD""INR"
Example:"INR"
source_amountinteger, >= 1

The amount you intend to send, in the smallest unit of the source currency (e.g. 1000 equates to $10.00 in USD).

Exactly one of source_amount or destination_amount must be provided (not both).

Example:100000
destination_amountinteger, >= 1

The amount the beneficiary will receive, in the smallest unit of the destination currency (e.g. cents for USD, paisa for INR).

Exactly one of source_amount or destination_amount must be provided (not both).

Example:8235000
payment_railstring

The payment rail to use for this payout. Each local rail serves one corridor and is only available when destination_currency matches it: upi, imps, neft, rtgs for INR; ipp, fts for AED; sepa for EUR; fps for GBP. swift is used for international transfers and is available on any corridor. The rail must be eligible for the beneficiary and the amount must fall inside the rail's limits. Defaults to swift if omitted; a local rail is not selected automatically.

Default:"swift"
Enum:"upi""rtgs""neft""imps""ipp""fts""sepa""fps""swift"
Example:"neft"
invoice_numberstring, <= 50 characters

An optional invoice reference for this payout.

Example:"INV-2026-001"
request_idstring, <= 64 characters

A unique client-generated identifier for this payout request. If a payout with the same request_id already exists for your business, the API returns a 409 Conflict response. Use this to safely retry payout creation without risk of creating duplicates. You can look up the existing payout using GET /v1/payouts?request_id=<your_request_id>.

Example:"req-7f3a9c20"
documentsArray of strings

List of document IDs to attach to the payout.

Example:
[ "doc_5JU9yv0lGSUP", "doc_678a5aa9SKkEr" ]
notesobject or null(Notes)

Optional key-value pairs for attaching custom metadata (e.g. invoice references, project codes). Keys must be strings and cannot collide with reserved field names. If your business has custom field rules configured (e.g. enum constraints), values are validated against those rules. Each key appears as a separate column in CSV report exports, with corresponding values populating the rows.

Example:
{ "invoice_ref": "INV-2026-001", "project": "Alpha" }
POST
/payouts
curl -i -X POST \
  https://api.glomopay.com/api/v1/payouts \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "purpose_code": "PYR002",
    "beneficiary_id": "bene_a1b2c3d4e5",
    "source_currency": "USD",
    "destination_currency": "INR",
    "source_amount": 100000,
    "payment_rail": "neft",
    "invoice_number": "INV-2026-001",
    "request_id": "req-7f3a9c20",
    "documents": [
      "doc_11aa22bb33"
    ],
    "notes": {
      "internal_ref": "batch-42"
    }
  }'

Responses

Payout created successfully

Bodyapplication/json
idstring, (uuid)read-only

The unique identifier for the payin.

Example:"payout_DdWp_HUbOnlg"
statusstringread-only

The status of the payout.

Enum:"pending_approval""in_progress""action_required""success""failed""cancelled"
Example:"success"
destination_amountnumber, >= 1

The amount the beneficiary will receive, expressed in the smallest unit of the specified currency (e.g., cents for USD, paisa for INR). For example, 1000 represents $10.00 in USD. The actual currency is determined by the currency field. Note: "cents" is used generically to denote the minimal currency unit, not necessarily USD.

Example:1000
destination_currencystring, (iso-4217)

The currency code in ISO 4217 format. For example, USD.

Example:"USD"
source_amountnumber, >= 1

The amount you intend to send, also specified in the smallest unit of the selected currency. For example, 1000 equates to $10.00 in USD. The currency field determines which currency is used. As with destination_amount, "cents" is a placeholder for the minimal unit, not specifically USD.

Example:1000
source_currencystring, (iso-4217)

The currency code in ISO 4217 format. For example, USD.

Example:"USD"
beneficiary_idstring, (uuid)

The unique identifier for the beneficiary.

Example:"bene_5JU9yv0lGSUP"
documentsArray of objects(AttachedDocument)

The attached documents for the payout.

purpose_codestring

Purpose code for why you want to receive this payment

Example:"S0017"
mid_market_rateobjectread-only

The mid-market rate at the time of payout creation. The currency represents the destination currency and rate represents the factor of conversion. Example: 1 EUR = 1.17 USD. Rate corresponds to 1.17 and currency is USD.

feesobjectread-only

The fees applied to this payout

created_atstring, (timestamp)read-only

Timestamp representing when the payout was created

Example:"2021-06-01T12:00:00Z"
updated_atstring, (timestamp)read-only

Timestamp representing when the payout was last updated

Example:"2021-06-01T12:00:00Z"
utrstring or nullread-only

(Optional) Unique Transaction Reference for the payout. This is a unique identifier assigned by the bank to track the transaction.

Example:"AXISN52024112000001234"
request_idstring or null, <= 64 charactersread-only

The client-provided unique identifier for this payout request. Can be used to look up the payout via GET /v1/payouts?request_id=<your_request_id>.

Example:"your-internal-id"
payment_railstring or nullread-only

The payment rail used to settle this payout. Each local rail serves one corridor: upi, imps, neft, rtgs for INR; ipp, fts for AED; sepa for EUR; fps for GBP. swift is used for international transfers.

Enum:"swift""imps""neft""rtgs""upi""ipp""fts""sepa""fps"null
Example:"swift"
invoice_numberstring or null, <= 50 charactersread-only

The invoice reference provided when the payout was created.

Example:"INV-2026-001"
fee_collection_modestringread-only

How fees for this payout are collected.

Example:"merchant"
error_codestring or nullread-only

A machine-readable code describing why the payout failed or was cancelled. null unless the payout is in an error state. The accompanying error_description carries the human-readable text.

CodeDescription
QUOTE_EXPIREDQuote has expired. Please create a new payout with a valid quote.
PAYOUT_REJECTEDPayout was rejected by the bank. Please reach out to support. (default fallback)
INVALID_BENE_ACCOUNT_NUMBERBeneficiary account number is invalid.
INVALID_BENE_ACCOUNT_TYPEBeneficiary account type is invalid.
INVALID_BENE_IFSCBeneficiary IFSC code is invalid.
INVALID_VPAVPA/UPI address is invalid.
INVALID_BENE_NAMEBeneficiary name is invalid.
INVALID_BENE_ADDRESSBeneficiary address or PIN/ZIP code is invalid.
INVALID_BENE_EMAILBeneficiary email is invalid.
INVALID_BENE_CONTACTBeneficiary contact/mobile number is invalid.
NAME_MISMATCHRemitter and beneficiary names do not match for the selected purpose.
Enum:"QUOTE_EXPIRED""PAYOUT_REJECTED""INVALID_BENE_ACCOUNT_NUMBER""INVALID_BENE_ACCOUNT_TYPE""INVALID_BENE_IFSC""INVALID_VPA""INVALID_BENE_NAME""INVALID_BENE_ADDRESS""INVALID_BENE_EMAIL""INVALID_BENE_CONTACT"
Example:null
error_descriptionstring or nullread-only

A merchant-facing, human-readable description of the error. Operational copy for the merchant. null unless the payout is in an error state. See customer_error_description for the copy meant for the end-customer.

Example:null
customer_error_descriptionstring or nullread-only

Customer-facing error copy, written for the merchant to relay to their end-customer. Derives from the same error_code as error_description but targets a different audience. null when there is no error_code, or when the error code has no customer-facing variant (some codes are merchant-only).

Example:null
quote_idstring or nullread-only

The identifier of the quote this payout was created against. null for payouts that were not created from a quote.

Example:"quote_3m4n5o6p7q"
taxesArray of objectsread-only

Taxes withheld on this payout, deducted from the amount before it reached the beneficiary. Present on repatriation payouts (purpose code P0001), where the remitting bank withholds GST on the currency conversion; empty for every other purpose, and empty until the bank has confirmed the payout.

notesobject or null(Notes)

Optional key-value pairs for attaching custom metadata (e.g. invoice references, project codes). Keys must be strings and cannot collide with reserved field names. If your business has custom field rules configured (e.g. enum constraints), values are validated against those rules. Each key appears as a separate column in CSV report exports, with corresponding values populating the rows.

Example:
{ "invoice_ref": "INV-2026-001", "project": "Alpha" }
Response
{ "id": "payout_DdWp_HUbOnlg", "status": "success", "destination_amount": 1000, "destination_currency": "USD", "source_amount": 1000, "source_currency": "USD", "beneficiary_id": "bene_5JU9yv0lGSUP", "documents": [ {} ], "purpose_code": "S0017", "mid_market_rate": { "currency": "USD", "rate": 1.17 }, "fees": { "fx_fee": {}, "txn_fee": {} }, "created_at": "2021-06-01T12:00:00Z", "updated_at": "2021-06-01T12:00:00Z", "utr": "AXISN52024112000001234", "request_id": "your-internal-id", "payment_rail": "swift", "invoice_number": "INV-2026-001", "fee_collection_mode": "merchant", "error_code": null, "error_description": null, "customer_error_description": null, "quote_id": "quote_3m4n5o6p7q", "taxes": [ {} ], "notes": { "invoice_ref": "INV-2026-001", "project": "Alpha" } }