{
    "id": null,
    "mode": "one_time",
    "status": "pending",
    "name": "Home EDSA Meter Top-up",
    "amount": {
        "currency": null,
        "value": null
    },
    "enable": null,
    "expireTime": null,
    "customer": {
        "name": "Musa Kamara"
    },
    "ussdCode": null,
    "reference": null,
    "authorizedProviders": [
        [
            "m17",
            "m18"
        ]
    ],
    "authorizedPhoneNumber": null,
    "recurrentPaymentTarget": {
        "expectedPaymentCount": null,
        "expectedPaymentTotal": {
            "currency": null,
            "value": null
        }
    },
    "financialAccountId": null,
    "processedPaymentData": {
        "amount": {
            "currency": null,
            "value": null
        },
        "orderId": null,
        "paymentId": null,
        "orderNumber": null,
        "channelData": {
            "providerId": null,
            "accountId": null,
            "reference": null
        },
        "financialTransactionReference": null,
        "metadata": null
    },
    "createTime": null,
    "updateTime": null,
    "ownershipGraph": {
        "owner": {
            "id": null,
            "type": null,
            "metadata": null,
            "": null
        }
    },
    "metadata": null
}
Payment Code is a programmable, short-lived token that allows users to collect payments from others, especially in USSD-like or QR-based flows. It supports one-time or recurrent modes, has an associated amount, and can be restricted to specific mobile money providers or MSISDNs. For recurrent payments, you can define a completion target based on either payment count or total amount.
{
    "id": null,
    "mode": "one_time",
    "status": "pending",
    "name": "Home EDSA Meter Top-up",
    "amount": {
        "currency": null,
        "value": null
    },
    "enable": null,
    "expireTime": null,
    "customer": {
        "name": "Musa Kamara"
    },
    "ussdCode": null,
    "reference": null,
    "authorizedProviders": [
        [
            "m17",
            "m18"
        ]
    ],
    "authorizedPhoneNumber": null,
    "recurrentPaymentTarget": {
        "expectedPaymentCount": null,
        "expectedPaymentTotal": {
            "currency": null,
            "value": null
        }
    },
    "financialAccountId": null,
    "processedPaymentData": {
        "amount": {
            "currency": null,
            "value": null
        },
        "orderId": null,
        "paymentId": null,
        "orderNumber": null,
        "channelData": {
            "providerId": null,
            "accountId": null,
            "reference": null
        },
        "financialTransactionReference": null,
        "metadata": null
    },
    "createTime": null,
    "updateTime": null,
    "ownershipGraph": {
        "owner": {
            "id": null,
            "type": null,
            "metadata": null,
            "": null
        }
    },
    "metadata": null
}
📋
Properties
id
string
Unique identifier of the payment code object.
mode
enum<string>
Usage mode of the payment code:
  • ‘one_time’: Can be used only once
  • ‘recurrent’: Can be used multiple times until a target is met or it expires.
Available options: one_time recurrent
status
enum<string>
Lifecycle status of the payment code: ‘pending’ (created but not in use), ‘processing’ (currently in use), ‘expired’ (duration elapsed), ‘completed’ (usage or target fulfilled), or ‘cancelled’ (manually invalidated).Available options: pending cancelled processing expired completed
name
string
Optional human-readable name for the payment code, useful for labeling or tracking.Example: Home EDSA Meter Top-up
amount
object
Amount charged per use of the payment code. For ‘recurrent’ mode, this applies to each payment instance.
enable
boolean
Indicates whether the payment code is currently enabled for use.
expireTime
string
The time at which the payment code expires, provided the code is still pending.
customer
object
Optional customer information linked to this payment code. Often used for USSD or receipt context.
ussdCode
string
The USSD dial string customer(s) can use to initiate a payment for this code.
reference
string
Reference string associated with the payment code. Useful for transaction tagging or reconciliation.
authorizedProviders
array
List of mobile money providers permitted to process payments using this code.Example: [m17 m18]
authorizedPhoneNumber
string
MSISDN of the mobile money account exclusively allowed to use this code. Other users will be rejected.
recurrentPaymentTarget
object
Target payment count or amount that determines when a recurrent payment code is considered complete.
financialAccountId
string
ID of the financial account where collected funds will be settled. Defaults to the main account if not provided.
processedPaymentData
object
The data of the payment that was processed for this payment code. This field is available only during the ‘payment_code.processed’ webhook event.
createTime
string
Timestamp indicating when the payment code was created.
updateTime
string
Timestamp indicating when the payment code was last updated.
ownershipGraph
object
Full ownership graph tracing the origin of this payment code objects across multiple objects.
metadata
object
Custom metadata attached to the payment code for storing business-specific context or tags.