LogoLogo
BlogLogin
English
English
  • An Introduction to Saferpay
    • Licensing
      • Legacy licensing
    • Reconciliation
    • Acquirers & Payment Methods
    • Web Shop Plugins and certified partners
      • ePages Beyond
      • ePages NOW
      • Magento 2
      • Odoo
      • PrestaShop
        • PrestaShop User Guide
      • Salesforce Commerce Cloud
      • SAP Commerce Cloud
      • Shopware 6
        • Shopware 6 User Guide - German
        • Shopware 6 User Guide - English
      • WordPress WooCommerce
      • Shopify
    • Supported Languages
    • Common Saferpay terms - Glossary
  • News
    • Changes for transactions without customer presence
    • Changes for the Saferpay Hosted Forms, Fields and Payment Page
  • Quick Links
    • Web Shop Plugins and certified partners
    • Secure PayGate
    • User Administration
    • Payment Page Configuration
    • Risk Management
    • API Authentication
  • Interfaces
    • Payment API (aka JSON API)
    • Management API
    • Backoffice
      • The Home screen
      • Batch Processing
      • Transactions
        • Transaction Details
        • Batch Close
        • Declined transactions
        • Pending authorizations
        • Analytics
        • SEPA Refunds Export
        • Authorization & Payment
        • Credit
      • Risk Management
      • Secure PayGate / Payment Links
      • Secure Card Data
        • Secure Card Data Details
      • Settings
        • JSON API basic/Client Certificate authentication
        • User Administration
        • Payment Page Configuration
      • Online Support
      • User Profile
    • Saferpay OnSite
    • Feedback
  • Integration Guide
    • Integrating Saferpay
    • Ways of integration
      • General Information
        • Data Security and PCI DSS
        • Versioning
        • 3-D Secure
        • PSD2
        • Dynamic Currency Conversion
        • Iframe Integration and CSS
        • Fraud Intelligence
          • Silver
          • Fraud Intelligence Integration
      • Payment Page
        • Payment Page checklist
      • Transaction Interface
        • Recurring Payments
        • Refunds
          • SEPA Refunds
      • Capture and Daily Closing
        • Partial Captures
          • Marketplace
      • Secure Card Data - Tokenization
      • Saferpay Fields
      • Inquire Interfaces
      • Mobile Integration
      • Omni-Channel
      • Mail Phone Order
      • Error Handling
      • API Health Check
      • Saferpay API Specification
    • Payment Methods & Wallets
      • General and special cases
      • Account-to-Account Payments
      • Alipay+
      • Apple Pay
      • American Express
      • Bancontact
      • Billie
      • blik
      • Click to Pay
      • Diners Club International & Discover Card
      • eps
      • giropay
      • Google Pay
      • iDEAL 2.0
      • JCB
      • Klarna Payments
      • Maestro International
      • Mastercard
      • paydirekt
      • PayPal
      • PostFinance Pay
      • Przelewy24
      • Reka
      • SEPA Direct Debit
      • Sofort by Klarna
      • TWINT
      • UnionPay
      • Visa & V PAY
      • WeChat Pay
      • WL Crypto Payments
    • Testing
    • Go-Live
    • Frequently Asked Questions
    • Saferpay Demo
      • Saferpay Demo Environment
      • Saferpay Demo Shop
    • Support
    • Changelog
Powered by GitBook
On this page
  • Requirements
  • Executing a Multipart Capture
  • Finalizing a Capture-Chain
  • Finalizing, while also capturing a certain amount
  • Finalizing without capturing/ Capturing with amount 0
  • Why do you need to finalize a transaction?
  • Handling Refunds

Was this helpful?

  1. Integration Guide
  2. Ways of integration
  3. Capture and Daily Closing

Partial Captures

PreviousCapture and Daily ClosingNextMarketplace

Last updated 9 months ago

Was this helpful?

Saferpay does offer the option to do on transactions, made with certain payment methods. split the money authorized during one transaction into multiple batches, enabling the merchant to only capture the amount he wants to obtain, e.g. for delivering a part of a certain order.

Requirements

  1. are only available for

    • Worldline /

    • Worldline

    • -Only for certain Amex providers! Please contact your sales contact!-

  2. No MultipartCapture request should be sent before receiving the response of a preceding request (i.e. no parallel calls are allowed). The timeout for this are 100 seconds.

  3. The total amount of all executed multipart captures must not exceed the authorized amount of the initial transaction.

  4. A unique OrderPartId must be used for each request.

  5. is only available for SpecVersions 1.10 and higher!

Note, that you cannot mix the and the within one transaction. Either do one, or the other!

Executing a Multipart Capture

  • Type: The Type specifies, whether this is one of many subsequent, or the final Capture.

{
    "RequestHeader": {
      "SpecVersion": "[CURRENT_SPEC_VERSION]",
      "CustomerId": "[your customer id]",
      "RequestId": "[unique request identifier]",
      "RetryIndicator": 0
    },
    "TransactionReference": {
        "TransactionId": "723n4MAjMdhjSAhAKEUdA8jtl9jb"
    },
    "Amount": {
        "Value": 1000,
        "CurrencyCode": "CHF"
    },
    "Type": "PARTIAL",
    "OrderPartId": "123456789"
}
{
    "ResponseHeader": {
        "SpecVersion": "[CURRENT_SPEC_VERSION]",
        "RequestId": "[unique request identifier]"
    },
    "CaptureId": "723n4MAjMdhjSAhAKEUdA8jtl9jb_c",
    "Status": "CAPTURED",
    "Date": "2018-08-08T12:45:22.258+01:00"
}

