Payment Confirmation API

Overview

The MassPay Payment Confirmation API is a secure, pull-based REST API that enables customers to retrieve machine-readable payment confirmations for payments processed through MassPay. Confirmations can be used for treasury reconciliation, audit evidence, beneficiary servicing, payment tracking, ERP posting, and downstream operational workflows.

The API supports two selectable confirmation formats:

CPP-equivalent JSON: the canonical MassPay/CPP confirmation schema for customer system integration.

ISO 20022 pacs.008 XML: available where enabled for eligible corridors and customer configurations.

API Endpoint & Base URLs

HTTP Method: GET

Path: /confirmations/customers/{customerId}/payments/{paymentId}

Environments:

Sandbox / UAT: https://masspaysandbox-oauth.api.convera.com/masspayments/confirmations/customers/{customerId}/payments/{paymentId}

Production: https://oauth.api.convera.com/masspayments/confirmations/customers/{customerId}/payments/{paymentId}

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer {oauth_access_token} issued via approved MassPay API credentials.
AcceptRecommendedUse application/json for CPP confirmation or application/xml for pacs.008 confirmation.
Accept-VersionRecommendedAPI version header used to support non-breaking contract evolution.
X-Correlation-IdRecommendedCustomer-generated identifier for end-to-end audit tracing, operational support, and log correlation.

Request Specification

Path Parameters

customerId (string, required): Convera-assigned customer identifier.

paymentId (string, required): MassPay unique payment identifier.

Query Parameters

format (string, optional): Requested confirmation format. Supported values are CPP and PACS008. Defaults to CPP if omitted.

includeSignature (boolean, optional): When true, returns a cryptographic signature where configured for the customer and format.

GET /confirmations/customers/12345/payments/95a147ec-986a-4c25-b569-a96955340d9b?format=CPP&includeSignature=false
Authorization: Bearer {oauth_access_token}
Accept: application/json
Accept-Version: 1
X-Correlation-Id: deb2787e-da14-4ebe-b701-d8de79000452

Response Specification & Handling Matrix

Example CPP JSON Response

{
  "confirmation": {
    "paymentId": "95a147ec-986a-4c25-b569-a96955340d9b",
    "customerPaymentId": "PT213668465614",
    "orderId": "42926719-3b0b-4307-8607-3bb6791d0f4e",
    "batchId": "NTR7865170",
    "status": "SENT_TO_NETWORK",
    "amount": {
      "currency": "USD",
      "value": 100.00
    },
    "beneficiary": {
      "name": "ACME SUPPLIER LLC",
      "account": {
        "accountNumber": "000123456789"
      },
      "bank": {
        "bic": "CHASUS33XXX",
        "name": "JPMORGAN CHASE BANK",
        "country": "US"
      }
    },
    "payer": {
      "name": "ACME INC",
      "account": {
        "accountNumber": "9988776655"
      },
      "bank": {
        "bic": "CONVGB2LXXX"
      }
    },
    "chargesBearer": "SHAR",
    "purposeCode": "SALA",
    "endToEndId": "PT213668465614",
    "instructionId": "I-95a147ec",
    "uetr": "f1b7a6a1-23dc-4d3b-8e3b-3f1b1b5a1d11",
    "valueDate": "2024-11-27",
    "createdAt": "2024-11-27T09:10:53.088Z",
    "lastUpdatedAt": "2024-11-27T10:15:20.010Z",
    "networkProvenance": {
      "instructingAgent": "CONVGB2LXXX",
      "instructedAgent": "CHASUS33XXX",
      "clearingReference": "REF123456",
      "localInstrument": "WIRE"
    }
  },
  "metadata": {
    "statusCode": 200,
    "statusDescription": "Success",
    "correlationId": "deb2787e-da14-4ebe-b701-d8de79000452"
  }
}

Example pacs.008 XML Response

GET /confirmations/customers/12345/payments/95a147ec-986a-4c25-b569-a96955340d9b?format=PACS008&includeSignature=false
Accept: application/xml
Authorization: Bearer {oauth_access_token}
X-Correlation-Id: deb2787e-da14-4ebe-b701-d8de79000452

