Verified against: Public OpenAPI 2.0.0

Authoritative state

Verify before fulfillment

GET/api/v2/payments/verify/{transaction_id}
Read the merchant-scoped transaction state from your backend.

Redirect parameters are customer-controlled navigation data. Verify the transaction server-side, confirm it belongs to the expected order and amount, then perform fulfillment exactly once.

Idempotent fulfillment

In one database transaction, lock or claim the merchant order, record the Moneybag transaction ID and verified state, and apply fulfillment only when it has not already occurred. Repeated redirects, reads, and webhook deliveries must reach the same result without repeating the side effect.

API reference

The public artifact defines the transaction path parameter, the complete verification response fields, and the validation-error response. It does not define polling intervals or a retry schedule.

GET/api/v2/payments/verify/{transaction_id}

Verify Payment

Verify Payment API This endpoint verifies the status of a payment transaction using the transaction ID. It checks the transaction status and returns the result. Args: transaction_id: Unique identifier for the payment transaction payment_service: Service for managing payment transactions payment_session: Service for managing payment sessions Returns: PaymentResponses: Response with payment verification details Raises: HTTPException: If the transaction doesn't exist or has expired

Operation ID
verify_payment_api_v2_payments_verify__transaction_id__get
Environment
https://sandbox.api.moneybag.com.bd (Moneybag sandbox)
Authentication
X-Merchant-API-Key — Sandbox merchant API key. Live keys are rejected.

Parameters

FieldTypeRequiredConstraints and meaning
path.transaction_idstringYes
Transaction ID for the payment

Request body

No request body.

Sandbox example

Set the merchant key and replace resource identifiers with values created in your sandbox workspace.

curl --request GET "https://sandbox.api.moneybag.com.bd/api/v2/payments/verify/${TRANSACTION_ID}" \
  --header "X-Merchant-API-Key: $MONEYBAG_MERCHANT_KEY"

Run this reviewed operation in the API Lab →

Responses

200 Successful Response

Content type: application/json. Schema: PaymentResponses.

FieldTypeRequiredConstraints and meaning
dataCheckoutResponse | SessionResponse | ProcessResponse | VerificationResponse | InvoiceDetailsResponse | CancelResponse | CheckoutResponse | SessionResponse | ProcessResponse | VerificationResponse | InvoiceDetailsResponse | CancelResponse[] | nullNo
data<CheckoutResponse>.checkout_urlstringWhen parent is present
data<CheckoutResponse>.expires_atstringWhen parent is present
data<CheckoutResponse>.session_idstringWhen parent is present
data<SessionResponse>.bleedingbooleanNodefault false
Whether merchant pays service charges (bleeding)
data<SessionResponse>.business_namestring | nullNo
data<SessionResponse>.currencystringWhen parent is present
data<SessionResponse>.customerobject | nullNo
data<SessionResponse>.emi_checkout_idstring | nullNo
Selected EMI configuration UUID if pre-selected
data<SessionResponse>.emi_fee_bleedingbooleanNodefault false
Whether merchant pays EMI fees (emi_fee_bleeding)
data<SessionResponse>.emi_payment_optionsobject[] | nullNo
EMI payment options with calculations
data<SessionResponse>.expires_atstringWhen parent is present
data<SessionResponse>.merchant_logostring | nullNo
data<SessionResponse>.order_amountstringWhen parent is presentpattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
data<SessionResponse>.order_descriptionstring | nullNo
data<SessionResponse>.order_idstringWhen parent is present
data<SessionResponse>.payment_optionsobject[]When parent is present
data<SessionResponse>.requires_emibooleanNodefault false
Whether EMI payment options are available
data<SessionResponse>.selected_emi_configurationSelectedEMIConfiguration | nullNo
Selected EMI configuration with emi_configuration_id, service_id and service_uuid
data<SessionResponse>.selected_emi_configuration.emi_configuration_idstringWhen parent is present
Selected EMI configuration ID
data<SessionResponse>.selected_emi_configuration.payment_service_idinteger | string | nullNo
Deprecated alias of service_id, kept for backward compatibility
data<SessionResponse>.selected_emi_configuration.service_idinteger | nullNo
Internal merchant payment service id, matches payment_options[].service_id
data<SessionResponse>.selected_emi_configuration.service_uuidstring | nullNo
Public merchant payment service UUID, matches payment_options[].service_uuid
data<SessionResponse>.session_idstringWhen parent is present
data<SessionResponse>.statusstringWhen parent is present
data<ProcessResponse>.metaobject | nullNo
data<ProcessResponse>.redirect_urlstring | nullNoformat uri; minimum length 1
data<ProcessResponse>.transaction_idstringWhen parent is present
data<VerificationResponse>.amountstringWhen parent is presentpattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
data<VerificationResponse>.charge_amountstringWhen parent is presentpattern ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
data<VerificationResponse>.currencystringWhen parent is present
data<VerificationResponse>.customerCustomerWhen parent is present
data<VerificationResponse>.customer.addressstring | nullNo
Customer's address
data<VerificationResponse>.customer.citystring | nullNo
Customer's city
data<VerificationResponse>.customer.countrystring | nullNo
Customer's country
data<VerificationResponse>.customer.emailstringWhen parent is presentformat email
Customer's email address
data<VerificationResponse>.customer.metadataobject | nullNo
Additional customer-specific data
data<VerificationResponse>.customer.namestringWhen parent is present
Customer's full name
data<VerificationResponse>.customer.phonestringWhen parent is present
Customer's phone number
data<VerificationResponse>.customer.postcodestring | nullNo
Customer's postal code
data<VerificationResponse>.order_idstringWhen parent is present
data<VerificationResponse>.payment_methodstringWhen parent is present
data<VerificationResponse>.payment_reference_idstringWhen parent is present
data<VerificationResponse>.statusstringWhen parent is present
data<VerificationResponse>.transaction_idstringWhen parent is present
data<VerificationResponse>.verifiedbooleanWhen parent is present
data<InvoiceDetailsResponse>.all_totalnumberWhen parent is present
data<InvoiceDetailsResponse>.business_namestringWhen parent is present
data<InvoiceDetailsResponse>.customerobject | nullWhen parent is present
data<InvoiceDetailsResponse>.due_datestring | nullWhen parent is present
data<InvoiceDetailsResponse>.gross_discountnumberWhen parent is present
data<InvoiceDetailsResponse>.invoice_idstringWhen parent is present
data<InvoiceDetailsResponse>.invoice_itemsobject[]When parent is present
data<InvoiceDetailsResponse>.invoice_statusstringWhen parent is present
data<InvoiceDetailsResponse>.invoice_typestring | nullNo
data<InvoiceDetailsResponse>.merchant_logostring | nullNo
data<InvoiceDetailsResponse>.payable_amountnumberWhen parent is present
data<InvoiceDetailsResponse>.uuidstringWhen parent is present
data<CancelResponse>.order_idstringWhen parent is present
data<CancelResponse>.redirect_urlstringWhen parent is present
data<CancelResponse>.session_idstringWhen parent is present
data<CancelResponse>.statusstringNodefault "CANCELLED"
messagestring | nullNo
metaobject | nullNo
successbooleanYes

422 Validation Error

Content type: application/json. Schema: HTTPValidationError.

FieldTypeRequiredConstraints and meaning
detailValidationError[]No
detail[].locstring | integer[]When parent is present
detail[].msgstringWhen parent is present
detail[].typestringWhen parent is present
OpenAPI 2.0.0 · operation verify_payment_api_v2_payments_verify__transaction_id__get · contract digest cd0bbb4532452feec6b880fcc3d9190688618f7bcba1987cf518bc9107799cfe