Developer Docs
v1.7
SOAP / WS-Security
Online Payments · v1.7

Online Payments API

The United Clearing Center (UCC) payment gateway. Banks and other agents use it to verify a customer against a service provider, check their debt, execute the payment, reconcile totals at the end of the business day, and register clearing orders — all through UCC's Extended Services System (ESS).

How to read these docs The product spans two SOAP-based contracts. Per-provider operations — verify, debt, payment, cancel — are executed through the generic Native Call Interface (NCI): a single execute operation (plus bulkExecute) taking a serviceId and a key/value parameter set. Bank-level operations — reconciliation, payment listing, clearing registration, catalog sync — are classic UCC web service operations defined by their own WSDL. Everything is encrypted and signed per WS-Security.
Status This reference is based on the UCC Integration Guide v1.7 (Azry Ltd, issue date July 23, 2024). The NCI contract matches the WSDL (both endpoint variants — see NCI endpoint variants). For the UCC web services (reconcile, getPayments, registerClearingOrder, getServiceProviders), examples show logical content — exact wire-level element names will be confirmed in an upcoming revision and are flagged inline as subject to confirmation.

Four NCI services per provider

Every service provider publishes a payment service; verify, debt, and cancel are optional and depend on the provider's own interface.

Business-day reconciliation

At day end the bank sends its totals via reconcile. The day always closes — CLOSED_NORMAL on a match, CLOSED_IRREGULAR on a mismatch.

Clearing registration

Banks perform clearing themselves and publish clearing orders to UCC for informational purposes — strongly recommended only for reconciled operations.

Signed & encrypted

Every SOAP envelope must be encrypted and signed per WS-Security, using an X.509 certificate registered with UCC.

How it works

UCC sits between service consumers (banks) and service providers (SPs) — mobile operators, internet providers, utilities, and so on. For each SP incorporated into UCC, up to four general services are published. Only the payment service is always present; the rest depend on what the SP's own interface supports:

ServicePresencePurpose
PaymentAlwaysPerform a payment for goods or services provided by the SP.
VerifyOptionalVerify the customer's abonent code in the SP's system.
DebtOptionalRetrieve the customer's current debt for the SP's service.
CancelOptionalCancel an already-performed payment.

Most SPs provide debt (or verify) plus payment. Which services exist for a given SP — and the NCI codes to call them with — comes from the catalog (see getServiceProviders).

Integration flow

  • Sync the catalog. Call getServiceProviders to load every SP's metadata: services, NCI service codes, bank accounts, treasury codes, and commission tables. Cache it and refresh periodically.
  • Identify the customer. Call the SP's verify or debt service through NCI with the customer's abonentCode to confirm identity and, for debt, fetch the outstanding balance.
  • Take the payment. Call the SP's payment service through NCI with the amount, currency, abonent code, your own unique agentPaymentId, and your businessDayId. UCC returns its paymentId and your commission.
  • Correct same-day mistakes. If the SP supports it, cancel a payment via NCI — possible only while the associated business day is still open.
  • Close the day. Call reconcile with your business day ID and summary totals. UCC compares them against its own records and closes the day.
  • Register clearing. Generate clearing orders on your side and publish them via registerClearingOrder, associating the covered payment IDs — strongly recommended only for reconciled operations.
All UCC web services signal errors by throwing UCCException with an error code and message — see Errors & fault codes.

Authentication & security

Online Payments does not use a separate API key or OAuth token. Instead, every SOAP envelope — NCI and UCC web services alike — must be encrypted and signed per the WS-Security specification, using an X.509 certificate registered with UCC for your agent account.

RequirementAlgorithm
Key encryptionhttp://www.w3.org/2001/04/xmlenc#rsa-1_5
Symmetric encryptionhttp://www.w3.org/2001/04/xmlenc#aes128-cbc
Encryption canonicalizationhttp://www.w3.org/2001/10/xml-exc-c14n#
Token referencekeyIdentifier (SKI)
Signaturehttp://www.w3.org/2000/09/xmldsig#rsa-sha1
Signature canonicalizationhttp://www.w3.org/2001/10/xml-exc-c14n#

