Using Vipps
With the Vipps payment extension, you can initiate and collect both one-time and recurring payments. This is carried out through a custom front-end payment form integrated to the FinDock Payment API or by using FinDock Giving Pages and PayLinks.
Payments made through the Vipps mobile app are stored by FinDock as payments. However, the payment method the payer uses in the app can be anything that the mobile wallet supports. FinDock does not see or record what is used, but rather manages the payment transaction itself through specific references, including the payer’s phone number.
Vipps payment flow
Both one-time and recurring Vipps payments use an online payment flow. The payer experience varies based on the device being used and how the individual’s Vipps wallet is set up.
- Payer enters personal information in the front-end payment form and selects Vipps as the payment method.
- Details are sent to FinDock for creation, update (or deduplication) of the payer's Contact or Account record.
- The payer is redirected to Vipps, either the Vipps Landing Page or directly to the Vipps mobile app (depending on what device the payer is using).
- Once completed, FinDock automatically handles notifications from Vipps for creating payment data in Salesforce and redirects the payer to follow-up communications.
- Follow-up communication, such as a thank-you message or payment confirmation, is sent to the customer according to your customer relations flow.
All messages from Vipps are captured as Inbound Report records.
When the payer initiates a Vipps payment, the redirect URL is valid for 10 minutes. After 10 minutes, the initiated payment cannot be completed.
Vipps one-time payments
When a one-time payment is initiated from FinDock, the payment goes through a series of payment states as Vipps processes the transaction. The Installment record that represents this payment changes status based on the Vipps state. The following table shows how these two values are mapped by FinDock.
Vipps State | Inbound Report | Installment Status | Further Info |
---|---|---|---|
Reserved | vipps.RESERVED | Pending | The payer has completed authorization for the one-time payment; money is taken from payer at this point already |
Captured | vipps.RESERVED | Collected | The installment almost immediately changed to Collected when capture success callout is received from Vipps as part of the Reserved notification handling |
Cancelled | vipps.CANCELLED | Cancelled | The payment setup session was terminated, for instance, because the session timed out. |
Rejected | vipps.REJECTED | Failed | The payer has cancelled the payment authorization at some point in the setup flow. |
Reserve Failed | vipps.RESERVE_FAILED | Failed | The one-time payment cannot be completed due, for example, to insufficient funds. |
Sale Failed | vipps.SALE_FAILED | Failed | Similar to Reserve Failed. The payment cannot be completed due to insufficient funds, there's a problem with the card, and similar issues. |
Vipps recurring payments
When a payer sets up a recurring payment, FinDock creates a Mandate record to store the Vipps Agreement Id and a corresponding Recurring Payment (Recurring Donation for NPSP). Vipps Agreements contain a predefined interval. FinDock currently allows you to create Daily, Weekly, Monthly or Yearly intervals for Vipps. This is based on the Recurring Frequency in the API.
Individual installments for the recurring payment can then be collected through payment schedules.
Collecting Vipps recurring payments using payment schedules required payments to be sent to Vipps 2 days before the collection date. FinDock takes the due date of the installment to determine what the collection date should be. If an installment that is part of the payment schedule has a due date that does not meet this requirement, FinDock automatically sets the collection date in Vipps to the first valid date.
Vipps has a few specific parameters required for setting up recurring payments. These can be defined when setting up a recurring payment using the FinDock API or if you don’t provide them FinDock takes the values from the Vipps setup target configuration.
- MerchantAgreementURL: A URL that takes payers to a webpage where they can manage their agreement.
- Product Name: Description of the recurring agreement being set up. Can be either set in the API or set a default in your target setting.
The agreement status is handled through the following inbound reports for mandate management.
Inbound Report | Mandate State | Further Info |
---|---|---|
vipps.MANDATE_ACTIVATION | Success, Active | If the new mandate is instantly actiaveted, this notification informs FinDock to active the mandate. |
vipps.MANDATE_STATUS_CHECK | Success, Active/Failed, Inactive | FinDock performs nightly checks to update the state of pending mandates. |
Vipps refunds and reconciliation
FinDock automatically polls the Vipps service on a regular basis to get the latest bulk payment information for settlement. This information is used to update the payment data in Salesforce, including refunds.
Two inbound reports are used for Vipps reconciliation, as outlined in the table below.
Vipps Message | Inbound Report | Installment Status | Further Info |
---|---|---|---|
Capture | capture | Collected | The capture message from Vipps includes all payments, but FinDock only uses it to update the status of recurring payment installments to Collected |
Refund | refund | Refunded | The refund message is used to change the status of installments for one-time or recurring payments to Refunded when Vipps has completed the payer refund. |