HTTP/1.1 200 OK
Content-Type: application/xml
X-Correlation-Id: deb2787e-da14-4ebe-b701-d8de79000452

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08">
  <FIToFICstmrCdtTrf>
    <GrpHdr>
      <MsgId>I-95a147ec</MsgId>
      <CreDtTm>2024-11-27T09:10:53.088Z</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <SttlmInf>
        <SttlmMtd>CLRG</SttlmMtd>
      </SttlmInf>
      <InstgAgt>
        <FinInstnId>
          <BICFI>CONVGB2LXXX</BICFI>
        </FinInstnId>
      </InstgAgt>
      <InstdAgt>
        <FinInstnId>
          <BICFI>CHASUS33XXX</BICFI>
        </FinInstnId>
      </InstdAgt>
    </GrpHdr>
    <CdtTrfTxInf>
      <PmtId>
        <InstrId>I-95a147ec</InstrId>
        <EndToEndId>PT213668465614</EndToEndId>
        <UETR>f1b7a6a1-23dc-4d3b-8e3b-3f1b1b5a1d11</UETR>
      </PmtId>
      <IntrBkSttlmAmt Ccy="USD">100.00</IntrBkSttlmAmt>
      <IntrBkSttlmDt>2024-11-27</IntrBkSttlmDt>
      <ChrgBr>SHAR</ChrgBr>
      <Dbtr>
        <Nm>ACME INC</Nm>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <Othr>
            <Id>9988776655</Id>
          </Othr>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>CONVGB2LXXX</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <CdtrAgt>
        <FinInstnId>
          <BICFI>CHASUS33XXX</BICFI>
          <Nm>JPMORGAN CHASE BANK</Nm>
        </FinInstnId>
      </CdtrAgt>
      <Cdtr>
        <Nm>ACME SUPPLIER LLC</Nm>
      </Cdtr>
      <CdtrAcct>
        <Id>
          <Othr>
            <Id>000123456789</Id>
          </Othr>
        </Id>
      </CdtrAcct>
      <Purp>
        <Cd>SALA</Cd>
      </Purp>
      <RmtInf>
        <Ustrd>Payment confirmation for customer payment PT213668465614</Ustrd>
      </RmtInf>
    </CdtTrfTxInf>
  </FIToFICstmrCdtTrf>
</Document>

Confirmation Status Values

StatusDescriptionRecommended Customer Action
COMMITTEDPayment is committed in MassPay and confirmation data is available or becoming available.Store the confirmation record and continue monitoring payment progress if final network status is required.
SENT_TO_NETWORKPayment instruction has been released or forwarded to the clearing scheme, correspondent bank, or network.Use as evidence that the payment was instructed externally. Store alongside ERP or treasury records.
ACCEPTEDDownstream network, clearing partner, or receiving institution has accepted the instruction where confirmation is available.Update downstream ledgers and customer-facing payment tracking to reflect accepted status.
REJECTEDPayment was rejected before or during downstream execution.Do not treat as proof of successful payment. Route to exception handling and review reject details.

HTTP Error Handling & Resilience

HTTP StatusScenarioRecommended Handling
200 OKConfirmation successfully returned.Validate the response format, persist the payload, and store key references such as paymentId, customerPaymentId, endToEndId, and uetr.
400 Bad RequestMalformed path, invalid query parameter, or unsupported parameter value.Correct the request before retrying. Do not retry unchanged invalid requests.
401 / 403Authentication failure, expired token, missing scope, or customer not authorised for the resource.Refresh OAuth token and verify production scopes and customer entitlements.
404 Not FoundPayment not found for the specified customer, or requested format is unavailable for the corridor.Check customerId, paymentId, corridor eligibility, and format enablement.
409 ConflictPayment is not yet in a confirmable state.Retry after the Retry-After interval where provided, or wait for the next payment status event.
422 Unprocessable EntityUnsupported parameter combination, such as requesting a signature when signatures are not enabled.Adjust query parameters or confirm customer configuration before retrying.
429 Rate LimitedCustomer or client has exceeded API rate limits.Back off and retry according to the Retry-After header.
5xx Server ErrorTransient platform, gateway, or downstream service issue.Retry using exponential backoff and retain the same X-Correlation-Id for traceability.

Best Practices & Example Flow

Trigger confirmation retrieval from payment state: call the API once the payment reaches a confirmable state such as COMMITTED, SENT_TO_NETWORK, or ACCEPTED.

Store immutable confirmation artefacts: persist the JSON or XML confirmation payload in your customer system for reconciliation, audit, servicing, and dispute support.

Use stable identifiers for reconciliation: index confirmations by paymentId, customerPaymentId, endToEndId, instructionId, and uetr where available.

Apply data protection controls: avoid logging unmasked account details or personal data. Mask beneficiary and payer information in operational logs unless full details are explicitly required and authorised.

Handle unavailable formats gracefully: use CPP JSON as the canonical format and request PACS008 only where the corridor and customer configuration support it.

Verify signatures where enabled: when includeSignature=true, validate the returned JWS or XMLDSIG signature using Convera-published keys and your internal trust policy.

Example Customer Integration Flow

Customer submits or releases a payment through MassPay.

Customer system receives a payment status update or polls until the payment is confirmable.

Customer system calls GET /confirmations/customers/{customerId}/payments/{paymentId} with the desired format.

MassPay returns the confirmation payload and metadata.

Customer stores the confirmation, reconciles it against ERP/treasury records, and exposes the status to authorised internal users.


Did this page help you?
Convera Logo

© 2022 All Rights Reserved