Skip to content
Menu

Płatności Unscheduled Card-on-File (UCOF)

Płatności Unscheduled Card-on-File (UCOF) umożliwiają merchantom przetwarzanie przyszłych płatności przy użyciu danych płatniczych wcześniej autoryzowanych przez klienta podczas początkowej transakcji Cardholder-Initiated Transaction (CIT).

Płatności UCOF są przeznaczone dla scenariuszy, w których przyszłe obciążenia nie mogą być zaplanowane z góry i są wyzwalane przez zdarzenie biznesowe zdefiniowane przez merchanta. Typowe przykłady obejmują opóźnione obciążenia, dodatkowe opłaty za usługi, opłaty za brak stawienia się (no-show fees), rozliczenia na podstawie zużycia (usage-based billing) lub obciążenia przyrostowe.

Podczas początkowej transakcji CIT merchant ustanawia umowę Merchant-Initiated Transaction (MIT), konfigurując parametry UCOF. Po pomyślnym zakończeniu początkowej płatności kolejne obciążenia mogą być przetwarzane jako transakcje Merchant-Initiated Transactions (MIT), przy użyciu zapisanych danych płatniczych oraz odniesienia do oryginalnej transakcji CIT.

W przeciwieństwie do płatności cyklicznych (Recurring Payments), UCOF nie obsługuje harmonogramów cyklicznych. Merchant jest odpowiedzialny za inicjowanie każdej kolejnej transakcji MIT w momencie wystąpienia prawidłowego zdarzenia biznesowego.

Kiedy stosować UCOF

Stosuj UCOF, gdy merchant obciąża zapisaną kartę bez wcześniej ustalonego harmonogramu, wyzwalanego przez zdarzenia operacyjne, takie jak:

  • Opóźnione obciążenia
  • Opłaty hotelowe za brak stawienia się (no-show fees)
  • Dodatkowe opłaty hotelowe lub za wynajem
  • Rozliczenia na podstawie zużycia
  • Usługi rozliczane za wykorzystanie (pay-per-use)
  • Korekty po zakupie
  • Autoryzacje przyrostowe lub dodatkowe opłaty za usługi

Jak to działa

Płatności UCOF są realizowane w trzech krokach:

  • Krok 1 – Początkowa transakcja Cardholder-Initiated Transaction (CIT)
  • Krok 2 – Kolejne transakcje Merchant-Initiated Transaction (MIT)
  • Krok 3 – Odbieranie powiadomień o płatnościach (opcjonalnie)
Krok 1 – Początkowa transakcja Cardholder-Initiated Transaction (CIT)

Klient dokonuje początkowej płatności.

Podczas tej transakcji merchant ustanawia umowę Merchant-Initiated Transaction (MIT), konfigurując wymagane parametry UCOF.

Po pomyślnym zakończeniu płatności SIBS Gateway generuje original-tx-id, który jednoznacznie identyfikuje zapisaną umowę dotyczącą danych uwierzytelniających i musi być podawany przy każdej kolejnej, przyszłej transakcji Merchant-Initiated typu UCOF.

Ten krok obejmuje następujące czynności:

  • Czynność 1 – Utworzenie zamówienia
  • Czynność 2 – Przetworzenie płatności
  • Czynność 3 – Sprawdzenie statusu transakcji (opcjonalnie)
Czynność 1 – Utworzenie zamówienia

Rozpocznij od utworzenia standardowego zamówienia płatności za pomocą Checkout Payment API.

Pełną strukturę żądania, wymagane nagłówki oraz standardowe pola płatności znajdziesz w sekcji Create Order w dokumentacji API Integration.

Podczas tworzenia początkowej transakcji CIT należy uwzględnić pola konfiguracyjne UCOF opisane poniżej. Pola te ustanawiają umowę dotyczącą zapisanych danych uwierzytelniających, do której będą odnosić się przyszłe transakcje Merchant-Initiated.

Adres URL punktu końcowego
APIOperation
Checkout Payment API POST /api/{version-id}/payments 

Pola konfiguracyjne UCOF

