Understand common payment fields

Plain-English explanations of the JSON objects reused by payment operations.

Several operations reuse the same small JSON shapes. This page explains every parent object and leaf field once. An operation page tells you whether that shape is required, optional, or conditional for that operation.

How to read a property rule

For every property, answer these five questions before writing code:

  1. Who sends it? Blinc sends every request property. The institution sends every response property.
  2. Must it exist? Required means present and non-null. Optional means it may be omitted or null as the operation states. Conditional means the stated condition decides.
  3. What exact value is normal? Use the operation example and code-values page. A standard example value is not permission to invent a missing value.
  4. What does it control? The explanation states whether the field is for routing, identity, money movement, reconciliation, display, or security.
  5. What happens when it is wrong? Validate before changing account or financial state. Return the documented transport or protected business rejection.

No required property has an automatic default. If Blinc omits a required request property, reject the
request. If the institution must return a required response property, it must calculate or copy that
property as described; it must not leave it blank.

Amount

{ "Amt": 2500.00, "Ccy": "NGN" }
PathType / requiredMeaning and rule
Amount objectObject / Required when its parent amount is presentKeeps the number and its currency together. Never process one without the other.
AmtDecimal / RequiredAmount in normal currency units. 2500.00 means NGN 2,500.00, not kobo. Financial-action amounts must be positive; a documented charge may be zero.
CcyThree-letter text / RequiredBlinc sends the currency of this amount. The current contract value is NGN. The institution validates it against the account and all related amounts. Never infer NGN when the property is missing.

Code wrapper

{ "Cd": "OTHR" }
PathType / requiredMeaning and rule
Code-wrapper objectObject / Required when the coded concept is presentContainer used by ISO-style messages so a code is not confused with free text.
CdText / RequiredBlinc sends this code in requests; the institution sends it in responses. Its meaning depends on the parent path, so read that operation's field row and the code-values page. Accept only a listed literal value, including exact uppercase spelling. Do not infer a missing code.

Generic identifier

{
  "Othr": {
    "Id": "0123456789",
    "SchmeNm": { "Cd": "NUBAN" }
  }
}
Relative pathType / requiredMeaning and rule
Id (outer)Object / RequiredSays the parent party or account uses a structured identifier.
Id.OthrObject / Required for the documented non-IBAN flow"Other identifier": use this because the value is carried under a named scheme rather than as an IBAN.
Id.Othr.IdText / RequiredThe actual identifier supplied by Blinc, such as an account number, BVN, creditor ID, or business reference. SchmeNm.Cd tells the institution which one it is. Treat customer and account values as sensitive and preserve opaque business IDs exactly.
Id.Othr.SchmeNmObject / Required"Scheme name": container explaining how to interpret and validate the identifier.
Id.Othr.SchmeNm.CdText / RequiredExplains how to read Id.Othr.Id: NUBAN means an account number, BVN means a customer BVN, and BLINC means an identifier assigned or recognised under this contract. Validate the value using that exact scheme. There is no default scheme.

When a field explicitly permits an International Bank Account Number, Id.IBAN is the complete IBAN text and Id.Othr is omitted. Do not send both forms unless a separate rule explicitly allows it.

Party

{
  "Nm": "Ada Okafor",
  "Id": { "Othr": { "Id": "12345678901", "SchmeNm": { "Cd": "BVN" } } }
}
Relative pathType / requiredMeaning and rule
Party objectObject / Required when the operation names a debtor, creditor, originator, or initiating partyDescribes one person or organisation.
NmText / RequiredHuman-readable name for statements, audit, and support. Do not use the name alone as a security identifier.
IdObject or null / ConditionalStructured identity using the generic identifier shape above. Required when the operation needs identity matching; optional when the party is only descriptive.

Account

{
  "Id": { "Othr": { "Id": "0123456789", "SchmeNm": { "Cd": "NUBAN" } } }
}
Relative pathType / requiredMeaning and rule
Account objectObject / RequiredIdentifies one account involved in the operation.
IdObject / RequiredAccount-identifier container using the generic identifier shape above. Validate format, existence, ownership, status, currency, and operation eligibility.

Financial institution