The envelope may optionally carry a WS-Security <Timestamp> element.

The shape below follows the generic OASIS WS-Security standard (not specific to UCC's spec) — included so the algorithms above make sense in context.

Signed & encrypted envelope — generic WS-Security shapeCopy
The request/response bodies shown throughout this reference are the decrypted, logical content of the SOAP body for readability — in transit, the body is encrypted as described above.

Certificate exchange

Trust between your system and UCC is mutual: each side generates its own X.509 key pair, signs its outgoing messages with its own private key, and gives the other side its public certificate for verification/decryption. Nobody issues a certificate on the other party's behalf — you generate yours, UCC generates theirs, and you exchange the public halves. One certificate pair covers your agent account — the same keys sign both NCI calls and UCC web service calls.

  • Generate your key pair. Create an X.509 key pair on your side, using whatever standard tooling your team already uses (OpenSSL, Java keytool, or similar), and store it in a keystore of your choice. The keystore itself — its type, your alias names, its password — is entirely internal to you; none of it is shared with or dictated by UCC.
  • Send UCC only your public certificate. Export the public certificate (not the keystore, not the private key) and send it to your UCC integration contact. This is the only artifact that crosses the boundary in this direction.
  • Import UCC's public certificate into your own keystore once you receive it from UCC, so your side can verify/decrypt what UCC signs.
  • Test. Confirm the exchange worked by having UCC synchronize your agent record on their side — your integration contact will run this check with you. A signed getServiceProviders call (no parameters, read-only) is a convenient first end-to-end smoke test.
  • Renewal follows the same flow: generate a new key pair, send the new public certificate to UCC, and import UCC's public certificate again if UCC has also rotated theirs.
Keystore configuration Alias names and the keystore/key password are local to your own system — UCC never sees or requires a specific value for either. Pick whatever your own naming and secrets-management conventions call for. The only thing UCC actually needs from you is the public certificate file itself.

SOAP conventions

Two contracts, two conventions. NCI calls (verify / debt / payment / cancel) all go through one generic gateway operation, execute, defined by the NCI WSDL — the concrete action is selected by the serviceId you pass. UCC web services (reconcile, getPayments, registerClearingOrder, getServiceProviders) are ordinary WSDL-defined SOAP operations on a separate contract.

About the examples All values in the code examples throughout this reference are synthetic. Parameter names and error codes come from the Integration Guide, and a few sample values are the guide's own (e.g. abonent code 1258555, provider code MGT) — but every serviceId, amount, commission, bank code, account number, and identifier is an invented placeholder. Real serviceId values, accounts, and commission tables come exclusively from your getServiceProviders catalog sync; bank codes and other agent-specific values come from your onboarding data. Never copy example values into a live call.

NCI gateway — verified against the WSDL

OperationSOAPAction (Standard)SOAPAction (WCF)
executeurn:executeurn:executeWCF
bulkExecuteurn:bulkExecuteurn:bulkExecuteWCF

Target namespace (both variants): http://nci.connector.ess.azry.com/ · document/literal binding. See NCI endpoint variants for the differences between the two endpoints and full wire examples.

Service codes are data, not operations For NCI, the operation you're really invoking is selected by the serviceId you pass to execute — the value of verifyServiceCode, debtServiceCode, payServiceCode, or cancelServiceCode from the Service object. Never hard-code these values; always source them from a fresh catalog sync.

UCC web services

Subject to confirmation The namespace and SOAPAction table for the UCC web services will be published in an upcoming revision. Until then, the XML examples for those operations omit namespace prefixes — treat them as illustrative of content, not of exact element names.

NCI endpoint variants

UCC publishes the NCI gateway in two flavors. Both live in the same namespace, expose the same two operations, and take the same logical model — serviceId plus key/value parameters. They differ only at the transport layer, and the one difference that matters is how errors come back. Pick the variant that matches your stack and use it consistently; the examples below switch together.

 StandardWCF
Endpoint path/nci/NCIServiceBean/nci/NCIServiceWCFBean
SOAPActionurn:execute, urn:bulkExecuteurn:executeWCF, urn:bulkExecuteWCF
execute errorsSOAP Fault with typed EssFault detailNo SOAP Fault — faultEntry elements inside the normal response
Success payloadParameter elementsoutParameter elements
Best forJava (JAX-WS, CXF) and most SOAP toolkits — idiomatic fault handling.NET / WCF clients that don't consume Java-style custom fault details well
WCF variant: errors don't throw On NCIServiceWCFBean, a failed execute still returns a normal SOAP response — your toolkit will not raise a fault/exception. You must inspect every executeResponse for faultEntry elements before trusting outParameter values. Skipping this check is the classic way to silently lose errors on this endpoint.

execute — wire examples

Request body (both variants, logical, pre-encryption)Copy
Response body — success · StandardCopy
Error — SOAP Fault with EssFault detail · StandardCopy
Response body — success · WCFCopy
Error — faultEntry in-band, no SOAP Fault · WCFCopy

errorKey carries the NCI error code (see Errors & fault codes); invalidParameter, when present, names the offending input parameter.

bulkExecute — batching (both variants)

bulkExecute wraps multiple executeRequest items in one call. Per-item outcomes come back in-band in both variants: each ExecuteResult carries either parameter values or faultEntries — a SOAP Fault is not used here even on the standard endpoint, and results are positional (the n-th result answers the n-th request).

Request body (logical, pre-encryption)Copy
Response body — mixed outcomesCopy

Environments

ContractService path
NCI — Standard/nci/NCIServiceBean
NCI — WCF/nci/NCIServiceWCFBean
UCC web servicesNot yet published
Hosts are provided at onboarding Test and production hostnames are intentionally not published here — request them from your UCC integration contact during onboarding and combine them with the service paths above. This mirrors UCC's own practice: neither the Integration Guide nor the WSDLs disclose hosts.
WSDL Append ?wsdl to the full NCI endpoint URL to fetch the machine-readable contract for client code generation. Generate against the variant you intend to call — the two WSDLs are not interchangeable (see NCI endpoint variants).
Relative service address The WSDL's own soap:address is a relative path (/nci/NCIServiceBean / /nci/NCIServiceWCFBean), not a full URL. Use the environment-specific host you were given rather than whatever your SOAP toolkit infers from the WSDL location.
Subject to confirmation The UCC web services (reconcile, getPayments, registerClearingOrder, getServiceProviders) are a separate contract — they are not exposed by the NCI WSDLs. Their service path will be published in an upcoming revision; request current details from your UCC integration contact. Message-level confidentiality and integrity are provided by WS-Security encryption and signature regardless of transport.

Errors & fault codes

There are two error families. NCI error codes are returned by the per-provider verify / debt / payment / cancel calls and use the com.azry.ess.error.* namespace; they can vary from SP to SP — the table below lists only the important codes common to all SPs. On the wire the code travels in the errorKey field, delivered as a SOAP Fault (EssFault) on the standard NCI endpoint or as an in-band faultEntry on the WCF endpoint — see NCI endpoint variants. UCC error codes are thrown by the UCC web services as a UCCException carrying an error code and message.

NCI error codes

Error codeMeaning & handling
GeneralGeneral error — for example an RDBMS or misconfiguration problem.
Abonent_not_foundNo abonent with the given code exists in the SP's system. Re-check the code with the customer.
Pre_payment_errorThrown during payment, before the payment message was sent to the SP — for example, the SP was unreachable. The guide guarantees the payment was not performed, so resubmitting is safe.
Non_unique_agent_payment_idA payment with this agentPaymentId already exists — thrown to prevent duplicate transfers. Use getPayment to check the status of the original.
Payment_network_failureCommunication error after the payment message may have reached the SP — the payment state is unknown. See the grey state.
Validation_failureThe payment input is not valid for the service. Fix the request; do not resubmit as-is.

Full code values carry the com.azry.ess.error. prefix, e.g. com.azry.ess.error.Abonent_not_found.

Payment_network_failure — the grey state This error means UCC has no idea whether the payment reached the SP. The guide is explicit: the only way to find out is manual investigation (telephone or email between SP and UCC staff). Do not blindly retry with a new agentPaymentId — that risks a double charge. Park the transaction and escalate.

UCC error codes (UCCException)

Error codeServiceMeaning
SYSTEM_INTERNAL_ERRORAllUCC internal system error (e.g. RDBMS or misconfiguration).
UNKNOWN_BUSINESS_DAYreconcileNo business day found for the provided agent business ID.
UNKNOWN_SERVICE_PROVIDERregisterClearingOrderNo service provider found for the given code.
UNKNOWN_PAYMENTregisterClearingOrder, cancelNo payment found for the given agent payment ID.
ILLEGAL_CLEARING_PAYMENTregisterClearingOrderPayment is already associated with another clearing order, or is in the wrong state (e.g. canceled).
ILLEGAL_CLEARING_CURRENCYregisterClearingOrderPayment and clearing currencies do not match.
ILLEGAL_CLEARING_SP_CODEregisterClearingOrderPayment and clearing service provider codes do not match.
WRONG_CLEARING_AMOUNTregisterClearingOrderClearing amount and payments summary amount do not match.
NON_UNIQUE_BANK_ORDER_NUMBERregisterClearingOrderA clearing order with this bank order number is already registered.
COMMISSION_CALCULATION_ERRORgetCommissionNo matching service commission record could be found.
WRONG_CANCEL_AMOUNTcancelCancel amount does not match the original payment.
WRONG_CANCEL_CURRENCYcancelCancel currency does not match the original payment.
PAYMENT_ALREADY_CANCELEDcancelThe payment is already canceled.
PAYMENT_BUSINESS_DAY_CLOSEDcancelThe payment's business day is already closed — reversal not possible.

Fault structure

The guide defines UCCException as an error code plus a message. Branch on the code, not the human-readable message. The exact XML shape of the fault detail comes from the WSDL — the example below is illustrative:

SOAP Fault — illustrative shape, subject to confirmationCopy
Verify service NCI call

Validates a customer's abonent code in the service provider's system. Optional — published only if the SP's interface supports it. Invoke via NCI using the service's verifyServiceCode.

Input parameters

Parameter keyTypeDescription
abonentCodeinAbonent identifier in the SP system, e.g. 1258555 for a Telasi client required

Output parameters

Parameter keyTypeDescription
abonentDescriptionoutOptional composite description, e.g. Irakli Gobejishvili, Pekinis #12
Logical request parametersCopy
Logical responseCopy
Debt service NCI call

Retrieves the customer's outstanding debt in the service provider's system. Optional — published only if the SP's interface supports it. Invoke via NCI using the service's debtServiceCode.

Input parameters

Parameter keyTypeDescription
abonentCodeinAbonent identifier in the SP system required
payerIdNumberinPayer personal number, e.g. 00000000001 (added in v1.7)

Output parameters

Parameter keyTypeDescription
abonentDebtoutAbonent debt in the SP system
abonentDescriptionoutComposite description, e.g. Irakli Gobejishvili, Pekinis #12
Logical request parametersCopy
Logical responseCopy
Payment service NCI call

Executes the payment. Always published for every SP. Invoke via NCI using the service's payServiceCode.

Input parameters

Parameter keyRequiredDescription
amounttruePayment amount
currencytruePayment currency code (ISO 4217)
abonentCodetrueAbonent identifier in the SP system
agentPaymentIdtruePayment unique identifier provided by the service consumer (i.e. bank)
businessDayIdtrue"Business day" unique identifier provided by the service consumer
paymentChanneltruePayment channel, e.g. ATM, ServiceCenter, IBanking
paymentPointtruePayment point code, e.g. the bank's service center code
srcBankCodetrueSource bank code (service consumer bank code)
bankOrderDocumentNumberfalseNumber of this payment order in the bank
paymentPurposefalseThe purpose of the payment
additionalInfofalseAdditional information
payerNamefalseName of the payer
payerIdentificationNumberfalsePersonal number or identification number of the payer
treasuryCodefalseTreasury code of the payment (e.g. police payments carry one)
payerAccountNumberPayment account number requiredness not stated in the guide
beneficiaryNameBeneficiary name requiredness not stated in the guide

Output parameters

Parameter keyTypeDescription
paymentIdoutPayment unique identifier assigned by the UCC system
commissionoutPayment commission dedicated to the service consumer

Possible NCI errors

Pre_payment_error Non_unique_agent_payment_id Payment_network_failure Validation_failure Abonent_not_found General

Logical request parametersCopy
Logical responseCopy

On the wire, these parameters travel as key/value pairs inside a single execute call — see NCI endpoint variants for the full envelope.

Duplicate protection agentPaymentId is your deduplication key — choose a stable, unique value per payment on your side. Resending the same ID triggers Non_unique_agent_payment_id instead of a second transfer; check the original's fate via getPayment before doing anything else.
Cancel service NCI call

Cancels an already-performed payment. Optional — published only if the SP's interface supports it. Invoke via NCI using the service's cancelServiceCode.

Input parameters

Parameter keyTypeDescription
agentPaymentIdinThe unique identifier you provided during the original payment required
amountinPayment amount — for validation purposes
currencyinPayment currency code (ISO 4217) — for validation purposes

Possible UCC errors

UNKNOWN_PAYMENT WRONG_CANCEL_AMOUNT WRONG_CANCEL_CURRENCY PAYMENT_ALREADY_CANCELED PAYMENT_BUSINESS_DAY_CLOSED

Logical request parametersCopy

The guide defines no output parameters for cancel — treat a fault-free response as success and confirm final state via payment status (CANCELLINGCANCELED). To be verified against the WSDL.

Same-day only Cancellation is rejected with PAYMENT_BUSINESS_DAY_CLOSED once the payment's business day has been closed by reconciliation — plan customer-facing refund flows accordingly.
reconcile operation

Closes a business day by exchanging summary totals with UCC. Send your business day ID plus the count and summary amount of successfully performed payments; UCC responds with its own expected figures and the resulting day status.

Request parameters

FieldTypeDescription
businessDayIdstring(20)Unique identifier of the bank's "business day" required
paymentAmountfloatSummary amount of successfully performed payments within the day. May contain payments in different currencies.
paymentsNumberfloatNumber of successfully performed payments within the day.

Response

FieldTypeDescription
returnReconciliationResultDay status plus UCC's expected totals — see ReconciliationResult

Possible faults

UNKNOWN_BUSINESS_DAY SYSTEM_INTERNAL_ERROR

Request body (logical, pre-encryption)Copy
Response bodyCopy
Naming discrepancy in the source The guide's schema diagrams name the request fields paymentsAmount / paymentsNumber and the result type ReconcilationResult (sic), while its tables say paymentAmount / expectedPaymentAmount and "ReconsiliationResult". The examples above follow the diagrams; the WSDL will settle the exact element names.
The day closes in any case: CLOSED_NORMAL if the figures match, CLOSED_IRREGULAR if they don't. An irregular close triggers manual investigation by UCC and bank staff, after which a UCC officer may move the day to CLOSED_AFTER_REVISION.
getPayments operation

Retrieves all payments associated with a business day — useful for investigating an irregular reconciliation or rebuilding your local ledger.

Request parameters

FieldTypeDescription
businessDayIdstring(20)The business day to list payments for — the single input parameter required

Response

FieldTypeDescription
returnPayment[]List of Payment objects associated with the business day
Request body (logical, pre-encryption)Copy
Response body (trimmed)Copy
registerClearingOrder operation

Publishes a clearing order on the UCC server and associates payments to it. Clearing with SPs is performed by banks themselves — registration on UCC is for informational purposes, giving the SP a clear view of performed or upcoming funds transfers. It is strongly recommended to register clearing only for reconciled operations.

Request parameters

FieldTypeDescription
clearingOrderClearingOrderThe clearing order document — see ClearingOrder required
paymentIdsstring(20)[]UCC payment IDs covered by this clearing order (1..∞) required

Possible faults

UNKNOWN_SERVICE_PROVIDER UNKNOWN_PAYMENT ILLEGAL_CLEARING_PAYMENT ILLEGAL_CLEARING_CURRENCY ILLEGAL_CLEARING_SP_CODE WRONG_CLEARING_AMOUNT NON_UNIQUE_BANK_ORDER_NUMBER

Request body (logical, pre-encryption)Copy

WRONG_CLEARING_AMOUNT means the clearing order's amount must equal the summary amount of the referenced payments — recalculate before resubmitting.

getServiceProviders operation

Returns the full catalog of service providers incorporated into UCC — company details, bank accounts, treasury codes, provided services with their NCI codes, and commission tables. Takes no parameters.

Response

FieldTypeDescription
returnServiceProvider[]List of ServiceProvider objects
Response body (trimmed)Copy
Commission tables ship with this catalog — the serviceComissions list on each service is what the commission algorithm runs against. Sync regularly so codes, accounts, and fees stay current.
getPayment · getCommission referenced

Two further operations are referenced by the Integration Guide but not defined in it:

OperationReferenced byPurpose (as referenced)
getPaymentNon_unique_agent_payment_id handlingFetch the status of a single payment — the recommended way to resolve duplicate-ID responses.
getCommissionCOMMISSION_CALCULATION_ERRORServer-side commission calculation for a prospective payment.
Subject to a future revision Request/response signatures for these operations are not described in the Integration Guide. They will be published here in an upcoming revision; until then, request details from your UCC integration contact if you need them.

Payment

The full payment record as stored by UCC — returned by getPayments.

PropertyTypeDescription
paymentIdstring(20)Payment unique identifier within the UCC system
agentPaymentIdstring(20)Payment unique identifier provided by the service consumer (i.e. bank)
serviceCodestring(10)Service unique code within the service provider
serviceProviderCodestring(10)Service provider unique code
abonentCodestring(40)Customer's abonent code in the SP
businessDayIdstring(20)"Business day" unique identifier provided by the service consumer
amountfloatPayment amount
currencystring(3)Payment currency code (ISO 4217)
commissionfloatPayment commission dedicated to the service consumer
paymentTimedateTimePayment time
paymentChannelstring(20)Payment channel, e.g. ATM, ServiceCenter, IBanking
paymentPointstring(20)Payment point code, e.g. the bank's service center code
paymentPurposestring(150)Payment purpose
additionalInfostring(250)Additional information
payerNamestring(50)Payer name
payerIdentificationNumberstring(50)Legal entity identification code or individual person's personal number
treasuryCodestring(9)Treasury code
clearingOrderDocumentNumberstring(20)Bank's clearing order number
srcBankCodestring(10)Source bank code (service consumer bank code)
dstBankCodestring(10)Destination bank code (service provider bank code)
statusenumSee Payment statuses
errorCodestring(50)Error code if the payment failed
errorMessagestring(200)Error message if the payment failed

ReconciliationResult

Returned by reconcile. (Spelled ReconcilationResult in the guide's schema diagram — verify against the WSDL.)

PropertyTypeDescription
businessDayStatusenumSee Business day statuses
expectedPaymentAmountfloatUCC's expected payments summary amount within the reconciled day (diagram: expectedPaymentsAmount)
expectedPaymentsNumberfloatUCC's expected payments count within the reconciled day

ClearingOrder

The clearing order document passed to registerClearingOrder.

PropertyTypeDescription
bankOrderDocumentNumberstring(20)Unique identifier (number) of the clearing order document generated in the bank
serviceProviderCodestring(20)Unique identifier of the service provider — destination of the funds transfer
amountfloatAmount of transfer
currencystring(3)Currency of transfer
paymentPurposestring(150)Purpose of the payment
additionalInfostring(250)Additional information
payerNamestring(50)Payer name
payerIdentificationNumberstring(50)Legal entity identification code or individual person's personal number
treasuryCodestring(9)Treasury code
clearingTimedateTimeClearing order generation time
receiverBankCodestring(10)Receiver bank code
receiverBankAccountstring(20)Receiver bank account

ServiceProvider

Top-level catalog record returned by getServiceProviders.

PropertyTypeDescription
codestring(20)Unique identifier of the SP, e.g. MGT for Magti
namestring(50)Name of the SP
nameEnstring(50)English name of the SP
shortNamestring(20)Short name of the SP
contactPersonstring(50)Contact person
phonestring(50)Phone number
faxstring(50)Fax number
emailstring(50)Email
addressstring(100)Address
registrationCodestring(9)Registration code
serviceProviderAccounts0..∞List of SP accounts — see ServiceProviderAccount
services0..∞List of the SP's provided services — see Service

ServiceProviderAccount

PropertyTypeDescription
bankCodestring(10)Bank code
bankAccountNumberstring(20)Bank account number
bankAccountNamestring(50)Bank account name
activeboolIndicates whether the account can still be used
TreasuryCodes1..∞List of treasury codes — see TreasuryCode

TreasuryCode

PropertyTypeDescription
codestring(9)Treasury code
descriptionstring(250)Description of the treasury code

Service

A single service provided by an SP. The four *ServiceCode fields are the identifiers you pass to NCI to invoke the corresponding call.

PropertyTypeDescription
serviceCodestring(10)Unique identifier of the service within the SP, e.g. BAL for Magti Bali payment
descriptionstring(50)Textual description of the service
descriptionEnstring(50)English textual description of the service
verifyServiceCodeNCI code for the verify service type not stated in the guide
debtServiceCodestring(20)NCI code for the debt service
payServiceCodestring(20)NCI code for the payment service
cancelServiceCodestring(20)NCI code for the cancellation service
abonentDetailsPatternstring(50)No description in the guide — confirm semantics with UCC
activeboolIndicates whether the service can still be consumed
allAgentAccountsboolIndicates whether all SP accounts can be selected for the service
serviceAccounts1..∞Accounts selectable for this service — see ServiceProviderAccount
serviceIconbyte(N)Icon associated with the SP
serviceComissions1..∞List of ServiceCommission objects
oneTimePaymentboolOne-time payment — such a payment is not saved in the payment list
immediateTransactionboolImmediate transaction — payment clearing takes place immediately
additionalInfoboolIndicates whether the additional-information field will be present in the clearing order
transferCommissionsboolIf true, transfer commissions are included in the clearing
phoneAbonentCodeboolWhether the abonent code is a phone number
Spelling in the source The guide's table spells serviceComissions (one "m") while the schema diagram shows tns:serviceCommissions. The diagram also shows tns:transferCommissions. The WSDL will settle the wire names — until then, expect either spelling.

ServiceCommission

A single row of a service's commission table — the input to the commission algorithm.

PropertyTypeDescription
minAmountfloatPayment amount from (inclusive)
maxAmountfloatPayment amount to (exclusive)
currencystring(3)Payment currency
serviceConsumerCodestring(10)Service consumer (bank) code
paymentChannelstring(20)Payment channel
commissionFixedfloatFixed commission
commissionPercentfloatCommission percent
minCommissionfloatLower bound — the commission is never less than this
maxCommissionfloatUpper bound — the commission is never greater than this

Payment statuses

Lifecycle statuses of a payment within UCC:

StatusKindMeaning
PERFORMINGNon-terminalPayment in progress — e.g. request sent to the SP, no response yet.
PERFORMEDTerminalPayment performed successfully.
REJECTEDTerminalPayment rejected by the SP.
FAILEDGrey stateCommunication failure — the payment's state in the SP is unknown. Manual investigation between SP and UCC staff is the only way to resolve it.
CANCELLINGNon-terminalCancellation in progress — request sent to the SP, no response yet.
CANCELEDTerminalCancellation performed successfully.

Business day statuses

StatusMeaning
OPENEDDay is active — payments and cancellations are accepted.
CLOSED_NORMALExchanged summary data matched during reconciliation; day finalized.
CLOSED_IRREGULARSummary data mismatched; the day still closed, but manual investigation by UCC and bank staff follows.
CLOSED_AFTER_REVISIONSet by a UCC officer after the manual investigation completes.

Payment lifecycle & the grey state

  • PERFORMING. Your NCI payment call is in flight to the SP. If the call returns normally you receive paymentId and commission and the payment lands in PERFORMED; an SP-side refusal lands it in REJECTED.
  • Failure before the SP. Pre_payment_error guarantees the payment message never left for the SP — nothing was performed, so you may safely resubmit (keep the same agentPaymentId only if the original call produced no payment record; on Non_unique_agent_payment_id, check via getPayment first).
  • Failure after the SP — FAILED. Payment_network_failure means the connection dropped and UCC cannot tell whether the SP performed the payment. The status is a genuine unknown; the guide prescribes manual investigation (telephone or email between SP and UCC staff) as the only resolution path.
  • Cancellation. Where the SP supports it, cancel moves the payment through CANCELLING to CANCELED — but only while the business day is still OPENED.
Never auto-retry a grey-state payment Retrying a FAILED payment with a fresh agentPaymentId can double-charge the customer if the original did reach the SP. Park it, surface it to operations, and resolve through the manual investigation channel.

Business day & clearing

  • Open a day. Choose a unique businessDayId and stamp it on every payment you take. The day is OPENED for as long as you keep transacting under it.
  • Keep totals as you go. You will need the count and summary amount of successfully performed payments for reconciliation.
  • Reconcile at day end. Call reconcile. The day closes no matter what: CLOSED_NORMAL on a match, CLOSED_IRREGULAR on a mismatch. Use getPayments to pull UCC's view of the day when investigating an irregular close.
  • Clear reconciled operations. Generate clearing orders in your systems and register them via registerClearingOrder, listing the covered paymentIds. The guide strongly recommends clearing only reconciled operations.
Watch immediateTransaction Services flagged immediateTransaction: true in the catalog are cleared immediately — factor them out of your end-of-day clearing batch logic.

Commission calculation

For each consumed payment, UCC calculates the commission dedicated to the service consumer (i.e. the bank) from the service's commission table (shipped with the catalog — see ServiceCommission).

Selection & calculation algorithmCopy

The record is matched on amount range, currency, payment channel, and consumer code. If no record matches, paymentChannel is excluded from the query first, then serviceConsumerCode — so provider-wide defaults act as fallbacks for channel- or bank-specific rows. If no record can be found at all, getCommission fails with COMMISSION_CALCULATION_ERROR.

UCC Developer Docs — Online Payments · Based on the UCC Integration Guide v1.7 (Azry Ltd, issue date July 23, 2024) and the NCI service WSDLs. Sections marked "subject to confirmation" will be updated as the UCC web services contract is finalized. Confirm environment specifics with your UCC integration contact before go-live.