Migrate from eCom to ePayment
Overviewβ
The ePayment API expands upon the functionality of the eCom API and simplifies existing flows. Merchants currently using the eCom API should find the ePayment API familiar and intuitive.
The ePayment API is backwards compatible with the eCom API. Payments initiated via the eCom API can be captured, refunded, cancelled, and retrieved using the ePayment API, but not vice versa.
Payments initiated with the ePayment API can't be modified or retrieved using the eCom API. Merchants are advised to fully migrate to the ePayment API. However, it is possible to migrate one endpoint at a time, provided that the Create Payment endpoint is migrated last.
Key differencesβ
New featuresβ
The ePayment API Express solution contains all the features of the eCom API.
New features include:
Support for Finnish and Danish marketplacesβ
The ePayment API can be used in Finnish and Danish marketplaces, as well as Norway.
See Offering Vipps MobilePay in the Nordics for details.
Callbacks are replaced with webhooksβ
The ePayment API does not use callbacks, therefore, callbackPrefix
is no longer used.
To get a report of events taking place for a payment request,
register webhooks.
User flow parametersβ
Skipping the landing page is now specified with the new userFlow
parameter rather than
the complex isApp
of eCom.
See User flow.
Get event logβ
New Get event log endpoint lets you get a history of all the events (e.g., authorize, capture, refund) that happen to a payment.
Parameters name changesβ
These parameter names are remapped across all the endpoints and responses:
eCom | ePayment |
---|---|
X-Request-Id | Idempotency-Key |
orderId | reference |
merchantInfo.fallback | returnUrl |
transactionText | paymentDescription |
mobileNumber | phoneNumber (MSISDN format) |
amount | amount.currency , amount.value |
Merchant-Serial-Number | (moved to the header) |
callbackPrefix | (deleted) |
All the endpoints have changed, as shown in the sections that follow.
Endpointsβ
Createβ
eCom initiate payment endpoint
ePayment create payment endpoint
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Merchant-Serial-Number
πIdempotency-Key
π
Required body parameters
transaction
amount
βamount.value
orderId
βreference
transactionText
βpaymentDescription
customerInfo
βcustomer
merchantInfo
callbackPrefix
β RemovedfallBack
βreturnUrl
merchantSerialNumber
β Moved to header
Required and related body parameters
amount
currency
- NOK, DKK, EUR (must match the currency of your sales unit)value
- Amount in minor units
reference
customer
returnUrl
paymentDescription
paymentMethod
πtype
- Typically set toWALLET
userFlow
π - Typically set toWEB_REDIRECT
(normal flow).
See parameters for details.
Example of payload:
{
"customerInfo": {
"mobileNumber": "12345678"
},
"transaction": {
"orderId": "acme-shop-123-order123abc",
"transactionText": "Phone cover",
"amount": 20000
},
"merchantInfo": {
"fallBack": "https://example.com/fb",
"callbackPrefix": "https://example.com/cb",
"merchantSerialNumber": "123456"
}
}
Example of payload:
{
"customer":{
"phoneNumber":"4712345678"
},
"reference":"acme-shop-123-1234589",
"paymentDescription": "Phone cover",
"amount":{
"value":20000,
"currency":"NOK"
},
"returnUrl":"https://example.com/fb",
"userFlow":"WEB_REDIRECT",
"paymentMethod":{
"type":"WALLET"
}
}
Response
orderId
βreference
url
βredirectUrl
Example response:
{
"orderId": "acme-shop-123-order123abc",
"url": "https://api.vipps.no/<snip>"
}
Response
reference
redirectUrl
Example response:
{
"reference": "acme-shop-123-order123abc",
"redirectUrl": "https://example.com"
}
eCom details
ePayment details
Captureβ
When you start a payment, the amount is first reserved. You then need to capture it to complete the transaction.
You can capture right away or any time within 180 days.
π© Important: The ePayment API supports reserve capture only.
This means thereβs no direct capture option, unlike the eCom API.
Why reserve capture?β
Reserve capture gives you more flexibility:
- Supports partial capture
- Cancel the reservation at any time before capture, instantly freeing up the funds in the customerβs account.
- Perfect when the final amount isnβt known at the time of payment, for example:
Typical flow:
- Reserve a higher amount.
- Capture only whatβs needed.
- Cancel the rest.
For more details, see Reserve capture vs. Direct capture.
Partial captureβ
The ePayment API supports partial captures β handy when shipping items separately, so you can capture payment for each shipment as it goes out.
eCom capture
ePayment capture
Path parameters
orderId
βreference
Path parameters
reference
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
X-Request-Id
βIdempotency-Key
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Idempotency-Key
πMerchant-Serial-Number
π
Body parameters
transaction
amount
βmodificationAmount.value
transactionText
- Removed
merchantInfo
merchantSerialNumber
- Moved to the header
Body parameters
modificationAmount
value
currency
-NOK
,DKK
,EUR
Example of payload:
{
"merchantInfo": {
"merchantSerialNumber": "123456"
},
"transaction": {
"amount": 49900,
"transactionText": "Phone cover"
}
}
Example of payload:
{
"modificationAmount": {
"currency": "NOK",
"value": 49900
}
}
Response
orderId
- Same asreference
transactionInfo
amount
- Correlates toamount.value
status
- Correlates tostate
timeStamp
transactionId
transactionText
transactionSummary
- Similar toaggregate
capturedAmount
refundedAmount
remainingAmountToCapture
remainingAmountToRefund
bankIdentificationNumber
paymentInstrument
- No longer returned
Response
reference
amount
currency
value
state
aggregate
authorizedAmount
cancelledAmount
capturedAmount
refundedAmount
pspReference
Example response:
{
"paymentInstrument": "Mastercard",
"orderId": "acme-shop-123-order123abc",
"transactionInfo": {
"amount": 49900,
"status": "Captured",
"timeStamp": "2018-12-12T11:18:38.246Z",
"transactionId": "5432123456",
"transactionText": "Phone cover"
},
"transactionSummary": {
"capturedAmount": 49900,
"refundedAmount": 0,
"remainingAmountToCapture": 0,
"remainingAmountToRefund": 49900,
"bankIdentificationNumber": 123456
}
}
Example response:
{
"amount": {
"currency": "NOK",
"value": 49900
},
"state": "CREATED",
"aggregate": {
"authorizedAmount": {
"currency": "NOK",
"value": 49900
},
"cancelledAmount": {
"currency": "NOK",
"value": 0
},
"capturedAmount": {
"currency": "NOK",
"value": 49900
},
"refundedAmount": {
"currency": "NOK",
"value": 0
}
},
"pspReference": "3343121302",
"reference": "acme-shop-123-order123abc"
}
eCom details
ePayment details
Cancelβ
The cancel endpoint is used to cancel reserved payments.
There is no shouldReleaseRemainingFunds
flag in the new ePayment API endpoint.
Cancelling a payment will always cancel the entire remaining not-captured amount, this is irreversible.
So, if you want to capture part of the reserved amount, you should send the capture request first.
Then send the cancel request, POST:/epayment/v1/payments/{reference}/cancel
. There is no amount specified.
eCom cancel
ePayment cancel
eCom path parameters
orderId
βreference
ePayment path parameters
reference
eCom required header parameters
Authorization
Ocp-Apim-Subscription-Key
ePayment required header parameters
Authorization
Ocp-Apim-Subscription-Key
Merchant-Serial-Number
π
eCom body parameters
transaction
amount
- RemovedtransactionText
- Removed
merchantInfo
merchantSerialNumber
- Moved to the header
ePayment body parameters
cancelTransactionOnly
π - Only cancel transaction if it has not been authorized.
Example of payload:
{
"merchantInfo": {
"merchantSerialNumber": "123456"
},
"transaction": {
"transactionText": "Phone cover"
},
"shouldReleaseRemainingFunds": false
}
Example of payload:
{
"cancelTransactionOnly": true
}
Response
orderId
βreference
paymentInstrument
β DeletedtransactionInfo
amount
β Correlates toamount.value
status
β Correlates tostate
Enum:Cancelled
,Captured
,Refund
timeStamp
transactionId
transactionText
transactionSummary
β Similar toaggregate
capturedAmount
refundedAmount
remainingAmountToCapture
remainingAmountToRefund
bankIdentificationNumber
Response
reference
amount
currency
value
state
-CREATED
,ABORTED
,EXPIRED
,AUTHORIZED
,TERMINATED
aggregate
authorizedAmount
cancelledAmount
capturedAmount
refundedAmount
pspReference
Example response:
{
"paymentInstrument": "Mastercard",
"orderId": "acme-shop-123-order123abc",
"transactionInfo": {
"amount": 49900,
"status": "Captured",
"timeStamp": "2018-12-12T11:18:38.246Z",
"transactionId": "5432123456",
"transactionText": "Phone cover"
},
"transactionSummary": {
"capturedAmount": 49900,
"refundedAmount": 0,
"remainingAmountToCapture": 0,
"remainingAmountToRefund": 49900,
"bankIdentificationNumber": 123456
}
}
Example response:
{
"amount": {
"currency": "NOK",
"value": 49900
},
"state": "CREATED",
"aggregate": {
"authorizedAmount": {
"currency": "NOK",
"value": 49900
},
"cancelledAmount": {
"currency": "NOK",
"value": 49900
},
"capturedAmount": {
"currency": "NOK",
"value": 49900
},
"refundedAmount": {
"currency": "NOK",
"value": 49900
}
},
"pspReference": "3343121302",
"reference": "acme-shop-123-order123abc"
}
eCom details
ePayment details
Refundβ
eCom refund
ePayment refund
Path parameters
orderId
βreference
Path parameters
reference
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
X-Request-Id
βIdempotency-Key
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Merchant-Serial-Number
πIdempotency-Key
π
Body parameters
transaction
amount
βmodificationAmount.value
transactionText
β Removed
merchantInfo
merchantSerialNumber
- Moved to the header
Body parameters
modificationAmount
currency
value
Example of payload:
{
"merchantInfo": {
"merchantSerialNumber": "123456"
},
"transaction": {
"amount": 49900,
"transactionText": "Phone cover"
}
}
Example of payload:
{
"modificationAmount": {
"currency": "NOK",
"value": 49900
}
}
Response
orderId
βreference
transaction
amount
βamount.value
status
βstate
timeStamp
transactionId
transactionText
transactionSummary
βaggregate
capturedAmount
refundedAmount
remainingAmountToCapture
remainingAmountToRefund
bankIdentificationNumber
Response
reference
amount
currency
value
state
(values have changed)aggregate
authorizedAmount
cancelledAmount
capturedAmount
refundedAmount
pspReference
Example:
{
"orderId": "acme-shop-123-order123abc",
"transaction": {
"amount": 49900,
"status": "Captured",
"timeStamp": "2018-12-12T11:18:38.246Z",
"transactionId": "5432123456",
"transactionText": "Phone cover"
},
"transactionSummary": {
"capturedAmount": 49900,
"refundedAmount": 0,
"remainingAmountToCapture": 0,
"remainingAmountToRefund": 49900,
"bankIdentificationNumber": 123456
}
}
Example:
{
"reference": "acme-shop-123-order123abc",
"amount": {
"currency": "NOK",
"value": 49900
},
"state": "CREATED",
"aggregate": {
"authorizedAmount": {
"currency": "NOK",
"value": 49900
},
"cancelledAmount": {
"currency": "NOK",
"value": 49900
},
"capturedAmount": {
"currency": "NOK",
"value": 49900
},
"refundedAmount": {
"currency": "NOK",
"value": 49900
}
},
"pspReference": "3343121302"
}
eCom details
ePayment details
Get payment detailsβ
Retrieve the full history of a payment and the status of the operations.
eCom get payment details
ePayment get payment details
Path parameters
orderId
βreference
Path parameters
reference
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Required header parameters
Authorization
Ocp-Apim-Subscription-Key
Merchant-Serial-Number
Body parameters
(none)
Body parameters
(none)
eCom response parameters
orderId
βreference
transactionLogHistory
(array)amount
βamount.value
operation
β Correlates tostate
("INITIATE" "RESERVE" "SALE" "CAPTURE" "REFUND" "CANCEL" "VOID")operationSuccess
requestId
timeStamp
transactionId
transactionText
transactionSummary
β Similar toaggregate
capturedAmount
refundedAmount
remainingAmountToCapture
remainingAmountToRefund
bankIdentificationNumber
Additional properties when Express Checkout or Profile Sharing has been used:
shippingDetails
- Closely matchesshippingDetails
in ePaymentuserDetails
- Closely matchesuserDetails
in ePayment with this exception:mobileNumber
(no country code)userId
- no correlation in ePayment
sub
- Correlates toprofile.sub
ePayment response parameters
reference
aggregate
authorizedAmount
cancelledAmount
capturedAmount
refundedAmount
amount
currency
value
state
-CREATED
,ABORTED
,EXPIRED
,AUTHORIZED
,TERMINATED
paymentMethod
type
-WALLET
orCARD
pspReference
redirectUrl
Additional properties supplied when Express or Profile Sharing has been used:
shippingDetails
userDetails
- Correlates touserDetails
in eCom.mobileNumber
(includes country code)profile
sub
-profile.sub
correlates tosub
in eCom.
Example response:
{
"orderId": "acme-shop-123-order123abc",
"transactionLogHistory": [
{
"amount": 0,
"operation": "RESERVE",
"operationSuccess": true,
"requestId": "12983921873981899000",
"timeStamp": "2025-08-05T12:27:42.311Z",
"transactionId": "5001446662",
"transactionText": "Phone cover"
}
],
"transactionSummary": {
"capturedAmount": 49900,
"refundedAmount": 0,
"remainingAmountToCapture": 0,
"remainingAmountToRefund": 49900,
"bankIdentificationNumber": 123456
},
}
Example response:
{
"aggregate": {
"authorizedAmount": {
"currency": "NOK",
"value": 49900
},
"cancelledAmount": {
"currency": "NOK",
"value": 49900
},
"capturedAmount": {
"currency": "NOK",
"value": 0
},
"refundedAmount": {
"currency": "NOK",
"value": 0
}
},
"amount": {
"currency": "NOK",
"value": 49900
},
"state": "AUTHORIZED",
"paymentMethod": {
"type": "WALLET"
},
"profile": {},
"pspReference": "37c34d8<snip>",
"reference": "acme-shop-123-order123abc"
}
eCom details
ePayment details
Get payment event logβ
The ePayment API offers a new endpoint that lets you see all the events for a specific payment.
ePayment get payment event log
GET:/epayment/v1/payments/{reference}/events
Path parameter:
reference
- same asorderId
Required header parameters:
Authorization
Ocp-Apim-Subscription-Key
Example response:
[
{ // Create Payment example event
"reference": "acme-shop-123-order123abcd",
"pspReference": "83b3fdb0-9547-4ec5-bdb7-5600ce70e792",
"name": "CREATED",
"amount": { "currency": "NOK", "value": 49900 },
"timestamp": "2025-08-27T10:51:44.5333258Z",
"idempotencyKey": "219986263-dedf-4b8e-a424-8d042eee4012",
"success": true
},
{ // Payment authorized example event
"reference": "acme-shop-123-order123abcd",
"pspReference": "1304787731",
"name": "AUTHORIZED",
"amount": { "currency": "NOK", "value": 49900 },
"timestamp": "2025-08-27T10:51:59.378Z",
"idempotencyKey": "219986263-dedf-4b8e-a424-8d042eee4012",
"success": true
},
{ // Captured Payment example event
"reference": "acme-shop-123-order123abcd",
"pspReference": "2018200034",
"name": "CAPTURED",
"amount": { "currency": "NOK", "value": 49900 },
"timestamp": "2025-08-27T10:52:07.748Z",
"idempotencyKey": "219986263-dedf-4b8e-a424-8d042eee4012",
"success": true
}
]
ePayment details:
Error handlingβ
Both eCom and ePayment return HTTP response codes; however, the standard response body format has changed.
The standard response body format for the ePayment error messages follows RFC 7807.
User flowβ
In the eCom API, merchants could choose between three flows by specifying the parameters
isApp
and skipLandingPage
.
In ePayment: Instead of specifying the parameters, you now decide which flow you want through the
userFlow
property. Here's how the fields correspond to each other:
isApp: false
andskipLandingPage: false
->WEB_REDIRECT
isApp: true
andskipLandingPage: false
->NATIVE_REDIRECT
skipLandingPage: true
->PUSH_MESSAGE
The ePayment API also supports a new flow:
the QR
flow.
The QR flow provides you with a direct link to a one-time payment QR code that the user can scan and pay from their app.
Payment statesβ
A payment will not change state after becoming AUTHORIZED
. This is because a payment can be partially captured, and also partially refunded.
It is therefore not practical to have states like "captured" or "refunded", since it is not possible to give all the information with just the state.
A payment can be partially captured, partially refunded, cancelled, but it will not change the state.
Here is a state comparison:
eCom state | ePayment state | Description |
---|---|---|
INITIATE | CREATED | The payment has been initiated. The user has not yet acted upon the payment. |
RESERVE | AUTHORIZED | The user has accepted the payment in the app. This is a final state. |
VOID | ABORTED | The payment has been actively stopped by the user. The user has aborted the payment before authorization. This is a final state. |
EXPIRED | The payment has expired. The user did not act on the payment within the payment expiration time. This is a final state. | |
TERMINATED | The merchant has cancelled the payment before authorization. The merchant has terminated the payment via the cancel endpoint. This is a final state. | |
CAPTURE | (deleted) | |
REFUND | (deleted) | |
CANCEL | (deleted) | |
SALE | (deleted) |
For details, see ePayment payment states.
Webhooksβ
The ePayment API supports webhooks, whereas the eCom API only supports callbacks.
To receive webhook notifications, register the URLs that will accept a POST request whenever a payment event occurs.
Webhook events are available for payments initiated through the ePayment API. For example payment created, payment aborted, and payment expired.
Note that you should not rely on webhooks alone, and should poll according to the polling recommendations.
The Webhooks API provides guaranteed delivery: If the callback is not successful
(we do not get the expected HTTP 200 OK
response from you), we will retry for several days.
In addition, you can now receive webhooks for all adjustments to your payment.
See:
Feature migrationsβ
Expressβ
The new Express has more features than Express Checkout. You get a nicer experience in the app because you will get brand icons, and you can create groupings where there are several options available per group.
- Vipps
- MobilePay
Key differences from eCom Express Checkout to ePayment Express include:
-
Shipping groups
In ePayment Express, shipping options are organized into groups using theshipping.fixedOptions
array. Each group is defined by a combination of:- brand (e.g., POSTEN, HELTHJEM, DHL, etc.)
- type (e.g., HOME_DELIVERY, PICKUP_POINT, MAILBOX, IN_STORE, OTHER)
Within each group, there can be multiple sub-options in the
options
array. Each sub-option represents a specific delivery choice, such as a particular store location or delivery method. -
Callback for dynamic shipping details The format of the callback information has changed.
-
Consent removal
The ePayment API does not require you to support the consent removal options, but we do recommend that you don't keep their information any longer than needed for the shipping to be completed.
In the new Express, split your options into groups with the same type and brand. For details, see Express shipping options.
eCom Express Checkout
ePayment Express
eCom body parameters
Same as for the regular eCom create payment request with these changes:
merchantInfo
consentRemovalPrefix
- no longer requiredstaticShippingDetails
(see Fixed options below)shippingDetailsPrefix
(see Dynamic options below)authToken
(see Dynamic options below)
ePayment body parameters
Same as for the regular ePayment create payment request with these additions:
paymentMethod.type
- Set toWALLET
profile.scope
- Set to"name address email phoneNumber"
shipping
fixedOptions
(see Fixed options below)dynamicOptions
(see Dynamic options below)
eCom fixed options
-
staticShippingDetails
βshipping.fixedOptions
isDefault
priority
The following are moved to the specific options within each group (fixedOptions.options.[array_item]
):
shippingCost
βamount.value
(now minor units)shippingMethod
βname
shippingMethodId
βid
ePayment fixed options
fixedOptions
isDefault
(Boolean)priority
type
-HOME_DELIVERY
,PICKUP_POINT
, etc.brand
-BRING
,DHL
,FEDEX
, etc.options
(array)id
amount
valuename
isDefault
priority
meta
estimatedDelivery
eCom dynamic options
shippingDetailsPrefix
βcallbackUrl
authToken
βcallbackAuthorizationToken
ePayment dynamic options
dynamicOptions
callbackUrl
callbackAuthorizationToken
eCom payload example
{
"merchantInfo": {
"staticShippingDetails": [
{
"isDefault": "Y",
"priority": 1,
"shippingCost": 59,
"shippingMethod": "POSTEN - In the mailbox",
"shippingMethodId": "shippingMethodId1"
},
{
"isDefault": "N",
"priority": 2,
"shippingCost": 39,
"shippingMethod": "POSTEN - Oslo S",
"shippingMethodId": "shippingMethodId2"
},
{
"isDefault": "N",
"priority": 3,
"shippingCost": 39,
"shippingMethod": "POSTEN - BjΓΈrvika",
"shippingMethodId": "shippingMethodId3"
}
],
"fallBack": "https://example.com/fb",
"callbackPrefix":"https://example.com/cb",
"consentRemovalPrefix": "https://example.com/cm",
"merchantSerialNumber": "123456",
"paymentType": "eComm Express Payment",
"shippingDetailsPrefix": "https://example.com/s"
},
"customerInfo": {
"mobileNumber": "12345678"
},
"transaction": {
"orderId": "acme-shop-123-order123abc",
"transactionText": "Phone cover",
"amount": 20000
}
}
ePayment payload example
{
"shipping": {
"fixedOptions": [ {
"isDefault": true,
"priority": 1,
"type": "HOME_DELIVERY",
"brand": "POSTEN",
"options": [{
"isDefault": true,
"priority": 1,
"amount": { "currency": "NOK", "value": 5900 },
"name": "Posten:Home delivery",
"id": "shippingMethodId1"
}]
},
{
"type": "PICKUP_POINT",
"brand": "POSTEN",
"options": [{
"isDefault": true,
"priority": 1,
"amount": { "currency": "NOK", "value": 3900 },
"name": "POSTEN - Oslo S",
"id": "shippingMethodId3"
},
{
"amount": { "currency": "NOK", "value": 3900 },
"name": "POSTEN - BjΓΈrvika",
"id": "shippingMethodId4"
}]
}
]
},
"profile": { "scope": "name address email phoneNumber" },
"customer": { "phoneNumber": "4712345678" },
"amount": { "currency": "NOK", "value": 20000 },
"paymentMethod": { "type": "WALLET" },
"reference": 2810171754658432260,
"userFlow": "WEB_REDIRECT",
"returnUrl": "https://example.com",
"paymentDescription": "Purchase of socks"
}
eCom details
ePayment details:
Shipping address callbacksβ
For both ePayment and eCom, you need to provide an endpoint that we can call to share the customer's address with you. You define and host this endpoint on your side β weβll call it when we need to send you the shipping address details.
We send the address in almost the same structure for both products β see the difference table below.
eCom merchant callback
Endpoint:
POST:[shippingDetailsPrefix]β/v2β/paymentsβ/{orderId}β/shippingDetails
ePayment merchant callback
eCom callback body structure
addressLine1
βAddressLine1
city
βCity
country
βCountry
postCode
βPostCode
addressId
β replaced by the payment reference
ePayment callback body structure
AddressLine1
City
Country
PostCode
reference
π - The unique identifier for the payment
eCom callback response
The response must follow this schema.
shippingDetails
βgroups
isDefault
(now Boolean)priority
shippingCost
βamount.value
shippingMethod
βname
shippingMethodId
βid
addressId
β removedorderId
β removed
Note that several parameters are removed from the top level and specified within the options for each array element.
ePayment callback response
The response must follow this schema.
groups
(array)isDefault
priority
type π
-HOME_DELIVERY
,PICKUP_POINT
, etc.brand
π -BRING
,DHL
,FEDEX
, etc.options
id
isDefault
amount
valuename
priority
meta
estimatedDelivery
eCom details
ePayment details:
- API spec: Merchant dynamic shipping callback (Look under Responses > 200 for the schema of your reply)
Set order detailsβ
The ePayment API comes with order management built-in.
In eCom, you had to create and attach order details using the Order Management API, but now you can add the details directly to your payment request.
You can add order lines to attach order details shown to the user in the app. Alternatively, supply a URL to show the user an invoice or similar. All are accessible before the user accepts the payment.
You just add the receipt
to the create payment request.
See Set order details for an example.
One-time payment QR codesβ
The ePayment API lets you create a one-time payment QR code without the QR API.
You just set the userFlow
to QR
and provide an optional qrFormat
.
"userFlow": "QR",
"qrFormat": {
"format": "IMAGE/SVG+XML",
"size": 1024
}
For examples, see One-time payment QR.
Profile sharingβ
The ePayment profile sharing
feature works similarly to in eCom.
You only need to update your scope
parameter to an object, like this:
"profile": {
"scope": "name phoneNumber address birthDate"
}
For examples, see Profile sharing.
Report API and settlementsβ
The eCom API and ePayment API use different identification for payments:
- eCom payments are identified with the
orderId
that is specified when the payment is initiated. - ePayment payments are identified with the
reference
in the same way.
When retrieving data about the payments using the Report API there is also a difference:
- eCom API payments will have an automatically generated
transactionId
for each payment operation, such as capture, refund, etc. - ePayment API payments will have a
pspReference
that works similarly.
The transactionId
in the eCom API is identical to the pspReference
in the Report API,
but the pspReference
in the ePayment API has no relation to the pspReference
in the Report API.
See the Report API's Entry type reference fore more details.
Verification and go liveβ
- Merchants
- Partners
Before going live with your new ePayment solution you must verify your solution. You do this by going through all the points in the ePayment checklist. Please ensure that you have implemented all endpoints and evaluated the Quality assurance and Avoid integration pitfalls. If you have any questions about any of the points in the checklist, please feel free to contact us.
Once you are satisfied with the integration and the checklist, you can go live.
Before going live with your new ePayment solution, we must verify your solution. You do this by going through all the points in the ePayment checklist. Please ensure that you have implemented all endpoints and evaluated the Quality assurance and Avoid integration pitfalls.
Once you have filled out the checklist, please send it to developer@vippsmobilepay.com (or through your Slack channel) including a video of the payment flow.
Once your checklist is approved, you can go live with your merchants according to your own plan. Please let us know how you plan for going live, whether it is all merchants at once or in batches.