{
  "FinInstnId": {
    "BICFI": "EXAMPLEBIC",
    "Name": "Example Issuer",
    "ClrSysMmbId": { "MmbId": "000001" }
  }
}
Relative pathType / requiredMeaning and rule
Institution-agent objectObject / RequiredIdentifies the institution acting in the role named by the parent, such as debtor agent or creditor agent.
FinInstnIdObject / Required where shown"Financial institution identification": groups BIC, display name, and clearing identity. Some fields, such as IntermediaryAgent, contain these three children directly without this wrapper.
FinInstnId.BICFIText or null / ConditionalBank Identifier Code. Validate its format when the onboarding/routing agreement uses it.
FinInstnId.NameText / RequiredHuman-readable institution name for display and audit. Do not route by name.
FinInstnId.ClrSysMmbIdObject / Required"Clearing-system member identification": container for the assigned routing member code.
FinInstnId.ClrSysMmbId.MmbIdText / RequiredSix-digit member code issued by Blinc. It must identify the institution expected in that payment role. Do not create or substitute a code.

Payment identifiers

Relative pathType / requiredMeaning and rule
PmtIdObject / RequiredGroups identifiers that let different systems trace the same payment. All values are opaque. They stay unchanged when Blinc retries Credit Notification, Credit Transfer, or Reverse. After a Debit Authorization timeout, the original debit references are carried into Reverse; Blinc does not resend the debit.
PmtId.InstrIdText / RequiredIdentifies one instruction. Do not reuse it for another instruction.
PmtId.EndToEndIdText / RequiredMain reference carried from initiation to final outcome. Preserve it in responses and later related operations.
PmtId.TxIdText / RequiredIdentifies the transaction in the switching flow.
PmtId.ClrSysRefText / RequiredClearing-system reference for reconciliation and support.

Payment classification

Relative pathType / requiredMeaning and rule
PmtTpInfObject / Required"Payment type information": groups service, purpose, product, and optional sequence classification.
PmtTpInf.SvcLvlCode-wrapper object / RequiredService-level rules applied to the payment.
PmtTpInf.SvcLvl.CdText / RequiredBlinc sends the service-level code agreed during onboarding. It selects the service rules applied to this payment. The institution validates the supplied code; it must not guess or replace a missing value.
PmtTpInf.CtgyPurpCode-wrapper object / RequiredBusiness-purpose category.
PmtTpInf.CtgyPurp.CdText / RequiredBlinc sends the agreed business-purpose category. GDAS is the documented value for the current payment flows.
PmtTpInf.LclInstrmCode-wrapper object / RequiredLocal payment product/rule set.
PmtTpInf.LclInstrm.CdText / RequiredBlinc sends the local payment-product code agreed during onboarding. It tells the institution which local processing rules apply. Reject an unknown or missing code.
PmtTpInf.SeqTpText or null / ConditionalBlinc sends the collection position. Use OOFF for the one-off Debit Authorization and null for Credit Transfer, where collection sequencing does not apply. The institution validates rather than chooses it.

Remittance and invoice information

Relative pathType / requiredMeaning and rule
RmtInfObject / Required"Remittance information": describes why the money moved.
RmtInf.UstrdText / RequiredUnstructured human-readable narration for statements.
RmtInf.StrdObject or null / OptionalStructured invoice/document information. Validate every child when present.
RmtInf.Strd.RfrdDocAmtObject / Conditional"Referred document amount": groups original due, adjustment, and actual remitted amounts.
...RfrdDocAmt.DuePyblAmtAmount object / ConditionalOriginal amount payable for the document.
...RfrdDocAmt.AdjstmntAmtAndRsnObject / ConditionalAdjustment made to the due amount.
...AdjstmntAmtAndRsn.AmtAmount object / ConditionalSize and currency of the adjustment.
...AdjstmntAmtAndRsn.RsnText / ConditionalBlinc sends the reason for changing the document amount. Use only COMM, COST, DISC, EARL, PENF, TAX, ADJS, or CREN, with the meanings on the code-values page. There is no default reason.
...AdjstmntAmtAndRsn.AddtlInfText / ConditionalPlain additional explanation without secrets.
...RfrdDocAmt.RmtdAmtAmount object / ConditionalAmount actually remitted. It must reconcile with due amount and adjustment.
RmtInf.Strd.RfrdDocInfObject or null / OptionalContainer identifying the invoice or document.
...RfrdDocInf.NbText or null / OptionalOpaque invoice/document number.

Charges

