openapi: 3.0.3 info: title: Monime API description: Monime REST API. Please visit https://docs.momime.io/api for more details. termsOfService: https://monime.io/legal/terms-of-service contact: name: Monime Developers url: https://github.com/monimesl email: dev@monime.io version: v1 servers: - url: https://api.monime.io/ security: - bearerAuth: [ ] paths: /v1/banks: get: tags: - Bank summary: List Banks description: Retrieves a list of supported banks available in the specified country. Useful for rendering provider selection options during user payment setup or onboarding. operationId: ListBanks parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: country in: query description: ISO 3166-1 alpha-2 country code (e.g., 'SL', 'GH') to filter banks by region. required: true schema: type: string description: ISO 3166-1 alpha-2 country code (e.g., 'SL', 'GH') to filter banks by region. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Bank" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response /v1/banks/{providerId}: get: tags: - Bank summary: Get Bank description: Retrieves detailed information about a specific bank provider using its Monime-assigned provider ID. operationId: GetBank parameters: - name: providerId in: path description: Unique provider ID for the bank as assigned by Monime. required: true schema: type: string description: Unique provider ID for the bank as assigned by Monime. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Bank" /v1/checkout-sessions: get: tags: - Checkout Session summary: List Checkout Sessions description: Retrieves list of checkout sessions. operationId: ListCheckoutSessions parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/CheckoutSession" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Checkout Session summary: Create Checkout Session description: Creates a new checkout session to initiate a user payment experience. operationId: CreateCheckoutSession parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreateCheckoutSession required: - name - lineItems type: object properties: name: maxLength: 150 type: string description: Title or label for the checkout session. Used for display in customer-facing UIs. description: maxLength: 1000 type: string description: Optional long-form description explaining the purpose or context of the checkout session. nullable: true cancelUrl: maxLength: 255 type: string description: The URL to redirect the customer to if they cancel the checkout process before completing payment. This typically returns the user to your site or app with context about the cancellation. format: url successUrl: maxLength: 255 type: string description: The URL to redirect the customer to after successfully completing the checkout. Typically used to confirm the order or show a success message on your site or app. format: url callbackState: maxLength: 255 type: string description: Opaque value sent back via callback for correlating the session. Never exposed in read APIs. nullable: true reference: maxLength: 255 type: string description: Optional external reference identifier (e.g., order ID) used to link this session with the developer’s backend system. nullable: true financialAccountId: maxLength: 100 type: string description: Financial account where collected funds are settled. Defaults to the main account if omitted. nullable: true lineItems: maxItems: 16 minItems: 1 type: array items: type: object oneOf: - title: Custom Item (User Defined) required: - name - price type: object properties: type: enum: - custom type: string description: Type of line item. This must be set to 'custom'. id: type: string description: Unique internal identifier for this line item. This is generated by the system and cannot be provided by the user. Unique across all checkout sessions. readOnly: true name: maxLength: 100 type: string description: Name of the product or service represented by this line item. price: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Monetary value representing the price per unit of this item. quantity: maximum: 100000 minimum: 1 type: integer description: Number of units being purchased. Must be between 1 and 100,000. default: 1 reference: maxLength: 100 type: string description: External system-provided identifier for this line item, used for cross-system tracking, reconciliation, or referencing purposes. Must be unique within the checkout session. If not provided, a unique identifier will be generated. nullable: true description: maxLength: 100 type: string description: Optional description providing additional details about the item. nullable: true images: maxItems: 3 uniqueItems: true type: array items: type: string description: A URL description: Up to 3 image URLs visually representing this item. nullable: true additionalProperties: false description: A user-defined line item with specified name, quantity, and price. properties: type: enum: - custom type: string default: custom description: List of items to be displayed and charged in the session. Must include at least one item. nullable: true paymentOptions: title: PaymentOptions type: object properties: card: type: object properties: disable: type: boolean description: When true, card-based payment options will be hidden or disabled during checkout. default: false additionalProperties: false description: Settings for card-based payments. Allows disabling the card method entirely. bank: type: object properties: disable: type: boolean description: When true, bank-based payment options will be hidden or disabled during checkout. default: false enabledProviders: uniqueItems: true type: array items: enum: - slb001 - slb004 - slb007 type: string description: The ID of the bank as identified by Monime. E.g. slb001 to denote SLCB description: Bank providers to explicitly allow for this session. Takes precedence over 'disabledProviders'. nullable: true disabledProviders: uniqueItems: true type: array items: enum: - slb001 - slb004 - slb007 type: string description: The ID of the bank as identified by Monime. E.g. slb001 to denote SLCB description: If set, these bank providers will be excluded from this session. If a provider is in both enabled and disabled lists, it will be allowed. nullable: true additionalProperties: false description: Settings for bank payments. You can restrict which bank providers are available or excluded. momo: type: object properties: disable: type: boolean description: When true, mobile money (MoMo) options will be hidden or disabled during checkout. default: false enabledProviders: uniqueItems: true type: array items: enum: - m17 - m18 type: string description: The ID of the MOMO as identified by Monime. E.g. m17 to denote Orange Money SL description: MoMo providers to explicitly allow for this session. Takes precedence over 'disabledProviders'. nullable: true disabledProviders: uniqueItems: true type: array items: enum: - m17 - m18 type: string description: The ID of the MOMO as identified by Monime. E.g. m17 to denote Orange Money SL description: MoMo providers to exclude from this session. If a provider is in both enabled and disabled lists, it will be allowed. nullable: true additionalProperties: false description: Settings for mobile money payments. Customize which MoMo providers are shown at checkout. wallet: type: object properties: disable: type: boolean description: When true, wallet-based payment options will be hidden or disabled during checkout. default: false enabledProviders: uniqueItems: true type: array items: enum: - dw001 type: string description: The ID of the digital wallet as identified by Monime. E.g. dw001 to denote SafulPay description: Wallet providers to explicitly allow for this session. Takes precedence over 'disabledProviders'. nullable: true disabledProviders: uniqueItems: true type: array items: enum: - dw001 type: string description: The ID of the digital wallet as identified by Monime. E.g. dw001 to denote SafulPay description: Wallet providers to exclude from this session. If a provider is in both enabled and disabled lists, it will be allowed. nullable: true additionalProperties: false description: Settings for wallet-based payments. Control whether wallets are available and which ones. additionalProperties: false description: "**Payment method configuration** that controls which payment options (e.g., Banks, Cards, MOMO, Wallets) are enabled or restricted during checkout." nullable: true brandingOptions: type: object properties: primaryColor: maxLength: 255 type: string description: "Primary brand color in hex format (e.g., '#00FF00') used to customize the appearance of the checkout interface." additionalProperties: false description: Visual customization options for the checkout UI, such as color schemes or logos. nullable: true metadata: maxProperties: 64 type: object description: Key-value pairs for attaching contextual metadata. nullable: true additionalProperties: false description: Creates a new checkout session to initiate a user payment experience. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/CheckoutSession" /v1/checkout-sessions/{id}: delete: tags: - Checkout Session summary: Delete Checkout Session description: Deletes a checkout session. This operation is only allowed if the session has not yet been initiated by the user. operationId: DeleteCheckoutSession parameters: - name: id in: path description: ID of the checkout session to delete. required: true schema: type: string description: ID of the checkout session to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - Checkout Session summary: Get Checkout Session description: Retrieves the full details of a checkout session by ID. operationId: GetCheckoutSession parameters: - name: id in: path description: ID of the checkout session to retrieve. required: true schema: type: string description: ID of the checkout session to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/CheckoutSession" /v1/countries: get: tags: - Country summary: List Countries description: Retrieves a list of supported countries available in the Monime platform. Useful for onboarding flows, address validation, or region-based payment configurations. operationId: ListCountries parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Country" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response /v1/countries/{countryCode}: get: tags: - Country summary: Get Country description: Retrieves detailed information about a specific country, including its ISO code, name, currencies, and any supported capabilities on the Monime platform. operationId: GetCountry parameters: - name: countryCode in: path description: The ISO 3166-1 alpha-2 country code. required: true schema: type: string description: The ISO 3166-1 alpha-2 country code. example: SL - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Country" /v1/financial-accounts: get: tags: - Financial Account summary: List Financial Accounts description: Retrieves list of financial accounts. operationId: ListFinancialAccounts parameters: - name: uvan in: query description: Filter by Universal Virtual Account Number (UVAN), a unique alias for the financial account. schema: maxLength: 16 type: string description: Filter by Universal Virtual Account Number (UVAN), a unique alias for the financial account. nullable: true - name: reference in: query description: Filter by external reference ID used to link the account with your internal system. schema: maxLength: 64 type: string description: Filter by external reference ID used to link the account with your internal system. nullable: true - name: withBalance in: query description: If true, includes the balance of the financial accounts in the response. schema: type: boolean description: If true, includes the balance of the financial accounts in the response. - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/FinancialAccount" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Financial Account summary: Create Financial Account description: Creates a new financial account for holding or managing funds within a Space. operationId: CreateFinancialAccount parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreateFinancialAccount required: - name - currency type: object properties: name: maxLength: 100 type: string description: Label for the financial account, e.g., 'Main Wallet' or 'Reserved Account'. currency: type: string description: ISO 4217 currency code (e.g., 'SLE', 'USD') indicating the account's currency. reference: maxLength: 64 type: string description: Optional external reference ID for this account. Must be unique across financial accounts in the same Space. nullable: true description: maxLength: 150 type: string description: Optional note about the account’s usage or purpose. nullable: true metadata: maxProperties: 64 type: object description: Updated metadata for storing additional context about the account. nullable: true additionalProperties: false description: Creates a new financial account for holding or managing funds within a Space. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/FinancialAccount" /v1/financial-accounts/{id}: get: tags: - Financial Account summary: Get Financial Account description: Retrieves details of a financial account by its ID. operationId: GetFinancialAccount parameters: - name: withBalance in: query description: If true, includes the balance of the financial account in the response. schema: type: boolean description: If true, includes the balance of the financial account in the response. - name: id in: path description: Unique identifier of the financial account to retrieve. required: true schema: pattern: ^fac-.*$ type: string description: Unique identifier of the financial account to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/FinancialAccount" patch: tags: - Financial Account summary: Update Financial Account description: Partially updates a financial account. Fields not included in the request body remain unchanged. operationId: UpdateFinancialAccount parameters: - name: id in: path description: The ID of the financial account to update. required: true schema: pattern: ^fac-.*$ type: string description: The ID of the financial account to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: UpdateFinancialAccount type: object properties: name: maxLength: 100 type: string description: Updated label for the financial account. nullable: true reference: maxLength: 64 type: string description: Updated external reference ID. Must be unique across accounts. nullable: true description: maxLength: 150 type: string description: Updated description of the account's purpose. nullable: true metadata: maxProperties: 64 type: object description: Updated metadata for storing additional context about the account. nullable: true additionalProperties: false description: Partially updates a financial account. Fields not included in the request body remain unchanged. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/FinancialAccount" /v1/financial-transactions: get: tags: - Financial Transaction summary: List Financial Transactions description: Retrieves a list of financial transactions. operationId: ListFinancialTransactions parameters: - name: financialAccountId in: query description: Filter transactions involving the specified financial account ID. schema: type: string description: Filter transactions involving the specified financial account ID. nullable: true - name: reference in: query description: Filter by Monime-assigned transaction reference. Useful for retrieving all transactions grouped under the same reference identifier. schema: type: string description: Filter by Monime-assigned transaction reference. Useful for retrieving all transactions grouped under the same reference identifier. nullable: true - name: type in: query description: "Filter transactions by type: 'credit' for incoming funds or 'debit' for outgoing ones." schema: enum: - credit - debit type: string description: "Filter transactions by type: 'credit' for incoming funds or 'debit' for outgoing ones." nullable: true - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/FinancialTransaction" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response /v1/financial-transactions/{id}: get: tags: - Financial Transaction summary: Get Financial Transaction description: Retrieves the details of a financial transaction, including its type, amount, source account, and ownership trace. operationId: GetTransaction parameters: - name: id in: path description: Unique identifier of the financial transaction to retrieve. required: true schema: pattern: ^txn-.*$ type: string description: Unique identifier of the financial transaction to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/FinancialTransaction" /v1/internal-transfers: get: tags: - Internal Transfer summary: List Internal Transfers description: Retrieves a list of internal fund transfers between financial accounts within the Monime ecosystem. operationId: ListInternalTransfers parameters: - name: status in: query description: "Filters transfers by status: 'pending' (awaiting processing), 'processing' (in progress), 'failed' (attempt unsuccessful), or 'completed' (successfully transferred)." schema: enum: - pending - processing - failed - completed type: string description: "Filters transfers by status: 'pending' (awaiting processing), 'processing' (in progress), 'failed' (attempt unsuccessful), or 'completed' (successfully transferred)." nullable: true - name: sourceFinancialAccountId in: query description: Source financial account ID. Filters results to transfers originating from this account. schema: type: string description: Source financial account ID. Filters results to transfers originating from this account. nullable: true - name: destinationFinancialAccountId in: query description: Destination financial account ID. Filters results to transfers credited to this account. schema: type: string description: Destination financial account ID. Filters results to transfers credited to this account. nullable: true - name: financialTransactionReference in: query description: Financial transaction reference. Filters results to transfers with this transaction reference. Useful for correlation with underlying financial transactions. schema: type: string description: Financial transaction reference. Filters results to transfers with this transaction reference. Useful for correlation with underlying financial transactions. nullable: true - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/InternalTransfer" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Internal Transfer summary: Create Internal Transfer description: Initiates a transfer of funds between two financial accounts within the same ecosystem. operationId: CreateInternalTransfer parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreateInternalTransfer required: - amount - sourceFinancialAccount - destinationFinancialAccount type: object properties: amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Amount to be transferred from the source to the destination financial account. sourceFinancialAccount: required: - id type: object properties: id: maxLength: 64 type: string description: ID of the source financial account that will be debited. description: Source financial account from which the funds will be withdrawn. destinationFinancialAccount: required: - id type: object properties: id: maxLength: 64 type: string description: ID of the destination financial account that will be credited. description: Destination financial account where the funds will be deposited. description: maxLength: 150 type: string description: Optional description of the transfer. Useful for developer context, logging, or internal references. nullable: true metadata: maxProperties: 64 type: object description: Custom metadata for attaching structured context or developer-defined identifiers. nullable: true additionalProperties: false description: Initiates a transfer of funds between two financial accounts within the same ecosystem. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/InternalTransfer" /v1/internal-transfers/{id}: delete: tags: - Internal Transfer summary: Delete Internal Transfer description: Deletes a specific transfer object by its ID. Only applicable for transfers in a deletable state (e.g., pending). operationId: DeleteInternalTransfer parameters: - name: id in: path description: Unique identifier of the transfer to delete. required: true schema: pattern: ^trn-.*$ type: string description: Unique identifier of the transfer to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - Internal Transfer summary: Get Internal Transfer description: Retrieves detailed information about a specific transfer by its ID. operationId: GetInternalTransfer parameters: - name: id in: path description: Unique identifier of the transfer to retrieve. required: true schema: pattern: ^trn-.*$ type: string description: Unique identifier of the transfer to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/InternalTransfer" patch: tags: - Internal Transfer summary: Update Internal Transfer description: Updates mutable fields (like description or metadata) of an existing transfer object. operationId: PatchInternalTransfer parameters: - name: id in: path description: ID of the transfer to update. required: true schema: type: string description: ID of the transfer to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: PatchInternalTransfer type: object properties: description: maxLength: 255 type: string description: Updated description for the transfer. nullable: true metadata: maxProperties: 64 type: object description: Updated metadata for tagging this transfer. nullable: true additionalProperties: false description: Updates mutable fields (like description or metadata) of an existing transfer object. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/InternalTransfer" /v1/momos: get: tags: - Momo summary: List Momos description: Retrieves a list of supported momos available in the specified country. Useful for rendering provider selection options during user payment setup or onboarding. operationId: ListMomos parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: country in: query description: ISO 3166-1 alpha-2 country code (e.g., 'SL', 'GH') to filter momos by region. required: true schema: type: string description: ISO 3166-1 alpha-2 country code (e.g., 'SL', 'GH') to filter momos by region. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Momo" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response /v1/momos/{providerId}: get: tags: - Momo summary: Get Momo description: Retrieves detailed information about a specific momo provider using its Monime-assigned provider ID. operationId: GetMomo parameters: - name: providerId in: path description: Unique provider ID for the momo as assigned by Monime. required: true schema: type: string description: Unique provider ID for the momo as assigned by Monime. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Momo" /v1/payment-codes: get: tags: - Payment Code summary: List Payment Codes description: Retrieves a list of payment codes with support for filtering by mode, USSD code, and status. operationId: ListPaymentCodes parameters: - name: ussd_code in: query description: Filter by the USSD code assigned to the payment code (if applicable). schema: type: string description: Filter by the USSD code assigned to the payment code (if applicable). nullable: true - name: mode in: query description: "Filter by usage mode: 'one_time' for single-use codes, or 'recurrent' for reusable ones." schema: enum: - one_time - recurrent type: string description: "Filter by usage mode: 'one_time' for single-use codes, or 'recurrent' for reusable ones." nullable: true - name: status in: query description: "Filter by payment code status: 'pending' (not yet used), 'processing' (in use), 'expired' (duration elapsed), 'cancelled' (manually cancelled), or 'completed' (fulfilled as intended)." schema: enum: - pending - cancelled - processing - expired - completed type: string description: "Filter by payment code status: 'pending' (not yet used), 'processing' (in use), 'expired' (duration elapsed), 'cancelled' (manually cancelled), or 'completed' (fulfilled as intended)." nullable: true - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/PaymentCode" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Payment Code summary: Create Payment Code description: Creates a new payment code with the specified parameters for value collection and provider restrictions. operationId: CreatePaymentCode parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreatePaymentCode required: - name type: object properties: mode: enum: - one_time - recurrent type: string description: Defines whether the payment code is single-use ('one_time') or reusable ('recurrent'). default: one_time name: maxLength: 64 minLength: 3 type: string description: Descriptive name for the payment code, used for display or tracking. nullable: true example: Home EDSA Meter Top-up enable: type: boolean description: Whether the payment code should be enabled for use on creation. default: true amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Amount to charge per use of the payment code. For 'recurrent' codes, this applies to each payment. duration: type: string description: How long the payment code remains valid before expiring. default: 10m example: 1h30m customer: type: object properties: name: maxLength: 100 type: string description: Optional name of the customer associated with the payment code. Displayed in the USSD prompt for contextual reference. nullable: true example: Musa Kamara additionalProperties: false description: Customer associated with the payment code, if any. nullable: true reference: maxLength: 64 type: string description: Reference tag to associate with this payment code for reconciliation or tracking. nullable: true authorizedProviders: maxItems: 10 minItems: 1 uniqueItems: true type: array items: enum: - m17 - m18 type: string description: The ID of the MOMO as identified by Monime. E.g. m17 to denote Orange Money SL description: List of mobile money provider IDs permitted to process payments using this code. nullable: true authorizedPhoneNumber: type: string description: MSISDN of the mobile money account exclusively allowed to use this code. recurrentPaymentTarget: type: object properties: expectedPaymentCount: minimum: 1 type: integer description: Minimum expected number of payments after which the recurrent payment code may be considered complete. Optional. nullable: true example: 10 expectedPaymentTotal: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Minimum total amount to be collected before the recurrent payment code is considered complete. Optional. additionalProperties: false description: Defines the target number of payments or total amount for completing a recurrent code. nullable: true financialAccountId: maxLength: 64 pattern: ^fac-.*$ type: string description: Financial account where collected funds are settled. Defaults to the main account if omitted. nullable: true metadata: maxProperties: 64 type: object description: Optional metadata for attaching custom business context to the payment code. nullable: true additionalProperties: false description: Creates a new payment code with the specified parameters for value collection and provider restrictions. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/PaymentCode" /v1/payment-codes/{id}: delete: tags: - Payment Code summary: Delete Payment Code description: Deletes a payment code by ID. This operation is only allowed if the code hasn't been used. operationId: DeletePaymentCode parameters: - name: id in: path description: Unique identifier of the payment code to delete. required: true schema: pattern: ^pmc-.*$ type: string description: Unique identifier of the payment code to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - Payment Code summary: Get Payment Code description: Retrieve a payment code object by its ID. operationId: GetPaymentCode parameters: - name: id in: path description: Unique identifier of the payment code to retrieve. required: true schema: pattern: ^pmc-.*$ type: string description: Unique identifier of the payment code to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/PaymentCode" patch: tags: - Payment Code summary: Update Payment Code description: Partially updates an existing payment code with new values, rules, or account bindings. operationId: UpdatePaymentCode parameters: - name: id in: path description: The unique ID of the payment code to update. required: true schema: pattern: ^pmc-.*$ type: string description: The unique ID of the payment code to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: UpdatePaymentCode type: object properties: name: maxLength: 64 minLength: 3 type: string description: Updated display name or label for the payment code. nullable: true amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Updated amount to charge per use. nullable: true duration: type: string description: New expiration duration for the code. nullable: true enable: type: boolean description: Flag to activate or deactivate the payment code. nullable: true customer: type: object properties: name: maxLength: 100 type: string description: Optional name of the customer associated with the payment code. Displayed in the USSD prompt for contextual reference. nullable: true example: Musa Kamara additionalProperties: false description: Updated customer information for this payment code. nullable: true reference: maxLength: 64 type: string description: New reference string for tagging the payment code. nullable: true authorizedProviders: maxItems: 10 minItems: 1 uniqueItems: true type: array items: enum: - m17 - m18 type: string description: The ID of the MOMO as identified by Monime. E.g. m17 to denote Orange Money SL description: Updated list of mobile money providers allowed to use this code. nullable: true authorizedPhoneNumber: type: string description: New MSISDN authorized to use this payment code exclusively. nullable: true recurrentPaymentTarget: type: object properties: expectedPaymentCount: minimum: 1 type: integer description: Minimum expected number of payments after which the recurrent payment code may be considered complete. Optional. nullable: true example: 10 expectedPaymentTotal: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Minimum total amount to be collected before the recurrent payment code is considered complete. Optional. additionalProperties: false description: Updated target count or amount for completing a recurrent payment code. nullable: true financialAccountId: maxLength: 64 pattern: ^fac-.*$ type: string description: Updated destination financial account for funds settlement. nullable: true metadata: maxProperties: 64 type: object description: Updated metadata for storing additional context about the payment code. nullable: true additionalProperties: false description: Partially updates an existing payment code with new values, rules, or account bindings. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/PaymentCode" /v1/payments: get: tags: - Payment summary: List Payments description: Lists payments with optional filters like status or creation date. operationId: ListPayments parameters: - name: orderNumber in: query description: The order number of the order associated to a payment. schema: type: string description: The order number of the order associated to a payment. - name: financialAccountId in: query description: ID of the financial account that received the funds. schema: type: string description: ID of the financial account that received the funds. - name: financialTransactionReference in: query description: The reference for the group of related financial transactions that were spawned for a payment schema: type: string description: The reference for the group of related financial transactions that were spawned for a payment - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Payment" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response /v1/payments/{id}: get: tags: - Payment summary: Get Payment description: Retrieve the full details of a specific payment using its ID. operationId: GetPayment parameters: - name: id in: path description: ID of the payment object to retrieve. required: true schema: type: string description: ID of the payment object to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Payment" patch: tags: - Payment summary: Patch Payment description: Updates mutable fields of a payment object like name, description, or metadata. operationId: UpdatePayment parameters: - name: id in: path description: ID of the payment object to update. required: true schema: type: string description: ID of the payment object to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: UpdatePayment type: object properties: name: maxLength: 100 type: string description: New label for the payment. Useful for reclassifying or tagging. nullable: true metadata: maxProperties: 64 type: object description: Structured metadata to enrich or tag the payment. nullable: true additionalProperties: false description: Updates mutable fields of a payment object like name, description, or metadata. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Payment" /v1/payouts: get: tags: - Payout summary: List Payouts description: Retrieves list of payouts. operationId: ListPayouts parameters: - name: status in: query description: |- Filter payouts by status: - 'pending': Awaiting processing - 'processing': Currently being processed - 'failed': Processing failed - 'completed': Successfully disbursed schema: enum: - pending - processing - failed - completed type: string description: |- Filter payouts by status: - 'pending': Awaiting processing - 'processing': Currently being processed - 'failed': Processing failed - 'completed': Successfully disbursed nullable: true - name: sourceFinancialAccountId in: query description: Filter payouts by the originating financial account. Useful for scoping to a specific wallet or reserve account. schema: type: string description: Filter payouts by the originating financial account. Useful for scoping to a specific wallet or reserve account. nullable: true - name: sourceTransactionReference in: query description: Reference for the batch or group of financial transactions triggered as part of a payout. Enables traceability across related entries. schema: type: string description: Reference for the batch or group of financial transactions triggered as part of a payout. Enables traceability across related entries. nullable: true - name: destinationTransactionReference in: query description: Filter by the transaction reference assigned by the destination provider (e.g., a bank or wallet system). Useful for reconciliation with third-party systems. schema: type: string description: Filter by the transaction reference assigned by the destination provider (e.g., a bank or wallet system). Useful for reconciliation with third-party systems. nullable: true - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Payout" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Payout summary: Create Payout description: Creates a new payout with a specified amount, destination, and optional source account. operationId: CreatePayout parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreatePayout required: - amount - destination type: object properties: amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: The amount to be paid out to the destination account. source: required: - financialAccountId type: object properties: financialAccountId: type: string description: ID of the financial account where the funds is disbursed from. transactionReference: type: string description: Internal Monime reference for the debit transaction from the source account. This is null until the payout is processed. nullable: true readOnly: true additionalProperties: false description: Optional details of the source account to be debited. If omitted, the default 'main' account is used. nullable: true destination: required: - type - providerId type: object oneOf: - title: Bank required: - type - providerId - accountNumber type: object properties: type: enum: - bank type: string description: "Fixed value: 'bank'. Indicates this is a bank payout destination." providerId: enum: - slb001 - slb004 - slb007 type: string description: Identifier of the bank or financial service provider. accountNumber: type: string description: The bank account number to which the payout will be sent. transactionReference: type: string description: Reference or identifier of the underlying transaction that credited the recipient’s bank account. Will be 'null' if the payout is not 'completed'. nullable: true readOnly: true additionalProperties: false - title: Mobile Money required: - type - providerId - phoneNumber type: object properties: type: enum: - momo type: string description: "Fixed value: 'momo'. Indicates this is a mobile money (MoMo) payout destination." providerId: enum: - m17 - m18 type: string description: Identifier of the mobile money provider. phoneNumber: type: string description: The mobile number (MSISDN) of the recipient's mobile money account. transactionReference: type: string description: Reference or ID of the transaction that credited the recipient’s mobile money wallet. Set to 'null' if the payout is not 'completed'. nullable: true readOnly: true additionalProperties: false - title: Digital Wallet required: - type - providerId type: object properties: type: enum: - wallet type: string description: "Fixed value: 'wallet'. Indicates this is a digital wallet payout destination." providerId: enum: - dw001 type: string description: Identifier of the digital wallet provider. walletId: type: string description: The ID of the recipient's wallet in the digital wallet ecosystem. transactionReference: type: string description: Reference or ID of the transaction that credited the recipient’s wallet. Set to null if the payout has not reached completed status. nullable: true readOnly: true additionalProperties: false properties: type: enum: - bank - momo - wallet type: string description: Specifies the type of destination account. Must be either 'bank', 'momo', or 'wallet'. description: Information about the destination account that will receive the payout. metadata: maxProperties: 64 type: object description: Optional metadata to associate additional business context with the payout. nullable: true additionalProperties: false description: Creates a new payout with a specified amount, destination, and optional source account. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Payout" /v1/payouts/{id}: delete: tags: - Payout summary: Delete Payout description: Deletes a payout object by ID. This is only allowed if the payout is still in a pre-processing state (e.g., pending or scheduled). operationId: DeletePayout parameters: - name: id in: path description: The unique ID of the payout object to delete. required: true schema: pattern: ^pyt-.*$ type: string description: The unique ID of the payout object to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - Payout summary: Get Payout description: Retrieves a payout object by its unique identifier. operationId: GetPayout parameters: - name: id in: path description: Unique identifier of the payout to retrieve. required: true schema: pattern: ^pyt-.*$ type: string description: Unique identifier of the payout to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Payout" patch: tags: - Payout summary: Update Payout description: Updates an existing payout object by ID. Fields can only be modified if the payout has not yet been processed. operationId: UpdatePayout parameters: - name: id in: path description: The unique ID of the payout object to update. required: true schema: pattern: ^pyt-.*$ type: string description: The unique ID of the payout object to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: UpdatePayout type: object properties: metadata: maxProperties: 64 type: object description: Updated metadata for attaching custom information to the payout. nullable: true additionalProperties: false description: Updates an existing payout object by ID. Fields can only be modified if the payout has not yet been processed. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Payout" /v1/provider-kyc/{providerId}: get: tags: - Provider KYC summary: Get Provider KYC description: Retrieves the KYC profile of an account from a specified provider. operationId: GetProviderKYC parameters: - name: accountId in: query description: The ID of the account in the provider's ecosystem'. required: true schema: type: string description: The ID of the account in the provider's ecosystem'. - name: providerId in: path description: The ID of the provider as identified by Monime. required: true schema: type: string description: The ID of the provider as identified by Monime. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/ProviderKYC" /v1/ussd-otps: get: tags: - USSD OTP summary: List USSD OTPs description: Retrieves a list of USSD OTP sessions with optional filtering and pagination. operationId: ListUSSDOTPs parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/UssdOtp" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - USSD OTP summary: Create USSD OTP description: Creates a new USSD OTP session for secure phone-bound verification. operationId: CreateUSSDOTP parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreateUSSDOTP required: - authorizedPhoneNumber type: object properties: authorizedPhoneNumber: type: string description: Phone number (MSISDN) authorized to verify the OTP. Will be used to validate the incoming USSD request. verificationMessage: maxLength: 255 type: string description: Message shown to the user after successful verification, typically rendered on the USSD interface. nullable: true duration: type: string description: How long the OTP code remains valid before expiring. Specified as a duration string (e.g., '30s', '2m'). default: 5m example: 5m metadata: maxProperties: 64 type: object description: Optional metadata to associate additional context or tracking info with this OTP session. nullable: true description: Creates a new USSD OTP session for secure phone-bound verification. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/UssdOtp" /v1/ussd-otps/{id}: delete: tags: - USSD OTP summary: Delete USSD OTP description: Deletes a USSD OTP session by its ID. operationId: DeleteUSSDOTP parameters: - name: id in: path description: ID of the USSD OTP session to delete. required: true schema: type: string description: ID of the USSD OTP session to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - USSD OTP summary: Get USSD OTP description: Retrieve a single USSD OTP session by its ID. operationId: GetUSSDOTP parameters: - name: id in: path description: ID of the USSD OTP session to retrieve. required: true schema: type: string description: ID of the USSD OTP session to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/UssdOtp" /v1/webhooks: get: tags: - Webhook summary: List Webhooks description: Retrieves list of webhooks. operationId: ListWebhooks parameters: - name: limit in: query description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. schema: maximum: 50 minimum: 1 type: integer description: Maximum number of items to return in a single page. Must be between 1 and 50. Defaults to 10 if not specified. default: 10 - name: after in: query description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. schema: maxLength: 2000 type: string description: Pagination cursor for fetching the next page of results. Set this to the 'next' cursor value from a previous response to continue paginating forward. nullable: true - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: type: array items: $ref: "#/components/schemas/Webhook" description: The list of items in the response nullable: true pagination: type: object properties: count: type: integer description: Number of items returned in the current page. next: type: string description: Cursor pointing to the next page of results. Use this value as the 'after' query parameter in your next request to fetch the following page. If null, you have reached the end of the result set. nullable: true description: The pagination info associated with the response post: tags: - Webhook summary: Create Webhook description: Create a new webhook with configuration for target URL, events, headers, and security. operationId: CreateWebhook parameters: - name: Idempotency-Key in: header description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. required: true schema: maxLength: 64 type: string description: This header is used to uniquely identify a logical request, ensuring that it is not processed more than once during retries. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: CreateWebhook required: - name - url - apiRelease - events type: object properties: name: maxLength: 100 minLength: 1 type: string description: Human-readable name for the webhook configuration. example: My Ecommerce Webhook url: maxLength: 255 type: string description: Target URL that will receive webhook event payloads. enabled: type: boolean description: Flag indicating if the webhook should be active upon creation. default: true apiRelease: enum: - caph - siriusb type: string description: Defines the target API release for this webhook. A release represents a stable snapshot of the API schema. Ensures the webhook receives the latest object schema for a given release cycle. default: caph events: maxItems: 100 minItems: 1 uniqueItems: true type: array items: type: string description: List of event types that should trigger this webhook. nullable: true headers: maxProperties: 10 type: object additionalProperties: type: string description: Optional HTTP headers to include in outbound webhook requests. nullable: true alertEmails: maxItems: 2 uniqueItems: true type: array items: type: string description: Optional email addresses to notify on repeated delivery failures. nullable: true verificationMethod: required: - type type: object oneOf: - title: HMAC SHA256 required: - type - secret type: object properties: type: enum: - HS256 type: string description: Indicates the use of HMAC (HS256) as the signature verification method. secret: maxLength: 256 minLength: 32 type: string description: The shared secret used to compute and verify the HMAC signature. additionalProperties: false - title: ECDSA SHA256 required: - type type: object properties: type: enum: - ES256 type: string description: Indicates the use of ECDSA (ES256) as the signature verification method. publicKey: type: string description: The ECDSA public key used to verify the webhook signature. It is a a PEM-encoded key on the NIST P-256 (prime256v1 / secp256r1) curve. readOnly: true additionalProperties: false properties: type: enum: - ES256 - HS256 type: string description: The type of verification method in use. Either 'HS256' for HMAC or 'ES256' for ECDSA. description: Method to be use to verify the integrity of incoming webhook requests. nullable: true metadata: maxProperties: 64 type: object description: Custom metadata for tagging or annotating this webhook. nullable: true additionalProperties: false description: Create a new webhook with configuration for target URL, events, headers, and security. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Webhook" /v1/webhooks/{id}: delete: tags: - Webhook summary: Delete Webhook description: Delete a webhook by its ID. This action is irreversible. operationId: DeleteWebhook parameters: - name: id in: path description: Unique identifier of the webhook to delete. required: true schema: pattern: ^whk-.*$ type: string description: Unique identifier of the webhook to delete. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation get: tags: - Webhook summary: Get Webhook description: Retrieve details of a specific webhook by its ID. operationId: GetWebhook parameters: - name: id in: path description: Unique identifier of the webhook to retrieve. required: true schema: pattern: ^whk-.*$ type: string description: Unique identifier of the webhook to retrieve. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Webhook" patch: tags: - Webhook summary: Update Webhook description: Partially update an existing webhook's configuration and behavior. operationId: UpdateWebhook parameters: - name: id in: path description: Unique identifier of the webhook to update. required: true schema: pattern: ^whk-.*$ type: string description: Unique identifier of the webhook to update. - name: Monime-Version in: header description: Specifies which version of the Monime API will handle this request. schema: enum: - caph.2025-08-23 - caph.2025-06-20 type: string description: Specifies which version of the Monime API will handle this request. nullable: true - name: Monime-Space-Id in: header description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. required: true schema: maxLength: 64 pattern: ^spc-.*$ type: string description: The value is the tenancy parameter that Monime uses to determine which space the request is intended for. requestBody: content: application/json: schema: title: UpdateWebhook type: object properties: name: maxLength: 100 minLength: 1 type: string description: Updated name for the webhook. nullable: true url: maxLength: 255 type: string description: New URL to send webhook requests to. nullable: true enabled: type: boolean description: Enable or disable the webhook. nullable: true apiRelease: enum: - caph - siriusb type: string description: Updated API release name for webhook payloads. nullable: true events: maxItems: 100 minItems: 1 uniqueItems: true type: array items: type: string description: Updated list of events that trigger the webhook. nullable: true headers: maxProperties: 10 type: object additionalProperties: type: string description: Updated HTTP headers to include in webhook requests. nullable: true alertEmails: maxItems: 2 uniqueItems: true type: array items: type: string description: Updated alert email list for delivery failures. nullable: true metadata: maxProperties: 64 type: object description: Updated custom metadata for the webhook. nullable: true additionalProperties: false description: Partially update an existing webhook's configuration and behavior. responses: "200": description: OK content: application/json: schema: type: object properties: success: type: boolean description: Represents the status of the query operation, confirming if it was successful. This field is always true messages: type: array items: { } description: Contains a list of messages providing relevant information or feedback related to the query or operation result: $ref: "#/components/schemas/Webhook" components: schemas: Bank: title: Bank type: object properties: providerId: type: string description: The provider ID for the momo as assigned by Monime. example: slb004 name: type: string description: The name of the bank. example: Guarantee Trust Bank country: type: string description: The country of the bank. example: SL status: type: object properties: active: type: boolean description: Whether or not this bank is active within Monime. description: The status of the bank's operations within monime'. featureSet: type: object properties: payout: type: object properties: canPayTo: type: boolean description: Whether or not Monime can pay out to an account in the bank. schemes: type: array items: type: string description: The supported payout schemes of the bank. nullable: true metadata: type: object additionalProperties: type: string description: Further metadata describing this bank's payout feature. nullable: true description: The bank's payout feature information. payment: type: object properties: canPayFrom: type: boolean description: Whether or not Monime can accept payment from an account in the bank. schemes: type: array items: type: string description: The supported payment schemes of the bank. nullable: true metadata: type: object additionalProperties: type: string description: Further metadata describing this bank's payment feature. nullable: true description: The bank's payment feature information. kycVerification: type: object properties: canVerifyAccount: type: boolean description: Whether or not Monime can verify an account's KYC' in the bank. metadata: type: object additionalProperties: type: string description: Further metadata describing this bank's KYC verification feature. nullable: true description: The bank's KYC verification feature information. description: The set of Monime features that the bank supports.' createTime: type: string description: The time the bank's support was added. format: date-time updateTime: type: string description: The last time the bank's support was updated. format: date-time nullable: true CheckoutSession: title: Checkout Session type: object properties: id: type: string description: Unique identifier of the checkout session. name: type: string description: Title or label for the checkout session. Used for display in customer-facing UIs. status: enum: - pending - cancelled - expired - completed type: string description: |- **Status** of the checkout session. Possible values: - pending: Awaiting initiation. - completed: Checkout completed successfully. - cancelled: User cancelled the session. - expired: Session expired due to inactivity. orderNumber: type: string description: Internally generated order number that uniquely identifies the payment associated to this checkout session. nullable: true reference: type: string description: Optional external reference identifier (e.g., order ID) used to link this session with the developer’s backend system. nullable: true description: type: string description: Optional long-form description explaining the purpose or context of the checkout session. nullable: true redirectUrl: type: string description: The URL where the customer should be redirected to begin the checkout session. This is typically a hosted checkout page managed by Monime. cancelUrl: type: string description: The URL to redirect the customer to if they cancel the checkout process before completing payment. This typically returns the user to your site or app with context about the cancellation. format: url successUrl: type: string description: The URL to redirect the customer to after successfully completing the checkout. Typically used to confirm the order or show a success message on your site or app. format: url lineItems: type: object properties: data: type: array items: type: object oneOf: - title: Custom Item (User Defined) required: - name - price type: object properties: type: enum: - custom type: string description: Type of line item. This must be set to 'custom'. id: type: string description: Unique internal identifier for this line item. This is generated by the system and cannot be provided by the user. Unique across all checkout sessions. readOnly: true name: maxLength: 100 type: string description: Name of the product or service represented by this line item. price: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Monetary value representing the price per unit of this item. quantity: maximum: 100000 minimum: 1 type: integer description: Number of units being purchased. Must be between 1 and 100,000. default: 1 reference: maxLength: 100 type: string description: External system-provided identifier for this line item, used for cross-system tracking, reconciliation, or referencing purposes. Must be unique within the checkout session. If not provided, a unique identifier will be generated. nullable: true description: maxLength: 100 type: string description: Optional description providing additional details about the item. nullable: true images: maxItems: 3 uniqueItems: true type: array items: type: string description: A URL description: Up to 3 image URLs visually representing this item. nullable: true additionalProperties: false description: A user-defined line item with specified name, quantity, and price. properties: type: enum: - custom type: string default: custom description: Array of individual line items representing products or services included in the checkout session. Each item specifies details like name, quantity, and unit price. nullable: true description: Container for the list of items included in the checkout session. Each item represents a product or service being purchased, along with its quantity and pricing. financialAccountId: type: string description: Financial account where the collected funds were settled. Defaults to the main account if omitted. nullable: true brandingOptions: type: object properties: primaryColor: maxLength: 255 type: string description: "Primary brand color in hex format (e.g., '#00FF00') used to customize the appearance of the checkout interface." additionalProperties: false description: Visual customization options for the checkout UI, such as color schemes or logos. nullable: true expireTime: type: string description: The timestamp at which the checkout session will automatically expire. format: date-time createTime: type: string description: Timestamp indicating when the checkout session was created. format: date-time ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: "**Ownership graph** that traces the origin of this checkout session, enabling deep auditability and understanding of its creation context." nullable: true metadata: maxProperties: 64 type: object description: Structured key-value metadata for tagging the session with contextual or custom information. nullable: true description: | A **Checkout Session** represents a Monime-hosted payment flow where customers complete purchases for a defined set of items. It is designed for **e-commerce** and **embedded payment scenarios** where merchants want a simple, secure way to accept payments across multiple channels without building the payment UI themselves. Unlike direct API-based payments, a Checkout Session aggregates **multiple payment methods** — such as **Mobile Money**, **Card**, and **Bank Transfers** — and presents them in a unified checkout experience. --- ### Use Cases - **E-Commerce Cart Checkout** A customer selects items in a cart. The merchant creates a Hosted Checkout Session, and Monime presents Mobile Money, Card, and Bank options in one unified flow. - **Embedded SaaS Billing** A SaaS platform embeds a Hosted Checkout Session to bill users. Customers pick their preferred channel (Card, MoMo, Bank), and once payment is confirmed, the SaaS receives `checkout_session.completed`. - **QR or Link-Based Payment** Merchants generate a checkout session link or QR code. Customers open the hosted page and choose any available payment method. - **Fallback Across Methods** If a user’s card payment fails, they can seamlessly retry with Mobile Money — all within the same checkout session. CoreresourcesParentOwningObject: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false Country: title: Country type: object properties: code: type: string description: The ISO 3166-1 alpha-2 country code. example: SL name: type: string description: The name of the country. example: Sierra Leone currency: type: object properties: code: type: string description: The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. example: SLE unit: type: string description: The subunit for the currency. example: cent unitLength: type: integer description: The unit length for the currency's subunit. example: 2 description: The default currency object of the country. supportedCurrencies: type: array items: type: string description: The list supported currency codes in ISO 4217 format in that country. It includes the default currency's code. nullable: true example: - SLE FinancialAccount: title: Financial Account type: object properties: id: type: string description: Unique identifier of the financial account. uvan: type: string description: __UVAN__ (Universal Virtual Account Number) — a unique, checksum alias used for secure, error-resistant inbound transfers across Monime and external providers. name: type: string description: Human-readable label for the financial account, such as 'Main Wallet' or 'Operations Reserve'. currency: type: string description: ISO 4217 currency code (e.g., 'SLE', 'USD') indicating the account's currency. reference: type: string description: Optional external reference ID for this account (e.g., the account's identifier in your internal system). Must be unique across accounts. Useful for reconciliation, tracking, or cross-system mapping. nullable: true description: type: string description: Optional description of the account's purpose or usage context. nullable: true balance: type: object properties: available: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: The amount of funds currently available for use or withdrawal. description: Current available balance of the financial account. nullable: true createTime: type: string description: Timestamp when the financial account was created. format: date-time updateTime: type: string description: Timestamp when the financial account was last modified. format: date-time nullable: true metadata: maxProperties: 64 type: object description: Updated metadata for storing additional context about the account. nullable: true description: | A **Financial Account** is a logical wallet or ledger unit that holds and tracks money for a user or entity. It represents a balance in a specific currency and serves as the foundation for all money movement within Monime. Each account is uniquely identifiable, has a human-friendly display name (e.g., **“Main Wallet”**), and is always tied to a single currency such as **SLE** or **USD**. In APIs, Financial Accounts act as the **source** or **destination** of funds for transfers, payouts, or collections. --- ### Use Cases - **Embedded Finance** With **Embedded Finance on Monime**, fintechs can create **dynamic wallet accounts** hosted directly on Monime’s infrastructure. Incoming collections from **cards, Mobile Money, or banks** are deposited into these accounts, which can then be used for **spend, cash-out, or peer-to-peer (P2P) transfers** by moving funds between accounts. *Example* : Payments received through **Checkout Sessions** are credited to a user’s wallet account and can later be transferred to another user’s wallet, enabling seamless P2P experiences. - **Settlement Account** Businesses separate collected funds from the account used to settle merchants or subsidiaries. *Example*: A PSP routes daily Mobile Money collections into a **Settlement Account** before initiating payouts. - **Disbursement Float** A pre-funded account maintained to ensure outgoing transfers and payouts can always be covered. *Example*: Your platform maintains a **Disbursement Float** account; when it runs low, you top it up via an Internal Transfer. - **Dedicated Currency Account** Multi-currency platforms maintain one account per supported currency. *Example*: A customer has both a **USD Account** and an **SLE Account**, ensuring currency isolation and easier reconciliation. --- FinancialTransaction: title: Financial Transaction type: object properties: id: type: string description: Unique identifier for this financial transaction. type: enum: - credit - debit type: string description: Indicates whether the transaction is a 'credit' or 'debit'. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: The monetary value involved in this transaction. timestamp: type: string description: The exact time when this transaction was recorded. format: date-time reference: type: string description: Internal identifier associated with this transaction for reconciliation purposes. nullable: true financialAccount: title: Financial Account type: object properties: id: type: string description: "**Account ID**: Unique identifier of the financial account affected by this transaction." readOnly: true balance: title: Financial Account Balance type: object properties: after: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: "**Post-transaction balance**: The available balance of the account immediately after this transaction completed." additionalProperties: false description: "**Account balance**: Balance snapshot of the account immediately after the transaction, if available." nullable: true readOnly: true additionalProperties: false description: The account that was debited or credited as part of this transaction, including post-transaction balance snapshot. originatingReversal: type: object properties: originTxnId: type: string description: The ID of the transaction that was reversed by this transaction originTxnRef: type: string description: The reference of the transaction that was reversed by this transaction additionalProperties: false description: Indicates that this transaction was created as the result of a reversal action. The transaction itself represents the reversal of fund. nullable: true originatingFee: type: object properties: code: type: string description: The type of charge applied. additionalProperties: false description: Indicates that this transaction was created as the result of an internal platform fee. The transaction itself represents the fee. nullable: true ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: Traceability structure showing which resource or object owns or initiated this transaction. nullable: true metadata: maxProperties: 64 type: object description: Custom structured key-value pairs associated with this transaction for additional context. nullable: true description: | A **Financial Transaction** represents a movement of funds that affects a Financial Account, either as a **credit** (inflow) or a **debit** (outflow). Every transaction adjusts the balance of an account and provides a full audit trail of how money moves within Monime. --- ### Use Cases - **Customer Payment Recording** A user pays SLE 500 into your platform via Mobile Money. *Result*: A **credit transaction** is posted to a financial account of the space; this transaction is linked to a **Payment** created from the originating **Payment Code**. - **Fee Deduction** A SLE 50 fee is charged for a payout of SLE 1,000. *Result*: - A **debit transaction** of SLE 1,000 from the payout account. - A **debit transaction** of SLE 50 from the payout account. - **Internal Transfer** Moving SLE 10,000 from a Settlement Account to a Disbursement Float. *Result*: - A **debit transaction** on the Settlement Account. - A **credit transaction** on the Disbursement Float Account. - **Refund or Reversal** If a payment is refunded, a corresponding **debit transaction** reduces the merchant’s balance. *Result*: The audit trail shows both the original credit and the refund debit, linked together. --- InternalTransfer: title: Internal Transfer type: object properties: id: type: string description: Unique identifier for this transfer object. status: enum: - pending - processing - failed - completed type: string description: |- Current status of the transfer: - 'pending': Created but not yet processed. - 'processing': Currently being processed. - 'failed': Transfer failed. - 'completed': Transfer successfully completed. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Amount to be transferred from the source to the destination account. sourceFinancialAccount: type: object properties: id: type: string description: Unique identifier for the financial account additionalProperties: false description: Source financial account from which the funds will be debited. destinationFinancialAccount: type: object properties: id: type: string description: Unique identifier for the financial account additionalProperties: false description: Destination financial account to which the funds will be credited. financialTransactionReference: type: string description: Reference to the resulting financial transaction(s), if the transfer was completed. nullable: true description: type: string description: Human-readable description of the transfer. Useful for developer context, admin UIs, or logs. nullable: true failureDetail: type: object properties: code: enum: - unknown - fund_insufficient type: string description: |- **Error code** representing the reason this transfer failed. Possible values include: - **unknown**: Generic or unclassified failure. - **fund_insufficient**: Not enough funds in the source account. message: type: string description: "**Optional explanation** providing more context about the failure. Useful for developer logs or end-user display." nullable: true description: Failure details, populated only when the transfer status is 'failed'. nullable: true ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: Ownership chain that shows which object or action triggered the transfer — enabling audit traceability. nullable: true createTime: type: string description: Timestamp indicating when the transfer was created. format: date-time updateTime: type: string description: Timestamp of the most recent update to the transfer. format: date-time nullable: true metadata: maxProperties: 64 type: object description: Custom metadata for tagging this transfer with additional context or identifiers. nullable: true description: |- An **Internal Transfer** is the movement of funds between financial accounts that exist within the same Space. Unlike payouts or customer payments that cross external networks (banks, card schemes, or mobile money), an Internal Transfer happens entirely within Monime’s ledger. It is the mechanism for shifting balances between accounts you own or manage, and it never leaves your organization’s financial boundary. --- ### Use Cases - **Wallet Top-ups** A customer wallet account can be funded by moving money from your master operational account. *Example*: A user adds **SLE 1,000** to their app wallet. Your backend issues an Internal Transfer from your **Operational Float** to the user’s **Wallet Account**. - **Inter-Account Routing** Businesses often separate funds for accounting clarity (e.g., “Card Collections,” “Mobile Money Collections,” “Bank Transfers”). *Example*: At the end of each day, you route all **Mobile Money collections** into a central **Settlement Account**. - **Internal Settlements** Useful when multiple departments or sub-entities operate under one Space. *Example*: Subsidiary A owes Subsidiary B **SLE 50,000**. Instead of moving money through the banking system, you perform an Internal Transfer inside your Monime ledger. - **Float Management** Fintechs maintain float across accounts to support disbursements. *Example*: If your **Disbursement Account** is running low, you move funds from your **Collection Account** to top it up before processing payouts. --- Momo: title: Momo type: object properties: providerId: type: string description: The provider ID for the momo as assigned by Monime. example: m17 name: type: string description: The name of the momo. example: Orange Money country: type: string description: The country of the momo. example: SL status: type: object properties: active: type: boolean description: Whether or not this momo is active within Monime. description: The status of the momo's operations within monime'. featureSet: type: object properties: payout: type: object properties: canPayTo: type: boolean description: Whether or not Monime can pay out to an account in the momo. schemes: type: array items: type: string description: The supported payout schemes of the momo. nullable: true metadata: type: object additionalProperties: type: string description: Further metadata describing this momo's payout feature. nullable: true description: The momo's payout feature information. payment: type: object properties: canPayFrom: type: boolean description: Whether or not Monime can accept payment from an account in the momo. schemes: type: array items: type: string description: The supported payment schemes of the momo. nullable: true metadata: type: object additionalProperties: type: string description: Further metadata describing this momo's payment feature. nullable: true description: The momo's payment feature information. kycVerification: type: object properties: canVerifyAccount: type: boolean description: Whether or not Monime can verify an account's KYC' in the momo. metadata: type: object additionalProperties: type: string description: Further metadata describing this momo's KYC verification feature. nullable: true description: The momo's KYC verification feature information. description: The set of Monime features that the momo supports.' createTime: type: string description: The time the momo's support was added. format: date-time updateTime: type: string description: The last time the momo's support was updated. format: date-time nullable: true Payment: title: Payment type: object properties: id: type: string description: Unique identifier for the payment object. status: enum: - pending - processing - completed type: string description: |- Current status of the payment. Can be one of: - pending: Created but not yet processed. - processing: Payment is currently being processed. - completed: Payment was successfully completed. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Total payment amount requested from the payer. channel: type: object oneOf: - title: Bank type: object properties: type: enum: - bank type: string description: "**Type** of channel. This is always set to 'bank' for Bank payments." provider: type: string description: "**Provider code** for the bank or financial institution facilitating the payment." reference: maxLength: 64 type: string description: "**Bank transaction reference** assigned by the provider when the payment was made. Often used for reconciliation and tracing within the bank’s system." accountNumber: type: string description: "**Bank account number** used to initiate the payment. This is usually masked to protect user privacy." fingerprint: type: string description: "**Hashed account number**. A hashed identifier derived from the account number. Enables repeat usage recognition, fraud analysis, and loyalty program tracking — without exposing raw account number." metadata: maxProperties: 64 type: object description: "**Optional metadata** for attaching contextual information relevant for audits, reconciliation, or internal processing." nullable: true - title: Card type: object properties: type: enum: - card type: string description: "**Type** of channel. This is always set to 'card' for card-based payments." scheme: enum: - mastercard - visa type: string description: "**Card scheme** such as 'visa' or 'mastercard'." last4: maxLength: 4 type: string description: "**Last four digits** of the card number used. Helpful for user recognition and support." fingerprint: type: string description: "**Card fingerprint**. A hashed identifier derived from the card number. Enables repeat usage recognition, fraud analysis, and loyalty program tracking — without exposing the card number." metadata: maxProperties: 64 type: object description: "**Optional metadata** for attaching contextual information useful for audit trails or internal reconciliation." nullable: true - title: Digital Wallet type: object properties: type: enum: - wallet type: string description: "**Type** of channel. This is always set to 'wallet' for digital wallet payments." provider: type: string description: "**Wallet provider** code or identifier." reference: maxLength: 64 type: string description: "**Wallet transaction reference** assigned when the payment was executed. Often used for reconciliation and user support." walletId: type: string description: "**Wallet identifier** representing the source wallet involved in the transaction. Usually masked or obfuscated." fingerprint: type: string description: "**Hashed wallet identifier**. Enables secure correlation, repeat-usage detection, and loyalty programs — while preserving privacy." metadata: maxProperties: 64 type: object description: "**Optional metadata** for attaching contextual or audit-related details about the wallet transaction." nullable: true - title: Mobile Money type: object properties: type: enum: - momo type: string description: "**Type** of channel. This is always set to 'momo' for Mobile Money payments." provider: type: string description: "**Provider code** for the Mobile Money operator (e.g., 'm17' for Orange Money) that is facilitating the payment." reference: maxLength: 64 type: string description: "**Network transaction reference** assigned by the Mobile Money operator when the payment was made. This is often visible to the payer and useful for tracing the transaction in the provider’s system." phoneNumber: type: string description: "**Phone number (MSISDN)** of the Mobile Money wallet that initiated the payment. This is usually masked for privacy and security." fingerprint: type: string description: "**Hashed phone number**. A hashed identifier derived from the phone number. Enables repeat usage recognition, fraud analysis, and loyalty program tracking — without exposing the raw phone number." metadata: maxProperties: 64 type: object description: "**Optional metadata** for attaching extra contextual information useful for audit logs, reconciliation, or internal tracking." nullable: true properties: type: enum: - bank - card - momo - wallet type: string description: |- **Type** of payment channel used to process the payment. Supported values: - bank: Bank account payments - card: Debit or credit card payments - momo: Mobile money payments - wallet: Digital wallet payments. description: Payment channel details (e.g., Mobile Money, Bank, Card) used to complete this payment. name: type: string description: Optional label for identifying or grouping the payment. Useful in dashboards or reporting tools. nullable: true reference: type: string description: External reference to associate this payment with a system outside Monime (e.g., an order ID or invoice number). nullable: true orderNumber: type: string description: Monime Order Number — internal order identifier associated with this payment. Used to track payments initiated from an embedded commerce or checkout session. nullable: true financialAccountId: type: string description: ID of the destination financial account where the funds will be credited after a successful payment. nullable: true financialTransactionReference: type: string description: Reference to the resulting financial transaction(s), if the payment was successful. nullable: true fees: type: array items: type: object properties: code: type: string description: The type of fee applied. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: The amount of the fee that was applied for the payment. metadata: maxProperties: 64 type: object description: Further metadata describing the fee. nullable: true description: List of applied fees associated with this payment, such as platform or processing fees. nullable: true createTime: type: string description: Timestamp indicating when the payment was created. format: date-time updateTime: type: string description: Timestamp indicating when the payment was last updated. format: date-time nullable: true ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: Ownership chain showing how this payment was initiated — enabling full audit traceability. nullable: true metadata: maxProperties: 64 type: object description: Custom metadata attached to the payment nullable: true description: |- A **Payment** represents a customer payment made through Monime’s platform. It captures high-level information about the user-initiated payment, including the **amount**, **status**, **channel** (e.g., **Mobile Money**, **Card**, **Bank**), associated **order**, **fees applied**, and links to **downstream financial transactions**. The **Payment** is a business object — the single record developers and merchants interact with when tracking or reconciling user payments. It should not be confused with **Financial Transactions**, which are lower-level, fine-grained ledger entries. In fact, **one Payment usually generates multiple Financial Transactions** — for example: - A **credit** of the received funds into the merchant’s account. - One or more **debits** representing platform charges or processing fees. PaymentCode: title: Payment Code type: object properties: id: type: string description: Unique identifier of the payment code object. mode: enum: - one_time - recurrent type: string description: |- 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. status: enum: - pending - cancelled - processing - expired - completed type: string description: "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)." name: type: string description: Optional human-readable name for the payment code, useful for labeling or tracking. nullable: true example: Home EDSA Meter Top-up amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Amount charged per use of the payment code. For 'recurrent' mode, this applies to each payment instance. enable: type: boolean description: Indicates whether the payment code is currently enabled for use. expireTime: type: string description: The time at which the payment code expires, provided the code is still pending. format: date-time customer: type: object properties: name: maxLength: 100 type: string description: Optional name of the customer associated with the payment code. Displayed in the USSD prompt for contextual reference. nullable: true example: Musa Kamara additionalProperties: false description: Optional customer information linked to this payment code. Often used for USSD or receipt context. nullable: true ussdCode: type: string description: The USSD dial string customer(s) can use to initiate a payment for this code. reference: type: string description: Reference string associated with the payment code. Useful for transaction tagging or reconciliation. nullable: true authorizedProviders: type: array items: enum: - m17 - m18 type: string description: The ID of the MOMO as identified by Monime. E.g. m17 to denote Orange Money SL description: List of mobile money providers permitted to process payments using this code. nullable: true example: - m17 - m18 authorizedPhoneNumber: type: string description: MSISDN of the mobile money account exclusively allowed to use this code. Other users will be rejected. recurrentPaymentTarget: type: object properties: expectedPaymentCount: minimum: 1 type: integer description: Minimum expected number of payments after which the recurrent payment code may be considered complete. Optional. nullable: true example: 10 expectedPaymentTotal: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Minimum total amount to be collected before the recurrent payment code is considered complete. Optional. additionalProperties: false description: Target payment count or amount that determines when a recurrent payment code is considered complete. nullable: true financialAccountId: type: string description: ID of the financial account where collected funds will be settled. Defaults to the main account if not provided. nullable: true processedPaymentData: type: object properties: amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false orderId: type: string paymentId: type: string orderNumber: type: string channelData: type: object properties: providerId: type: string accountId: type: string reference: type: string financialTransactionReference: type: string metadata: maxProperties: 64 type: object description: This holds key-value pairs, where both the keys and values are strings not exceeding 64 and 100 characters respectively. This allows for flexible and descriptive tagging or additional information to be associated with the object. nullable: true description: The data of the payment that was processed for this payment code. This field is available only during the 'payment_code.processed' webhook event. nullable: true createTime: type: string description: Timestamp indicating when the payment code was created. format: date-time updateTime: type: string description: Timestamp indicating when the payment code was last updated. format: date-time nullable: true ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: Full ownership graph tracing the origin of this payment code objects across multiple objects. nullable: true metadata: maxProperties: 64 type: object description: Custom metadata attached to the payment code for storing business-specific context or tags. nullable: true description: |- A **Payment Code** is a programmable, short-lived token that allows users to collect payments from others. It is especially useful in **USSD-like** or **QR-based** flows, where the payer enters or scans a code to complete a transaction. Payment Codes provide flexibility for both **one-time** and **recurrent** collections, with configurable restrictions and targets. --- ### Use Cases - **USSD Payment Collection** A merchant generates a Payment Code and displays it in USSD. Customers enter the code to make payments. *Example*: A vendor creates a one-time code for **SLE 50** which a customer redeems via their mobile money wallet. - **QR Code at Point of Sale** The Payment Code is encoded as a QR displayed at checkout. Customers scan the QR to pay. *Example*: A shop generates a QR-based Payment Code for **SLE 200**, which is redeemed on the spot. - **Recurring Subscription Collection** A fitness center issues a recurrent Payment Code for monthly fees. *Example*: The code accepts up to **12 payments** of **SLE 500** each, after which it auto-completes. - **Targeted Collection** Restrict a Payment Code to a specific MSISDN or provider. *Example*: Only customers on **Orange Money** with a registered number can redeem the code. --- Payout: title: Payout type: object properties: id: type: string description: Unique identifier for the payout object. status: enum: - pending - processing - completed - failed type: string description: |- Current status of the payout: - 'pending': Created but not yet scheduled.- 'processing': Currently being processed. - 'completed': Successfully completed. - 'failed': Processing failed or rejected. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: Amount to be paid to the destination provider account. source: required: - financialAccountId type: object properties: financialAccountId: type: string description: ID of the financial account where the funds is disbursed from. transactionReference: type: string description: Internal Monime reference for the debit transaction from the source account. This is null until the payout is processed. nullable: true readOnly: true additionalProperties: false description: SourceAccount of funds, including debit account and transaction details. Can be null if the default account is used. nullable: true destination: required: - type - providerId type: object oneOf: - title: Bank required: - type - providerId - accountNumber type: object properties: type: enum: - bank type: string description: "Fixed value: 'bank'. Indicates this is a bank payout destination." providerId: enum: - slb001 - slb004 - slb007 type: string description: Identifier of the bank or financial service provider. accountNumber: type: string description: The bank account number to which the payout will be sent. transactionReference: type: string description: Reference or identifier of the underlying transaction that credited the recipient’s bank account. Will be 'null' if the payout is not 'completed'. nullable: true readOnly: true additionalProperties: false - title: Mobile Money required: - type - providerId - phoneNumber type: object properties: type: enum: - momo type: string description: "Fixed value: 'momo'. Indicates this is a mobile money (MoMo) payout destination." providerId: enum: - m17 - m18 type: string description: Identifier of the mobile money provider. phoneNumber: type: string description: The mobile number (MSISDN) of the recipient's mobile money account. transactionReference: type: string description: Reference or ID of the transaction that credited the recipient’s mobile money wallet. Set to 'null' if the payout is not 'completed'. nullable: true readOnly: true additionalProperties: false - title: Digital Wallet required: - type - providerId type: object properties: type: enum: - wallet type: string description: "Fixed value: 'wallet'. Indicates this is a digital wallet payout destination." providerId: enum: - dw001 type: string description: Identifier of the digital wallet provider. walletId: type: string description: The ID of the recipient's wallet in the digital wallet ecosystem. transactionReference: type: string description: Reference or ID of the transaction that credited the recipient’s wallet. Set to null if the payout has not reached completed status. nullable: true readOnly: true additionalProperties: false properties: type: enum: - bank - momo - wallet type: string description: Specifies the type of destination account. Must be either 'bank', 'momo', or 'wallet'. description: Destination account details that will receive the payout. fees: type: array items: type: object properties: code: type: string description: The type of fee applied. amount: type: object properties: currency: type: string description: "The [3-letter](https://en.wikipedia.org/wiki/ISO_4217) ISO currency code. Currently supported: 'SLE'" value: type: integer description: The value representation in the currency's minor unit. E.g. For 1 Leone (SLE 1), the value should be 100, denoting cents, the minor unit. additionalProperties: false description: The amount of the fee that was applied on top of the payout amount. metadata: maxProperties: 64 type: object description: Further metadata describing the fee. nullable: true description: List of fees applied during payout processing. Empty if not yet processed. nullable: true failureDetail: type: object properties: code: enum: - unknown - fund_insufficient - authorization_failed - provider_unknown - provider_account_blocked - provider_account_missing - provider_account_quota_exhausted type: string description: |- **Error code** indicating why the payout failed. Possible values include: - unknown: General or unclassified failure. - fund_insufficient: Source account lacks sufficient funds. - authorization_failed: Authorization failed or was denied. - provider_unknown: Unexpected error from the external provider. - provider_account_blocked: The destination provider account is blocked. - provider_account_missing: The destination provider account does not exist. - provider_account_quota_exhausted: Daily or per-transaction quota has been exceeded. message: type: string description: "**Human-readable message** providing more context about the failure. Useful for logs, dashboards, or client-facing error messages." description: Detailed information about the failure, if the payout status is 'failed'. nullable: true createTime: type: string description: Timestamp indicating when the payout object was created. format: date-time updateTime: type: string description: Timestamp indicating when the payout object was last updated. format: date-time ownershipGraph: title: OwnershipGraph type: object properties: owner: title: OwnershipObject type: object properties: id: type: string description: "**Unique ID** of the object instance that owns this entity." readOnly: true type: type: string description: "**Type of the object** that owns this entity. Examples include: 'internal_transfer', 'checkout_session', 'payment_code'." readOnly: true metadata: maxProperties: 64 type: object description: "**Arbitrary metadata** describing the owning object." nullable: true readOnly: true owner: $ref: "#/components/schemas/CoreresourcesParentOwningObject" additionalProperties: false description: "**Immediate object** that owns this entity. This is the direct originator or source object." readOnly: true additionalProperties: false description: Full ownership graph tracing the origin of this payout objects across multiple objects. nullable: true metadata: maxProperties: 64 type: object description: Optional metadata attached to the payout for additional context. nullable: true description: | A **Payout** is a disbursement of funds from a **Financial Account** to a designated destination such as a **Bank Account** or **Mobile Money Wallet**. It represents outbound money flows and is commonly used for **salary disbursements**, **vendor payments**, and **refunds** in automated workflows. Each payout records the **amount**, the **source account**, the **destination details**, and optional **metadata**. It also tracks **status changes** throughout its lifecycle and may include **provider-specific references** for reconciliation. ProviderKYC: title: Provider KYC type: object properties: account: type: object properties: id: type: string description: Unique identifier of the account in the provider's system. name: type: string description: Display name associated with the account, if different from the holder's name. holderName: type: string description: Full name of the account holder as registered with the provider. metadata: maxProperties: 64 type: object description: Additional metadata of the account. nullable: true description: The information of the account in the provider's ecosystem. provider: type: object properties: id: type: string description: The id of the provider as assigned by Monime. example: m17 type: enum: - momo - bank - wallet type: string description: The type of the provider. example: momo name: type: string description: The name of the provider example: Orange Money description: The information of the financial provider hosting the account. description: | A **Provider KYC** object represents the **know-your-customer (KYC) information** retrieved from a financial provider (e.g., Mobile Money operator, Bank). --- UssdOtp: title: USSD OTP type: object properties: id: type: string description: "**Unique identifier** for this USSD OTP session." status: enum: - pending - verified - expired type: string description: |- **Status** of the OTP session. One of: - pending: Awaiting verification. - verified: OTP was successfully confirmed. - expired: OTP expired before verification. dialCode: type: string description: "**USSD dial code** that the user should dial (e.g., \\*715\\*12345#) to initiate the OTP verification." authorizedPhoneNumber: type: string description: "**Authorized phone number** (MSISDN) associated with this OTP. May be masked for privacy." verificationMessage: maxLength: 255 type: string description: "**Message** shown to the user after successful verification, typically rendered on the USSD interface." nullable: true createTime: type: string description: Timestamp when this OTP session was created. format: date-time expireTime: type: string description: "**Expiration time** after which the OTP becomes invalid." format: date-time metadata: maxProperties: 64 type: object description: "**Optional metadata** for attaching additional context or tracking info to this OTP session." nullable: true description: | A **USSD OTP** represents a **one-time passcode session** used to authenticate users through a USSD dial flow. It enables secure, **phone-bound verification**, ensuring that the person interacting via USSD is the legitimate account holder. In addition to generating and validating the OTP, the flow may include **user-facing feedback messages** that confirm the process. --- Webhook: title: Webhook type: object properties: id: type: string description: Unique identifier of the webhook object. name: type: string description: Human-readable name for the webhook configuration. Useful for identifying its purpose in dashboards or logs. example: My Ecommerce Webhook url: type: string description: Publicly accessible URL that will receive event POST requests from this webhook. enabled: type: boolean description: Indicates whether the webhook is currently enabled. If false, events will not be sent. events: type: array items: type: string description: List of event types (e.g., 'payment.created') that will trigger this webhook. nullable: true apiRelease: enum: - caph - siriusb type: string description: The release identifier of the API expected by this webhook. Ensures the webhook receives the latest object schema for a given release cycle. verificationMethod: required: - type type: object oneOf: - title: HMAC SHA256 required: - type - secret type: object properties: type: enum: - HS256 type: string description: Indicates the use of HMAC (HS256) as the signature verification method. secret: maxLength: 256 minLength: 32 type: string description: The shared secret used to compute and verify the HMAC signature. additionalProperties: false - title: ECDSA SHA256 required: - type type: object properties: type: enum: - ES256 type: string description: Indicates the use of ECDSA (ES256) as the signature verification method. publicKey: type: string description: The ECDSA public key used to verify the webhook signature. It is a a PEM-encoded key on the NIST P-256 (prime256v1 / secp256r1) curve. readOnly: true additionalProperties: false properties: type: enum: - ES256 - HS256 type: string description: The type of verification method in use. Either 'HS256' for HMAC or 'ES256' for ECDSA. description: Method used to verify the integrity of incoming webhook requests. nullable: true headers: type: object additionalProperties: type: string description: Optional HTTP headers to include in webhook requests. Useful for passing authentication or context info. nullable: true alertEmails: type: array items: type: string description: Email addresses to notify when delivery to this webhook repeatedly fails. nullable: true createTime: type: string description: Timestamp when the webhook was created. format: date-time updateTime: type: string description: Timestamp when the webhook was last updated. format: date-time nullable: true metadata: maxProperties: 64 type: object description: Custom metadata for storing additional context or labels for this webhook. nullable: true description: | A **Webhook** is a user-defined HTTP endpoint that Monime invokes with a **POST request** whenever specific events occur, such as **`payment.completed`** or **`payout.failed`**. Webhooks allow you to receive real-time notifications and integrate Monime’s event stream directly into your own systems. ### Use Cases - **Realtime Payment Updates** Receive an immediate notification when a payment succeeds and update your user’s dashboard without polling the API. - **Automated Payout Reconciliation** Trigger accounting workflows or ERP system updates when a payout is marked as `completed` or `failed`. - **Fraud & Risk Monitoring** Stream payment events into your fraud detection system as they happen. --- securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: auth-scheme description: "Bearer HTTP authentication specified with the header Authorization: Bearer "