The overall amount you submit is not checked on the test-environment, as it is rejected by the processor/acquirer! So it is indeed possible to capture more, than authorized!

Finalizing a Capture-Chain

Does the merchant intend to capture a final amount, or not?

Once finalized, a transaction cannot be opened again. Make sure, that you really want to finalize the transaction. Other captures won't be possible!

Finalizing, while also capturing a certain amount

Like mentioned previously, make sure to not exceed the initially authorized amount, or the capture will fail!

{
   "RequestHeader": {
     "SpecVersion": "[CURRENT_SPEC_VERSION]",
     "CustomerId": "[your customer id]",
     "RequestId": "[unique request identifier]",
     "RetryIndicator": 0
   },
   "TransactionReference": {
       "TransactionId": "723n4MAjMdhjSAhAKEUdA8jtl9jb"
   },
   "Amount": {
       "Value": 1000,
       "CurrencyCode": "CHF"
   },
   "Type": "FINAL",
   "OrderPartId": "123456790"
}

Finalizing without capturing/ Capturing with amount 0

Finalize may only be executed, if the remaining amount is greater, than 0!

If you use a normal Multipart Capture to capture the whole transaction amount, please make sure, that the last partial capture is marked as "Type": "FINAL".

Executing a Multipart Finalize on such a transaction will lead to an error.

Why do you need to finalize a transaction?

There are two reasons, why you, the merchant, should finalize a transaction, once you have finished all your actions:

  1. It is the cleaner process. For you, the merchant, this is the cleaner solution and helps keeping track of every transaction and its status, not just inside your own system, but also inside the Saferpay Backoffice, where still open and closed transactions will be marked as such!

  2. It means less hassle for your customers! Each time you successfully authorize a credit card, the authorized amount gets reserved on the cardholders credit limit. That effectively means, that he/she cannot use this money, as long as you haven't claimed the money, or the reservation voids, after a certain time-frame. A finalization will open up the credit-limit for the cardholder, so he/she may use it again, which is especially important in situations, where the merchant does not want, or can't claim all the money originally authorized!

Handling Refunds

{
  "RequestHeader": {
    "SpecVersion": "[CURRENT_SPEC_VERSION]",
    "CustomerId": "[your customer id]",
    "RequestId": "[your request id]",
    "RetryIndicator": 0
  },
  "Refund": {
    "Amount": {
      "Value": 100,
      "CurrencyCode": "CHF"
    }
  },
  "CaptureReference": {
    "CaptureId": "723n4MAjMdhjSAhAKEUdA8jtl9jb_c"
  }
}

Before you can even execute a , you, of course, need a transaction, that needs to be captured. This can be any normal authorization, either done by the , or . You don't have to consider anything special, up to this point!

Additionally, to the standard parameters needed to execute a , the following parameters are important for a :

OrderPartId: Each is identified by a unique OrderPartId, which will also be forwarded to the respective reconciliation-files you will receive later. That makes this Id very important for later identification, thus you have to make sure, that said Id is set as unique, so confusions can be averted.

Each capture is identified by a CaptureId (Marked with the suffix "_c"), which should be saved, since this ID is used for further actions, like . More on the latter later in this very chapter.

The basic reservation times do still apply for If this time is exceeded, the reservation could void and the money flow will be rejected by the card holders bank!

After a transaction has been captured to the merchant's liking using , it should be finalized, in order to seclude the transaction. There are two different ways to finalize a . Each covering one specific case, that should be differentiated, by asking one specific question:

In order to capture a final amount, the merchant-system simply needs to execute , whilst setting the parameter Type to "FINAL". A full request then may look like this:

In order to avoid confusion and merchants accidentally executing the wrong request, the finalization with amount 0 is done through a completely different request called . Executing this request will close the transaction without transferring any money.

Since basically split an existing transaction into multiple parts, also need to be processed differently. Unlike normal Refunds, you now need to reference each capture you want to refund individually!

To do so, you have to reference the CaptureId from the , you want to refund. Remember, that all CaptureIds have the suffix _c for that reason.

A may look like this then:

Like every other , these too need to be captured. However please make sure to use the in this case and NOT MultipartCapture! Refunds cannot be split into multiple parts, like authorizations!

Partial Captures (Hereafter referred to as Multipart Captures)
Multipart Captures
Multipart Captures
Mastercard
Maestro
Visa/V PAY
American Express
Diners/Discover
JCB
PayPal
Klarna Payments
MultipartCapture
Multipart Capture
Normal Capture
Multipart Capture
Payment Page
Transaction Interface
Capture
Multipart Capture
Multipart Capture
refunds
Multipart Capture
Multipart Capture
Multipart Capture
Multipart Finalize
Multipart Captures
refunds
Multipart Capture Response
Refund
normal Capture request
Multipart Captures!
mentioned here
Refund request