FieldTypeConditionDescriptionExample
Request Body.merchantInitiatedTransactionMITTypeCode Optional Defines the Merchant-Initiated Transaction type. For UCOF payments, set this field to UCOF
Possible values: RCRRUCOF
„UCOF” 
Request Body.recurringTransactionRecurringTransaction Conditional Object that defines the Merchant-Initiated Transaction agreement. Required when merchantInitiatedTransaction is set to UCOF. For UCOF, only the amountQualifier field must be provided. {…} 
Request Body.recurringTransaction.validityDateisoDateTime Optional Date until which the Merchant-Initiated Transaction agreement remains valid. „2027-12-31T23:59:59Z” 
Request Body.recurringTransaction.amountQualifierString Mandatory for UCOF Qualifies the amount associated with the Merchant-Initiated Transaction. Possible values are ACTUALESTIMATED and DEFAULT. For UCOF payments, this field must always be set to ESTIMATED„ESTIMATED” 
Request Body.recurringTransaction.amountQualifier String Optional Description of the Merchant-Initiated Transaction agreement. 
Warning

Ważne: Przy konfigurowaniu płatności UCOF pole transaction.paymentMethod musi zawierać wyłącznie wartość "CARD".

Przykładowe żądanie

</> JSON
{
„merchant”: {
„terminalId”: {{TerminalID}},
„channel”: „web”,
„merchantTransactionId”: „{{merchantTrxID}}”,
„websiteAddress”: „https://website.com”
},
„customer”: {
„customerInfo”: {
„customerLanguage”: „pl”
}
},
„transaction”: {
„transactionTimestamp”: „{{trxDatetime}}”,
„description”: „Transaction for order number {{trxOrderNum}} terminalId {{TerminalID}}”,
„moto”: false,
„paymentType”: „AUTH”,
„amount”: {
„value”: 50.50,
„currency”: „PLN”
},
„paymentMethod”: [
„CARD”
]
},
„tokenisation”: {
„tokenisationRequest”: {
„tokeniseCard”: false
},
„paymentTokens”: []
},
„merchantInitiatedTransaction”: „UCOF”,
„recurringTransaction”: {
„validityDate”: „{{trxRecurrValidityDatetime}}”,
„amountQualifier”: „ESTIMATED”,
„description”: „UCOF transaction -> Order {{trxOrderNum}}”
}
}

Czynność 2 – Przetworzenie płatności

Po utworzeniu zamówienia dokończ płatność klienta za pomocą Card Purchase API.

W przeciwieństwie do żądania Checkout, ta operacja nie wykorzystuje tokenu Bearer w nagłówku Authorization. Zamiast tego żądanie musi zawierać transactionSignature zwrócony w odpowiedzi Checkout.

transactionSignature autoryzuje wykonanie płatności dla transakcji utworzonej wcześniej za pomocą Checkout API.

Adres URL punktu końcowego
APIOperation
Card Purchase API POST /api/{version-id}/payments/{transactionID}/card/purchase
Parametry nagłówka
FieldTypeRequiredDescriptionExample
Content-TypestringMandatoryDefines the content type of the request.application/json
AuthorizationstringMandatoryUse transactionSignature returned by the Checkout API. This request must use the Digest authentication scheme. Digest {transactionSignature}
x-ibm-client-idstringMandatoryToken identifying the client organization, provided during onboarding.123456789

Przykładowe żądanie Purchase:

</> JSON 
{ 
    "cardInfo": { 
        "PAN": "5204740000001002", 
        "secureCode": "100", 
        "validationDate": "2025-12-31T00:00:00.000Z", 
        "cardholderName": "Jane Smith", 
        "createToken": false 
    } 
} 
Odpowiedź

Pomyślna odpowiedź techniczna zwraca:

  • Status HTTP 200
  • returnStatus.statusCode = "000"

Pole paymentStatus wskazuje wynik autoryzacji płatności.

