Payment methods
Payment methods let customers save how they pay and reuse it on later orders. Use this API to save a method, retrieve it, update its owner or metadata, and control whether it can be used again.
Each payment method belongs to one customer. When charging a saved method, use it with that same customer. For end-to-end payment flows, see Accept a mobile money payment and Charge repeat customers.
The payment method object
The API returns a payment_method envelope for tokenization, lookup, update, and lifecycle operations. Optional properties are omitted when they do not apply or have no value.
Properties
- Name
active- Type
boolean- Description
Whether the method is enabled for reuse. An archived or ephemeral method is not reusable even if this field is
true.
- Name
archivedAt- Type
Date | null- Description
When the method was archived. Omitted while the method is unarchived.
bankAccountPaymentMethodBankAccount | nullBank-account details when the saved method has a bank-account representation. Treat these fields as sensitive.Click or tap to expand- Name
ghanaBankAccount- Type
{ … } | null
View ghana_bank_account attributesClick or tap to expand
Ghana bank-account details when present.- Name
type- Type
string- Description
- Bank-account subtype.
- Name
createdAt- Type
Date- Description
When the method was saved.
- Name
customerId- Type
string- Description
Customer who owns the method.
customDataCustomData | nullClick or tap to expandYour metadata. Values are returned as strings.
- Name
ephemeral- Type
boolean- Description
Present and
truefor a limited-use method that cannot be reused as a saved method.
- Name
expiresOn- Type
Date | null- Description
Expiry time when the underlying payment method has one.
- Name
fingerprint- Type
string- Description
A customer-specific fingerprint that helps identify duplicate saved payment methods.
- Name
id- Type
string- Description
Unique payment method identifier with the
pm_prefix.
mobileMoneyPaymentMethodMobileMoney | nullMasked mobile money details.Click or tap to expand- Name
accountNumber- Type
string- Description
- Masked wallet number in the form
****1234.
- Name
last4- Type
string- Description
- Final four digits of the normalized wallet number.
- Name
network- Type
MobileMoneyNetwork- Description
- Wallet network:
Inttegro.MobileMoneyNetworks.Airtel,Inttegro.MobileMoneyNetworks.MTN,Inttegro.MobileMoneyNetworks.Telecel, orInttegro.MobileMoneyNetworks.Vodafone.
ownerPaymentMethodOwner | nullOwner details captured with the method.Click or tap to expandView address attributesClick or tap to expand
Owner postal address.- Name
city- Type
string | null- Description
- City or locality.
- Name
country- Type
string- Description
- Country code supplied when the address was saved.
- Name
name- Type
string | null- Description
- Recipient name for the address.
- Name
phoneNumber- Type
string | null- Description
- Address contact number.
- Name
postCode- Type
string | null- Description
- Postal or ZIP code.
- Name
region- Type
string | null- Description
- Region, state, or province.
- Name
name- Type
string- Description
- Payment-method owner name.
suppliedPaymentMethodSupplied | nullHow and when the payment method was added to the customer's account.Click or tap to expand- Name
attemptId- Type
string | null- Description
- Collection attempt that supplied the method, when applicable.
- Name
by- Type
string- Required
- required
- Description
- Who supplied the method:
"customer"or"merchant".
- Name
channel- Type
string | null- Description
- Where the method was collected, such as
"api","buy_link","ego","hosted_collection", or"hosted_invoice".
- Name
resourceId- Type
string | null- Description
- Source resource that collected the method, when applicable.
- Name
resourceType- Type
string | null- Description
- Type of source resource that collected the method.
- Name
suppliedAt- Type
Date- Required
- required
- Description
- When the method was supplied.
- Name
type- Type
PaymentMethodType- Description
Payment method type:
Inttegro.PaymentMethodTypes.BankAccount,
Inttegro.PaymentMethodTypes.Card, or
Inttegro.PaymentMethodTypes.MobileMoney.
verificationPaymentMethodVerification | nullVerification evidence when the method has entered a verification flow.Click or tap to expand- Name
completedAt- Type
Date | null- Description
- When verification completed. Omitted while incomplete.
- Name
initiatedAt- Type
Date- Description
- When verification began.
- Name
mechanism- Type
string- Description
- Verification mechanism when available.
- Name
requestId- Type
string- Description
- Identifier for the verification request.
- Name
type- Type
string- Description
- Verification type.
- Name
verifiedAt- Type
Date | null- Description
When verification completed. Omitted until completion.
Tokenize a payment method
Save a customer's mobile money wallet so they can select it on later orders. This operation does not create an order or charge the wallet. The response returns a pm_... ID for future payments.
Request attributes
- Name
customerId- Type
string- Required
- required
- Description
Customer who will own the saved payment method.
customDataCustomDataClick or tap to expandOptional metadata. The serialized object must not exceed 25 KB and each key must not exceed 256 characters. Non-string values are stored as JSON strings.
mobileMoneyMobileMoneyDetailsrequiredMobile money wallet to save.Click or tap to expand- Name
accountNumber- Type
string- Required
- required
- Description
- Valid local or international wallet phone number.
- Name
network- Type
MobileMoneyNetwork- Required
- required
- Description
Inttegro.MobileMoneyNetworks.Airtel,Inttegro.MobileMoneyNetworks.MTN,Inttegro.MobileMoneyNetworks.Telecel, orInttegro.MobileMoneyNetworks.Vodafone.
ownerPaymentMethodOwnerrequiredOwner identity for the wallet.Click or tap to expand- Name
address- Type
PaymentMethodOwnerAddress | null- Required
- required
View address attributesClick or tap to expand
Postal address associated with the owner.- Name
city- Type
string | null- Description
- City or locality.
- Name
country- Type
string- Required
- required
- Description
- Country associated with the owner address.
- Name
line1- Type
string | null- Description
- First address line.
- Name
line2- Type
string | null- Description
- Second address line.
- Name
name- Type
string | null- Description
- Recipient name for the address.
- Name
phoneNumber- Type
string | null- Description
- Contact number for the address.
- Name
postCode- Type
string | null- Description
- Postal or ZIP code.
- Name
region- Type
string | null- Description
- Region, state, or province.
- Name
name- Type
string- Required
- required
- Description
- Payment method owner name.
- Name
type- Type
'mobile_money'- Required
- required
- Description
Set to
Inttegro.PaymentMethodTypes.MobileMoneyfor the supported direct-tokenization flow.
The account number must be valid for the selected mobile money network. Use an idempotency key when retrying so the same wallet is not saved twice.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.tokenize({
customerId: "cu_a1b2c3d4e5",
customData: {
checkout_source: "account",
},
mobileMoney: {
accountNumber: "0242057831",
network: Inttegro.MobileMoneyNetworks.MTN,
},
owner: {
address: {
country: "GH",
},
name: "Jane Mensah",
},
type: Inttegro.PaymentMethodTypes.MobileMoney,
})
Response
- Object
- JSON
PaymentMethodResponse {
paymentMethod: { … },
}
{
"payment_method": {
"active": true,
"created_at": "2026-08-30T13:00:00Z",
"customer_id": "cu_a1b2c3d4e5",
"custom_data": { … },
"fingerprint": "ifp_v1_app_customer",
"id": "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
"mobile_money": { … },
"owner": { … },
"type": "mobile_money"
}
}
Lookup a payment method
Retrieve a saved payment method by ID. Lookup also returns inactive, archived, and ephemeral methods, so check active, archivedAt, and ephemeral before offering it as a payment choice.
Request attributes
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to fetch.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.lookup({
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Response
- Object
- JSON
PaymentMethodResponse {
paymentMethod: { … },
}
{
"payment_method": {
"active": true,
"created_at": "2026-08-30T13:00:00Z",
"customer_id": "cu_a1b2c3d4e5",
"fingerprint": "ifp_v1_app_customer",
"id": "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
"mobile_money": { … },
"type": "mobile_money"
}
}
Update a payment method
Patch mutable metadata or state without replacing the underlying payment instrument. Omitted fields remain unchanged.
Request attributes
customDataCustomDataPatchClick or tap to expandMetadata to merge. New keys are added, existing keys are replaced,
nulldeletes a key, and omitted keys remain unchanged.ownerPaymentMethodOwnerPatchOwner patch. Include at least one ofowner.addressorowner.name; values cannot be empty.Click or tap to expandView address attributesClick or tap to expand
Address patch. Include at least one field. When adding the first address to a method,owner.address.countryis required.- Name
city- Type
string | null- Description
- City or locality.
- Name
country- Type
string | null- Description
- Country code.
- Name
line1- Type
string | null- Description
- First address line.
- Name
line2- Type
string | null- Description
- Second address line.
- Name
name- Type
string | null- Description
- Recipient name for the address.
- Name
phoneNumber- Type
string | null- Description
- Address contact number.
- Name
postCode- Type
string | null- Description
- Postal or ZIP code.
- Name
region- Type
string | null- Description
- Region, state, or province.
- Name
name- Type
string | null- Description
- Payment-method owner name.
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to update.
Provide at least one change in addition to paymentMethodId. An archived method must be unarchived before you can change anything else. Unarchiving does not reactivate it.
Prefer the dedicated lifecycle operations below when you are changing only state. They make intent clearer and reduce accidental combinations.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.update({
customData: {
legacy_note: null,
segment: "vip",
},
owner: {
address: {
line1: "1 High Street",
region: "Greater Accra",
},
name: "Jane Mensah",
},
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Response
- Object
- JSON
PaymentMethodResponse {
paymentMethod: { … },
}
{
"payment_method": {
"active": true,
"created_at": "2026-08-30T13:00:00Z",
"customer_id": "cu_a1b2c3d4e5",
"custom_data": { … },
"fingerprint": "ifp_v1_app_customer",
"id": "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
"owner": { … },
"type": "mobile_money"
}
}
Activate a payment method
Make an inactive payment method available for reuse. An archived method must be unarchived first; a method that is already active cannot be activated again.
Request attributes
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to activate.
Response
The response is a paymentMethod envelope with paymentMethod.active set to true and no paymentMethod.archivedAt.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.activate({
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Deactivate a payment method
Temporarily prevent a payment method from being reused without archiving it. The method can still be retrieved and updated, then activated again when the customer wants to use it. A method that is already inactive cannot be deactivated again.
Request attributes
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to deactivate.
Response
The response is a paymentMethod envelope with paymentMethod.active set to false.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.disactivate({
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Archive a payment method
Archive a payment method when the customer no longer wants it offered. Archiving sets active to false and records archivedAt. An archived method cannot be archived again.
Request attributes
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to archive.
Response
The response is a payment_method envelope with active set to false and a populated archivedAt timestamp.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.archive({
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Unarchive a payment method
Restore an archived payment method so it can be updated again. Unarchiving clears archivedAt but leaves active set to false; call Activate a payment method separately before offering it to the customer. A method that is not archived cannot be unarchived.
Request attributes
- Name
paymentMethodId- Type
string- Required
- required
- Description
Payment method to unarchive.
Response
The response is a payment_method envelope with active set to false and no archivedAt.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.unarchive({
paymentMethodId: "pm_z7Qx4Lm9Pc2Vb8Nt6Ks1Ha3D",
})
Page through payment methods
Browse saved payment methods, optionally limiting the results to one customer. The API does not guarantee newest-first ordering.
AI clients can use prepare_order_payment or pay_order for this operation. Confirmed MCP actions still require explicit form confirmation before Inttegro changes state.
Request attributes
- Name
customerId- Type
string- Description
Customer whose saved payment methods you want to list.
- Name
pageNumber- Type
number- Description
1-based page number to retrieve. Omit it to use page
1. Supported pages are1through10.
- Name
pageSize- Type
number- Description
Maximum number of payment methods to return, from
1through256. Defaults to256.
The response contains number, paymentMethods, and size. size is the number of payment methods returned. Increase pageNumber to request the next page, up to page 10.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.page({
customerId: "cu_a1b2c3d4e5",
pageNumber: 1,
pageSize: 50,
})
Payment method settings
See which payment methods your account accepts and whether each one requires customer confirmation. Send an empty JSON object. The response can contain bankAccount, card, and mobileMoney entries.
Each entry has required mobileMoney.confirmsUse and mobileMoney.enabled booleans. mobileMoney.type, mobileMoney.name, and mobileMoney.description are included when configured. When mobileMoney.confirmsUse is true, the payment flow should require customer confirmation before completing use of that payment type; it is not the same as the method's verification state.
New accounts enable recognized payment types and require confirmation by default, unless their configuration has been changed. See Understand payment method settings for how these settings affect checkout.
AI clients can use get_payment_method_settings for this operation. MCP read tools return minimized business data and do not change Inttegro state.
Request
import * as Inttegro from '@inttegro/inttegro-sdk'
const inttegro = new Inttegro.InttegroClient({
apiKey: process.env.INTTEGRO_API_KEY!,
})
const result = await inttegro.paymentMethods.settings()
Related resources
- Create customer - Create the owner before tokenizing a method.
- Create an order - Use a saved method with its owning customer.
- Pay an order - Attach a saved method when collecting payment after order creation.
- Confirm a payment - Complete required customer confirmation.