Debit Authorization, Credit Transfer, and Credit Notification each carry the fee that Blinc's
FeeBreakdown computes for that operation, but the total fee is charged once; never added or
subtracted a second time by summing role shares on top of it.

  • Debit Authorization charges the full FeeBreakdown.TotalFee once. Chrgs shows that
    amount as FEE and also shows the issuer's share as COMMISSION. The commission is part of
    the fee breakdown, not an extra charge. TtlChrgs equals the FEE amount, and
    NetSttlmAmt equals InstdAmt minus that one fee. See its own operation guide.
  • Credit Transfer uses the same Chrgs/TtlChrgs/NetSttlmAmt shape, but every item's Tp
    must equal ACQUIRER; it carries FeeBreakdown.AcquirerShare only. See its own
    operation guide.
  • All three adjustment-bearing messages carry TttlCharges inside
    RmtInf.Strd.RfrdDocAmt.AdjstmntAmtAndRsn; it reports the complete transaction fee while
    Amt continues to identify the adjustment's specific share.
  • Credit Notification carries FeeBreakdown.PaymentFacilitatorShare in that adjustment,
    with Rsn fixed to PAYMENT_FACILITATOR. See
    Remittance adjustment reasons and its own
    operation guide.

Across all three operations: amounts are in major currency units (not minor/cents), a zero share
must be sent explicitly rather than omitted or null-dropped, and every charge/adjustment currency
must match InstdAmt.Ccy (or the entry amount currency for Credit Notification).

Relative pathType / requiredMeaning and rule
ChrgsArray / Required (Debit Authorization, Credit Transfer)Itemized charges, each with Tp, Cd, Amt, and Rcpt. Tp is FEE/COMMISSION for Debit Authorization, ACQUIRER for Credit Transfer.
Chrgs[].AmtAmount object / RequiredCharge item amount and currency. The amount may be zero when the operation requires an explicit no-charge statement.
Chrgs[].RcptFinancial-institution object / RequiredInstitution receiving this charge item. Validate name/member identity as described above.
TtlChrgsAmount object / Required (Debit Authorization, Credit Transfer)The fee charged for this operation. For Debit Authorization it equals the FEE item, not FEE plus COMMISSION. For Credit Transfer it equals the ACQUIRER item. Currency must match InstdAmt.Ccy.
NetSttlmAmtAmount object / Required (Debit Authorization, Credit Transfer)InstdAmt minus TtlChrgs; drives settlement/posting.

Merchant and terminal

Relative pathType / requiredMeaning and rule
MerchantObject or null / Operation-specificGroups merchant and terminal context. Required for merchant/terminal flows; it can be absent where the operation explicitly permits it.
Merchant.TerminalIdText / Required with merchant contextTerminal or channel identifier. It is not an authentication key.
Merchant.MerchantNameText / Required with merchant contextHuman-readable merchant name.
Merchant.MerchantCategoryCodeText / Required with merchant contextCode describing the merchant's business type.
Merchant.TerminalLocationText or null / OptionalTerminal location. Treat it as sensitive.
Merchant.TerminalReferenceText or null / OptionalTerminal's opaque transaction reference. Keep it unchanged when Blinc retries Credit Notification, Credit Transfer, or Reverse. Preserve the original debit value when it is needed to reconcile or Reverse a timed-out debit.
Merchant.TerminalTimestampUTC date-time text or null / OptionalTime recorded by the terminal. It must be plausible relative to the payment times.

Payment result

Relative pathType / requiredMeaning and rule
TxInfAndStsObject / Required"Transaction information and status": result of one financial instruction.
TxInfAndSts.OrgnlInstrIdText / RequiredCopy of the request instruction ID.
TxInfAndSts.OrgnlEndToEndIdText / RequiredCopy of the request end-to-end ID.
TxInfAndSts.OrgnlTxIdText / RequiredCopy of the request transaction ID.
TxInfAndSts.TxStsText / RequiredThe institution sends the final business result. Return ACSC only after the requested payment action is committed; return RJCT when it did not complete. HTTP 200 only confirms delivery of the protected response and does not choose this value.
TxInfAndSts.StsRsnInfObject or null / ConditionalNull on success; required on rejection.
...StsRsnInf.OrgtrObject / ConditionalContainer for the decision originator.
...StsRsnInf.Orgtr.NmText / ConditionalInstitution/component that made the rejection decision.
...StsRsnInf.RsnObject / ConditionalContainer for the stable reason code.
...StsRsnInf.Rsn.CdText / ConditionalReason code documented in errors and retries.
...StsRsnInf.AddtlInfText / ConditionalSimple cause and correction without protected data.
TxInfAndSts.SplmtryDataObject / RequiredExtra response data agreed for the operation.
...SplmtryData.PlcAndNmText / RequiredThe institution sends the fixed label AdditionalDetails to identify the response's supplementary block. Do not omit or rename it.
...SplmtryData.EnvlpObject / RequiredEnvelope for response custom values.
...Envlp.CustomParamObject or null / OptionalAgreed reconciliation references. Never place undocumented secrets here.

Next

Read Understand code values before building an operation.


Did this page help you?