Status płatnościOpis
Success Płatność została pomyślnie autoryzowana, a umowa cykliczna (recurring agreement) została ustanowiona.
Declined Płatność została odrzucona. Umowa cykliczna nie zostaje utworzona.
Pending Ostateczny wynik płatności nie jest jeszcze dostępny. Korzystaj ze Status API do momentu otrzymania ostatecznego statusu.
Partial Wymagana jest dodatkowa interakcja z klientem (np. uwierzytelnienie 3DS). Element actionResponse zawiera instrukcje dotyczące dalszego postępowania.

Odpowiedź API zawiera również pole recurringTransaction.status, które wskazuje, czy konfiguracja cykliczna została pomyślnie ustanowiona podczas początkowej płatności. Tylko wtedy, gdy ten status jest pozytywny, transakcja może zostać użyta jako odniesienie dla przyszłych transakcji Merchant-Initiated (MIT) typu UCOF.

Czynność 3 – Sprawdzenie statusu transakcji (opcjonalnie)

Po przesłaniu płatności możesz zweryfikować jej status przetwarzania za pomocą Status API.

W przeciwieństwie do żądania Card Purchase, Status API wykorzystuje tę samą metodę uwierzytelniania co początkowe żądanie Checkout. Nagłówek Authorization musi zawierać token Bearer.

Adres URL punktu końcowego
APIOperation
Payment Status API GET /api/{version-id}/payments/{transactionID}/status
Parametry nagłówka
FieldTypeRequiredDescriptionExample
Content-TypestringMandatoryDefines the content type of the request.application/json
AuthorizationstringMandatoryBearer Token obtained through the authentication process. Bearer xxxxxxxx
x-ibm-client-idstringMandatoryToken identifying the client organization, provided during onboarding.123456789
Przykładowe żądanie
Odpowiedź statusu Checkout

Pomyślna odpowiedź techniczna zwraca status HTTP 200 z returnStatus.statusCode = "000".

Korzystaj z tej operacji za każdym razem, gdy musisz pobrać najnowszy status przetwarzania transakcji.

Pełną listę kodów statusu transakcji, kodów błędów i przyczyn odrzuceń znajdziesz w dokumentacji Obsługa Błędów i Kody Odrzucenia.

Krok 2 – Przetwarzanie kolejnych płatności UCOF (MIT)

Po pomyślnym zakończeniu początkowej płatności merchant może inicjować transakcje Merchant-Initiated Transaction (MIT) za każdym razem, gdy wystąpi prawidłowe zdarzenie biznesowe.

Każda kolejna płatność UCOF odnosi się do original-tx-id wygenerowanego podczas początkowej transakcji CIT i wykorzystuje dane płatnicze wcześniej autoryzowane przez klienta.

W przeciwieństwie do płatności cyklicznych (Recurring Payments), transakcje UCOF nie są zaplanowane w harmonogramie. Każde żądanie MIT musi zostać jawnie przesłane przez merchanta.

Ten krok obejmuje następujące czynności:

  • Czynność 1 – Przesłanie żądania MIT
  • Czynność 2 – Sprawdzenie statusu transakcji (opcjonalnie)
Czynność 1 – Przesłanie żądania MIT

Gdy płatności UCOF są inicjowane przez merchanta, prześlij transakcję Merchant-Initiated Transaction, wykorzystując original-tx-id wygenerowany podczas początkowej transakcji CIT.

original-tx-id identyfikuje umowę cykliczną (recurring agreement) i łączy każdą transakcję MIT z oryginalną transakcją autoryzowaną przez klienta.

Punkt końcowy
APIOperation
MIT API POST /api/{version-id}/payments/{original-tx-id}/mit 
Parametry nagłówka
FieldTypeRequiredDescriptionExample
Content-TypestringMandatoryDefines the content type of the request.application/json
AuthorizationstringMandatoryBearer Token obtained through the authentication process.Bearer xxxxxxxx
x-ibm-client-idstringMandatoryToken identifying the client organization, provided during onboarding.123456789
Pola żądania MIT
FieldTypeConditionDescription
original-tx-id (Path)String (Max36Text) Mandatory Original transaction identifier generated during the initial CIT. This value identifies the stored credential agreement used to process the Merchant-Initiated Transaction. 
transaction.transactionType String (Transaction Type Code) Mandatory Defines the Merchant-Initiated Transaction(MIT) type. Possible values: RCRR or UCOF. 
transaction.amount.valueNumber (double) Mandatory Amount to be charged. 
transaction.amount.currencyString (Currency Code – ISO Alpha-3) Mandatory Currency used in the transaction. 
transaction.descriptionString Optional Short description of the Merchant-Initiated Transaction. 
Przykładowe żądanie

