---
title: "Create WIP Charge"
method: POST
path: "/charges/{initialChargeKey}/wip"
tags: ["Create Recurring"]
---

# Create WIP Charge

`POST /charges/{initialChargeKey}/wip`

## Request

- Base URL: `https://eu-west-1.api.silverflow.com/v1`
- URL: `https://eu-west-1.api.silverflow.com/v1/charges/{initialChargeKey}/wip`
- Auth: one of:
  - HTTP basic
  - HTTP bearer
- TypeScript: <https://skmtc.dev/silverflow/apis/silverflow-api/docs/charges/:initialChargeKey/wip/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new Wallet Initiated Payment ("WIP") charge with the Bancontact network. WIP charges allows Bancontact PAN-based e-commerce transactions to be performed without the need for Strong Customer Authentication. There are two use cases for WIP charges:

  - One click express checkout
  - Recurring payments

If transaction data changes for the subsequent charges, the relevant data can be modified by providing new values. For example, the recurring amount could change monthly.

**From November 22, 2026, if a valid card is not found using `card.number` in the request, the response will be a 409 with type `/silverflow/problems/card/invalid`.**

## Path parameters

- `initialChargeKey` string, required: Uniquely identifies a charge.

## Headers

- `Idempotency-Key` string: This key is used to deduplicate requests that are retried. For more information see the section on [Idempotency](https://docs.silverflow.com/guides/idempotency).

## Request body

- WipChargeRequest
  - `amount` AmountInEuro: The amount encoded as an object with a `value` in minor units and a `currency` code. Only EUR currency is supported.
    - `value` integer, required: The amount in minor units. For example `$12.34` should be encoded as `1234`. Note that not all currencies have 2 minor units. Some have three or zero.
    - `currency` 'EUR', required
  - `type` WipType
    - `intent` 'purchase', required
    - `cardEntry` 'card-on-file', required
    - `order` 'one-click' | 'recurring', required
  - `transactionReference` string: Unique ID assigned by the merchant or payment service provider for the transaction. Used to identify the transaction.
  - `walletDetails` WalletDetails, required: The values to send to Bancontact to perform a Wallet Initiated Payment. The fields are in hexadecimal format as described by the Bancontact specifications.
    - `merchantAuthMethod` string, required: Indicates how the cardholder was authenticated by the Merchant Wallet for transaction initiation. A bitmap representing the authentication method.
    - `merchantWipToken` string, required: Static token is assigned by Bancontact to the given Merchant Wallet.
    - `walletProviderId` string, required: This is the Payment Scheme Manager issued identifier assigned to wallets elligible to perform WIP transactions.

## Response `201`

The created charge

- WipChargeResponse: A charge
  - `key` string, required: Uniquely identifies a charge.
  - `merchantAcceptorRef` ComponentsSchemasAcceptorRef, required: Reference key and status of the acceptor
    - `key` string, required: Uniquely identifies a merchant acceptor.
    - `version` integer, required: The version of this object
  - `card` OutputCard, required: Card data
    - `maskedNumber` string, required: The card number used to create this charge, masked according to PCI standards. For card numbers with 16 or more digits, the first 8 and the last 4 digits are visible. For card numbers with 13-15 digits, the first 6 and the last 4 digits are visible. For cards numbers with less than 13 digits, the first 6 and last 2 digits are visible.
    - `processorTokenKey` string: The key to a card tokenized in the [Processor Tokenization](#tag/Processor-Tokenization).
  - `amount` AmountInEuro, required: The amount encoded as an object with a `value` in minor units and a `currency` code. Only EUR currency is supported.
    - `value` integer, required: The amount in minor units. For example `$12.34` should be encoded as `1234`. Note that not all currencies have 2 minor units. Some have three or zero.
    - `currency` 'EUR', required
  - `type` WipTypeResponse, required
    - `intent` 'purchase', required
    - `cardEntry` 'card-on-file', required
    - `order` 'one-click' | 'recurring', required
    - `sequence` 'subsequent', required
  - `clearingMode` 'auto'
  - `status` StatusWithoutPartialApproval, required: The status property provides a high-level representation of the lifecycle of a charge. For a complete history, the actions should be used.
    - `authentication` 'none' | 'authenticated' | 'non-authenticated', required: Strong Customer Authentication (SCA) status of the charge
    - `authorization` 'none' | 'approved' | 'declined' | 'reversed', required: Authorization status of the charge.
    - `clearing` 'none' | 'manual' | 'pending' | 'completed' | 'cancelled' | 'abandoned', required: Clearing status of the charge
  - `authentication` ChargeAuthenticationWip, required: Object container for authentication. If present, contains Strong Customer Authentication (SCA) information, but also indicates whether CVC and AVS was used.
    - `sca` ScaWip, required
      - `method` 'none', required
      - `compliance` 'exemption', required
      - `complianceReason` 'wip', required
      - `result` string
    - `cvc` 'none', required: The result of cvc verification
    - `avs` 'none', required: The result of the AVS verification
  - `localTransactionDateTime` string, iso-8601-date-time, required: Date and time of the transaction in the local timezone.
  - `transactionReference` string: Unique ID assigned by the merchant or payment service provider for the transaction. Used to identify the transaction.
  - `fraudLiability` 'acquirer' | 'issuer', required: Which party is liable in case of fraud.
  - `authorizationIsoFields` AuthorizationIsoFieldsBancontact, required: Object containing the raw values from the ISO8583 response message received from the network.
    - `responseCode` string, required: Contents of field 39
    - `responseCodeDescription` string, required: The description of the `responseCode`
    - `authorizationCode` string: Contents of field 38
    - `networkCode` 'none', required
    - `systemTraceAuditNumber` string, required: Contents of field 11
    - `retrievalReferenceNumber` string, required: Contents of field 37
    - `eci` 'none', required
    - `networkSpecificFields` BancontactSpecificFields, required: Bancontact specific ISO8583 raw values
      - `iban` string: The International Bank Account Number (IBAN) returned from the bancontact authorization response.
  - `billingAddress` BillingAddress: The billing address of the cardholder
    - `countryCode` SchemasCountryCode
      - `alpha3` string, required
      - `alpha2` string, required
      - `numeric` string, required
    - `stateOrProvince` string: The state (US) or province (non-US) of the address.
    - `city` string: The city of the address.
    - `line1` string: Address line 1
    - `line2` string: Address line 2
    - `postalCode` string, required: The postal code of the address, allowing a single separating space.
  - `created` string, iso-8601-date-time, required: The date and time this object was created
  - `lastModified` string, iso-8601-date-time: The date and time this object was last modified
  - `version` integer, required: The version of this object

## Other responses

- `400`: The request body was malformed
- `401`: Authentication information is missing or invalid
- `409`: Conflict
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/silverflow/apis/silverflow-api.md) - [All operations](https://skmtc.dev/silverflow/apis/silverflow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/silverflow/apis/silverflow-api/revisions/43ecbe4fd6ea?raw)
