Create Payin

Payin is the primary Method for collecting funds from customers and depositing them into either the customer wallet or the Merchant's Payin wallet.

For more information about Payin, use Finmo’s Client Portal.

Finmo supports the following scenarios for collecting funds from end customers:

  • eCommerce Purchases: Merchants can accept payments through either the Direct API or Hosted Checkout Methods. Payment options include PUSH-DEBIT, where we create one-time or dynamic virtual accounts or PayIDs, requiring customers to transfer funds from their bank accounts. Alternatively, PULL-DEBIT Methods like Cards, E-Wallets, or Direct Debit can be used, where customers authenticate and complete the payment using their card details or bank accounts.

  • Wallet Top-ups: Finmo can issue a static Virtual Account or PayID for each registered customer. Customers can transfer funds to these Virtual Accounts as needed. Finmo provides real-time webhook notifications to merchants upon receipt of funds, which are settled according to your agreement with Finmo.

  • Recurring Payments: Merchants can request a payment token for CARD-ON-FILE purchases or an eMandate, such as a Direct Debit Authority, to periodically debit customer accounts.

To successfully perform a Payin via the Finmo platform, the following APIs are required:

Step 1: List all Payin-Methods by Currency & Country

  • This API retrieves all the Payin Methods supported for a specific country and currency.

Step 2: Get the required fields by Payin-Method

  • For example, when making a card payment, a merchant specifies the type of cards he’ll accept, likewise for Payin, an invoice reference is required to create and pass it through the API.

Step 3: Create the Payin

  • Pass the required fields for the Payin Method to create a Payin.

Step 4: Simulate Payin

  • To complete your simulation in the sandbox environment, run the Simulate Payin API.

Note: To collect funds in a customer's wallet, first create the customer and add a wallet to it. Funds collected in the customer's wallet are not settled in your account.

Payin Status & Webhook Notifications

Finmo will notify you about incoming funds or any changes to the status of a Payin object via webhooks. You can set up a static webhook listener URL through the dashboard, or you can provide a dynamic webhook URL in the Create Payin request.

  • Payin_CREATED: When a Payin is initiated, Finmo sends this webhook, and the Payin status updates to PENDING.

  • Payin_COMPLETED: This webhook is triggered when the customer’s payment has been successfully received and the funds have settled into Finmo’s bank account (or one of our network partner accounts). The Payin status updates to COMPLETED.

  • Payin_SUCCEEDED: This webhook is triggered when the customer’s payment is successfully processed by the payment provider, and the transaction is confirmed as successful. You can now proceed to fulfill the order. The Payin status updates to SUCCEEDED.

  • Payin_EXPIRED: If a Payin expires before the payment is completed, Finmo sends this webhook, and the Payin status updates to EXPIRED.

  • Payin_CANCELLED: If a Payin is cancelled (as indicated by an attribute set for each Payin Method and returned by the Get Required Fields by Payin Method API), Finmo sends this webhook, and the Payin status updates to CANCELLED.

When a customer attempts to make a partial payment against a PENDING Payin, the Finmo platform usually returns the funds to the customer. However, in some cases, the sender's bank or network provider may not support this return, and the funds must be accepted.

You can easily identify a partial payment versus a full payment through webhooks and by retrieving the Payin details. Look at the following two fields in the Payin_COMPLETED webhook:

  • paid_amount: This field shows the actual amount the customer paid for that Payin transaction.

  • is_partially_paid: This field is set to true if a partial payment was made.

Payin Types

Finmo supports various Payin types, representing the different ways a Payin can be created:

  • DIRECT_Payin: This Payin is created using the Create Payin API.

  • CHECKOUT_Payin: This Payin is created using the Hosted Checkout API.

  • VA_Payin: This Payin is created for collecting funds to an existing Virtual Account (VA).

  • TOPUP: This Payin is created for collecting funds to an existing Virtual Account (VA) associated with your Organization's Payin or Payout wallet.

  • FEES_PAYMENT: This Payin is created for collecting funds when making a payment against a Finmo invoice using an existing Virtual Account associated with your Organization Fee wallet.

Body Params
number
required

Transaction amount. The number of decimal place will be different for each currency according to ISO 4217

string
required

Transaction currency. It has to be a valid ISO 4217 currency code

string
required

Payin method name to be used for this Payin (For e.g. au_bank_npp)

payin_method_param
object
required

This is an optional field which may be required depending upon payin method. You will receive these params from Get Required Fields by Payin method API

uri

URL link that the page will be redirected in the case of success or failure. It is required only if advanced_redirect_url is not present

advanced_redirect_url
object
string

Fees Wallet ID(wallet_*)

string

Organization Payin Wallet ID (implicit) or customers Wallet ID. It is mandatory if customer has more than 2 linked wallets. If you dont provide anything in this field, it defaults to Payin wallet and funds will be credit to that wallet

string

Type of the PAYIN, defaults to DIRECT_PAYIN

string

Email of the recipient

string

Checkout ID (xo_*)

string

Transaction Description

string

Customer_id. Its useful in scenarios where a merchant wants to create a customer profile and save their card tokens for future transactions

string

A reference you can later use to identify this payment, such as an order number. Can only be alphanumeric and must be unique for Benefit.

metadata
object

Custom Data

int64

EPOCH timestamp at which the payment expires

uri

Custom webhook url for the payin. If it is not provided, webhook will be triggered to the endpoint configured in the Dashboard

Responses

Language
Credentials
Basic
base64
:
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json; charset=utf-8