</> JSON

{
„merchant”: {
„terminalId”: „{{TerminalID}}”,
„channel”: „web”,
„merchantTransactionId”: „{{merchantTrxID}}”
},
„transaction”: {
„transactionTimestamp”: „{{trxDatetime}}”,
„transactionType”: „UCOF”,
„description”: „Transaction for order {{trxOrderNum}}”,
„amount”: {
„value”: 50.50,
„currency”: „PLN”
},
„originalTransaction”: {
„id”: „{{ originalTxId}}”,
„datetime”: „{{trxOriginalDatetime}}”
}
}
}

Czynność 2 – Sprawdzenie statusu transakcji (opcjonalnie, ale zalecane)

Po przesłaniu transakcji Merchant-Initiated Transaction (MIT) możesz zweryfikować jej status przetwarzania za pomocą Status API.

Status API umożliwia pobranie najnowszego statusu przetwarzania transakcji, gdy natychmiastowe potwierdzenie nie jest dostępne lub gdy potrzebujesz potwierdzić ostateczny wynik płatności.

W przeciwieństwie do Purchase API, to żądanie wykorzystuje tę samą metodę uwierzytelniania co początkowe żądanie Checkout. Nagłówek Authorization musi zawierać token Bearer.

Adres URL punktu końcowego
APIOperation
Payment Status API GET /api/{version-id}/payments/{transactionID}/status
Parametry nagłówka
FieldTypeRequiredDescriptionExample
Content-TypestringMandatoryDefines the content type of the request.application/json
AuthorizationstringMandatoryBearer Token obtained through the authentication process.Bearer xxxxxxxx
x-ibm-client-idstringMandatoryToken identifying the client organization, provided during onboarding.123456789
Przykładowe żądanie
Odpowiedź

Pomyślna odpowiedź techniczna zwraca:

  • Status HTTP 200
  • returnStatus.statusCode = "000"

Korzystaj z tej operacji za każdym razem, gdy musisz pobrać najnowszy status przetwarzania transakcji Merchant-Initiated.

Pełną listę kodów statusu transakcji, kodów błędów i przyczyn odrzuceń znajdziesz w dokumentacji Obsługa Błędów i Kody Odrzucenia.

Krok 3 – Odbieranie powiadomień o płatnościach (opcjonalnie)

Aby dodatkowo zautomatyzować integrację, możesz skonfigurować Webhooks w celu otrzymywania asynchronicznych powiadomień za każdym razem, gdy zmienia się status transakcji Merchant-Initiated Transaction.

Gdy Webhooks są włączone, SIBS Gateway automatycznie wysyła powiadomienia o zdarzeniach do skonfigurowanego punktu końcowego merchanta po przetworzeniu każdej płatności UCOF. Umożliwia to systemowi merchanta reagowanie na zdarzenia płatnicze w czasie rzeczywistym.

Typowe powiadomienia obejmują:

  • Płatność przetworzona pomyślnie
  • Płatność odrzucona
  • Płatność w toku (pending)
  • Przetwarzanie płatności zakończone

Webhooks uzupełniają integrację płatności, zapewniając mechanizm oparty na zdarzeniach do otrzymywania aktualizacji statusu transakcji, co ułatwia synchronizację systemów merchanta z najbardziej aktualnym statusem płatności.

Informacje na temat konfigurowania Webhooks, obsługiwanych zdarzeń oraz szczegółów implementacji znajdziesz w dokumentacji Webhooks Integration.

Dowiedz się więcej o Webhooks tutaj.

Przegląd prywatności
blank

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.

Ściśle niezbędne ciasteczka

Niezbędne ciasteczka powinny być zawsze włączone, abyśmy mogli zapisać twoje preferencje dotyczące ustawień ciasteczek.