Create loans
/loansApply for a loan, or accept an offer. Selected by the body's type. Applying answers with an offer; accepting it answers with the loan.
LoanCmdAcceptOfferLoanCmdApplyPermissions
Required action depends on the request variant. Select a variant in the request body below to see the permission it requires.
Request body
This body is a typed union. Pick a variant to see its fields, the permission it requires, and a matching example.
typetype = "LoanCmdAcceptOffer"Accept a loan offer
The offer being accepted, the one LoanCmdApply answered with, unchanged.
typeenumrequiredLoanOfferAttributesloanProductIdLprodIdrequiredIdentifier of a loan product.
Example lprod_9f2Kd8QpLzXw
loanAgreementIdLmaIdThe master agreement the loan will be drawn under, where the product uses one.
Example lma_9f2Kd8QpLzXw
merchantIdMchtIdrequiredThe merchant the loan belongs to.
Example mcht_9f2Kd8QpLzXw
timeZonestringrequiredIANA time zone the loan's statement periods will be cut in.
termsAndConditionsstringThe terms and conditions the borrower is agreeing to.
expiresAtstring (date-time)requiredAfter this the offer can no longer be accepted, and a new application is needed.
Example 2026-08-19T04:21:07Z
offerTokenstringrequiredProves the offer is the platform's own. Send it back unchanged.
Example tok_9f2Kd8QpLzXwR4mN
The terms offered. Mirrors what was applied for, with every figure now settled.
typeReal-time settlement offered on these terms.
The limit the account will carry.
typeenumrequiredIsoCurrencyAmountminorCurrencyUnitsinteger (int64)requiredThe amount in minor currency units (e.g. cents for AUD).
Example 1250
currencyIsoCurrencyrequiredThe currency of the given amount as a 3 letter ISO code.
AFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
variableFeenumberrequiredCharged on payments that use real-time settlement, as a decimal.
Example 12.5
A trading account offered on these terms.
accountNamestringrequiredExample Ada Lovelace
customerIdCustIdrequiredIdentifier of a customer.
Example cust_9f2Kd8QpLzXw
The limit the account will carry.
typeenumrequiredIsoCurrencyAmountminorCurrencyUnitsinteger (int64)requiredThe amount in minor currency units (e.g. cents for AUD).
Example 1250
currencyIsoCurrencyrequiredThe currency of the given amount as a 3 letter ISO code.
AFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
What the borrower will be charged.
typeenumrequiredLprodCustomerFeesAttributescurrencyIsoCurrencyrequiredAFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
annualFixedFeeMinorUnitsrequiredCharged to the account annually.
Example 1250
implementationFixedFeeMinorUnitsCharged once, when the loan is established.
Example 1250
extendedPaymentTermsVariableFeenumberCharged on each statement for extended payment terms, on the charges since the last one, as a decimal, 0.01 is 1%.
Example 12.5
Charged on each statement for every earlier statement left overdue. Absent, a loan update keeps the late fee the loan has and a new loan takes its product's; a monthlyRate and minimumFee of 0 charge no late fee.
typeenumrequiredLprodLatePaymentFeeAttributesmonthlyRatenumberrequiredThe monthly rate, as a decimal, 0.02 is 2% a month.
Example 0.9412
minimumFeeMinorUnitsrequiredThe least fee charged for an overdue statement on a statement run.
Example 1250
graceDaysinteger (int32)requiredDays after a statement falls due it may be paid without a late fee.
Example 1250
customerTransactionVariableFeenumberCharged on each statement for its payment terms, on the charges since the last one, as a decimal up to 0.1, 0.01 is 1%. Absent, a loan update keeps the fee the loan has and a new loan takes its product's; 0 charges no fee.
Example 12.5
supportedCardBrandsarray of CardBrandBrands of card that may be issued against the loan.
VisaMasterCardAmericanExpressDinersClubDiscoverUnionPayMaestroEloMirHiper+5 moreShow fewer
Hipercard, Jcb, Electron, Uatp, Unknown
typeA statement each day. Carries no issue day, because every day is one.
A statement each day. Carries no issue day, because every day is one.
A statement every second week, issued on this day of the week.
issueDayOfWeekLprodDayOfWeekrequiredMondayTuesdayWednesdayThursdayFridayUnknownA statement each month, issued on this day of the month.
issueDayOfMonthinteger (int32)requiredExample 6
A statement each week, issued on this day of the week.
issueDayOfWeekLprodDayOfWeekrequiredMondayTuesdayWednesdayThursdayFridayUnknowngraceDaysinteger (int32)requiredDays between statement issue and due dates.
Example 1250
industryGroupLoanIndustryGroupTravelProcurementUnknownproductLineLoanProductLineAPG's product line, as applied for. Signed with the offer, so send it back unchanged.
CentralPayVirtualPayTaaB2bSupplyChainUnknownThe metadata template, as applied for. Signed with the offer, so send it back unchanged.
typeenumrequiredLoanMetadataTemplateAttributesThe fields to check, one entry per field. An empty list checks nothing.
typeenumrequiredLoanMetadataFieldAttributespathstringrequiredWhere the field sits in the metadata JSON object. Names are separated by dots, as in additionalMetaData.dbiInfo.dbiAu. A dotted name may
hold only letters, digits and _; any other name goes in brackets and quotes, as in orders['PO number'] or a['b.c'], where a backslash
escapes a quote. Arrays cannot be indexed. A path that is empty, starts with a dot, has an empty name (a..b), indexes an array (a[0]) or
has a space outside brackets is refused with 400. A field listed twice with the same validator is kept once; with a different
validator it is refused with 400.
Example additionalMetaData.dbiInfo.dbiAu
The checks a field's value must pass. A string value is checked as it is; a number is checked as its JSON text, so 45085 is checked as
"45085". An absent field, null or a blank string is missing: it is never checked for length or format, and is a problem only while a
constraint requires it. A boolean, array or object is invalid, with the issue "Value must be text, not <type>" (a boolean, a JSON
array or a JSON object), and value then carries that type, never the content.
typeenumrequiredLoanMetadataValidatorAttributesnamestringrequiredThe field's display name, used in validation messages. For an additionalMetaData.dbiInfo.<dbiXx> path it is also the column label on
statements and reports. Must not be blank.
Example Order Number
Whether a missing or invalid value holds a charge off the customer statement. LoanMetadataNotRequired: never.
LoanMetadataDaysRequiredWithin: the charge is held until the value is valid or until days days after the transaction was created,
whichever comes first; after that the requirement lapses and the charge is published as it is. Whatever this says, a charge is published
at the first statement close 14 days after authorisation, and a refund is never held. Creating a Mastercard digital card is refused while
a field with days of 1 or more is missing or invalid.
typeA missing or invalid value holds back what this constraint governs until the value is valid, or until days days after the transaction was created. 0 or more; 0 never holds anything.
daysinteger (int32)requiredExample 1250
A missing or invalid value is reported on the transaction and holds nothing back.
A missing or invalid value is reported on the transaction and holds nothing back.
Whether a missing or invalid value holds back a captured transaction's publicAt, the time from which the publicAtAfter and
publicAtBefore transaction filters find it. LoanMetadataNotRequired: never. LoanMetadataDaysRequiredWithin: publicAt is set once
the value is valid or once days days have passed since the transaction was created. Once set, publicAt is not withdrawn.
typeA missing or invalid value holds back what this constraint governs until the value is valid, or until days days after the transaction was created. 0 or more; 0 never holds anything.
daysinteger (int32)requiredExample 1250
A missing or invalid value is reported on the transaction and holds nothing back.
A missing or invalid value is reported on the transaction and holds nothing back.
minLengthinteger (int32)requiredThe fewest characters a present value may have, inclusive, from 0 to 30. A missing or blank value is never measured, so 0 behaves as 1 and is stored as 1: a field is made optional by its constraints, not by its length.
Example 1
maxLengthinteger (int32)requiredThe most characters a present value may have, inclusive, from minLength to 30. Equal to minLength asks for exactly that length.
Example 17
formatLoanMetadataFieldFormatrequiredThe characters a present value may contain. Alphanumeric: letters, digits, whitespace and @ . ; : ? + - * / $ & # < > _ , ( ) % ',
for example PENNY LIM or PO-1234/7. Alphabetic: letters and whitespace, for example PENNY LIM. Numeric: digits and whitespace, for
example 045085; a sign or decimal point is refused. IsoDate: eight digits read as yyyyMMdd, for example 20250501; a month above 12
or a day above 31 is refused. Letters and digits include those of any script.
AlphanumericAlphabeticNumericIsoDateUnknownmetadatamap of any JSON valueFree-form data that will be stored against the loan.
referenceLoanIdstringYour own reference for the loan.
Example your-own-reference
acceptTermsAndConditionsbooleanrequiredConfirmation that the borrower has agreed to the offer's terms and conditions. Must be true.
Example true
curl -X POST https://api.tst.au.apgpay.dev/loans \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "LoanCmdAcceptOffer",
"offer": {
"type": "LoanOfferAttributes",
"loanProductId": "lprod_9f2Kd8QpLzXw",
"loanAgreementId": "lma_9f2Kd8QpLzXw",
"merchantId": "mcht_9f2Kd8QpLzXw",
"timeZone": "string",
"termsAndConditions": "string",
"expiresAt": "2026-08-19T04:21:07Z",
"offerToken": "tok_9f2Kd8QpLzXwR4mN",
"specification": {
"type": "LoanOfferSpecRealtimeSettlement",
"maxLimit": {
"type": "IsoCurrencyAmount",
"minorCurrencyUnits": 1250,
"currency": "AUD"
},
"variableFee": 12.5
},
"metadata": {
"yourKey": {}
},
"referenceLoanId": "your-own-reference"
},
"acceptTermsAndConditions": true
}'Responses
The response is a typed union.
typetype = "LoanCreateRspOffered"An offer of a loan on stated terms. Hand it back to LoanCmdAcceptOffer to open the loan.
typeenumrequiredLoanOfferAttributesloanProductIdLprodIdrequiredIdentifier of a loan product.
Example lprod_9f2Kd8QpLzXw
loanAgreementIdLmaIdThe master agreement the loan will be drawn under, where the product uses one.
Example lma_9f2Kd8QpLzXw
merchantIdMchtIdrequiredThe merchant the loan belongs to.
Example mcht_9f2Kd8QpLzXw
timeZonestringrequiredIANA time zone the loan's statement periods will be cut in.
termsAndConditionsstringThe terms and conditions the borrower is agreeing to.
expiresAtstring (date-time)requiredAfter this the offer can no longer be accepted, and a new application is needed.
Example 2026-08-19T04:21:07Z
offerTokenstringrequiredProves the offer is the platform's own. Send it back unchanged.
Example tok_9f2Kd8QpLzXwR4mN
The terms offered. Mirrors what was applied for, with every figure now settled.
typeReal-time settlement offered on these terms.
The limit the account will carry.
typeenumrequiredIsoCurrencyAmountminorCurrencyUnitsinteger (int64)requiredThe amount in minor currency units (e.g. cents for AUD).
Example 1250
currencyIsoCurrencyrequiredThe currency of the given amount as a 3 letter ISO code.
AFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
variableFeenumberrequiredCharged on payments that use real-time settlement, as a decimal.
Example 12.5
A trading account offered on these terms.
accountNamestringrequiredExample Ada Lovelace
customerIdCustIdrequiredIdentifier of a customer.
Example cust_9f2Kd8QpLzXw
The limit the account will carry.
typeenumrequiredIsoCurrencyAmountminorCurrencyUnitsinteger (int64)requiredThe amount in minor currency units (e.g. cents for AUD).
Example 1250
currencyIsoCurrencyrequiredThe currency of the given amount as a 3 letter ISO code.
AFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
What the borrower will be charged.
typeenumrequiredLprodCustomerFeesAttributescurrencyIsoCurrencyrequiredAFNDZDARSAMDAWGAUDAZNBSDBHDTHB+156 moreShow fewer
PAB, BBD, BYR, BZD, BMD, VEF, BOB, BRL, BND, BGN, BIF, CAD, CVE, KYD, XOF, XAF, XPF, CLP, COP, KMF, CDF, BAM, NIO, CRC, HRK, CUP, CZK, GMD, DKK, MKD, DJF, STD, DOP, VND, XCD, EGP, SVC, ETB, EUR, FKP, FJD, HUF, GHS, GIP, HTG, PYG, GNF, GYD, HKD, UAH, ISK, INR, IRR, IQD, JMD, JOD, KES, PGK, LAK, KWD, MWK, AOA, MMK, GEL, LBP, ALL, HNL, SLL, LRD, LYD, SZL, LSL, MGA, MYR, MUR, MXN, MXV, MDL, MAD, MZN, BOV, NGN, ERN, NAD, NPR, ANG, ILS, TWD, NZD, BTN, KPW, NOK, PEN, MRU, PKR, MOP, TOP, CUC, UYU, PHP, GBP, BWP, QAR, GTQ, ZAR, OMR, KHR, RON, MVR, IDR, RUB, RWF, SHP, SAR, RSD, SCR, SGD, SBD, KGS, SOS, TJS, SSP, LKR, SDG, SRD, SEK, CHF, SYP, BDT, WST, TZS, KZT, TTD, MNT, TND, TRY, TMT, AED, UGX, COU, CLF, UYI, USD, USN, USS, UZS, VUV, CHE, CHW, KRW, YER, JPY, CNY, ZMW, ZWL, PLN
annualFixedFeeMinorUnitsrequiredCharged to the account annually.
Example 1250
implementationFixedFeeMinorUnitsCharged once, when the loan is established.
Example 1250
extendedPaymentTermsVariableFeenumberCharged on each statement for extended payment terms, on the charges since the last one, as a decimal, 0.01 is 1%.
Example 12.5
Charged on each statement for every earlier statement left overdue. Absent, a loan update keeps the late fee the loan has and a new loan takes its product's; a monthlyRate and minimumFee of 0 charge no late fee.
typeenumrequiredLprodLatePaymentFeeAttributesmonthlyRatenumberrequiredThe monthly rate, as a decimal, 0.02 is 2% a month.
Example 0.9412
minimumFeeMinorUnitsrequiredThe least fee charged for an overdue statement on a statement run.
Example 1250
graceDaysinteger (int32)requiredDays after a statement falls due it may be paid without a late fee.
Example 1250
customerTransactionVariableFeenumberCharged on each statement for its payment terms, on the charges since the last one, as a decimal up to 0.1, 0.01 is 1%. Absent, a loan update keeps the fee the loan has and a new loan takes its product's; 0 charges no fee.
Example 12.5
supportedCardBrandsarray of CardBrandBrands of card that may be issued against the loan.
VisaMasterCardAmericanExpressDinersClubDiscoverUnionPayMaestroEloMirHiper+5 moreShow fewer
Hipercard, Jcb, Electron, Uatp, Unknown
typeA statement each day. Carries no issue day, because every day is one.
A statement each day. Carries no issue day, because every day is one.
A statement every second week, issued on this day of the week.
issueDayOfWeekLprodDayOfWeekrequiredMondayTuesdayWednesdayThursdayFridayUnknownA statement each month, issued on this day of the month.
issueDayOfMonthinteger (int32)requiredExample 6
A statement each week, issued on this day of the week.
issueDayOfWeekLprodDayOfWeekrequiredMondayTuesdayWednesdayThursdayFridayUnknowngraceDaysinteger (int32)requiredDays between statement issue and due dates.
Example 1250
industryGroupLoanIndustryGroupTravelProcurementUnknownproductLineLoanProductLineAPG's product line, as applied for. Signed with the offer, so send it back unchanged.
CentralPayVirtualPayTaaB2bSupplyChainUnknownThe metadata template, as applied for. Signed with the offer, so send it back unchanged.
typeenumrequiredLoanMetadataTemplateAttributesThe fields to check, one entry per field. An empty list checks nothing.
typeenumrequiredLoanMetadataFieldAttributespathstringrequiredWhere the field sits in the metadata JSON object. Names are separated by dots, as in additionalMetaData.dbiInfo.dbiAu. A dotted name may
hold only letters, digits and _; any other name goes in brackets and quotes, as in orders['PO number'] or a['b.c'], where a backslash
escapes a quote. Arrays cannot be indexed. A path that is empty, starts with a dot, has an empty name (a..b), indexes an array (a[0]) or
has a space outside brackets is refused with 400. A field listed twice with the same validator is kept once; with a different
validator it is refused with 400.
Example additionalMetaData.dbiInfo.dbiAu
The checks a field's value must pass. A string value is checked as it is; a number is checked as its JSON text, so 45085 is checked as
"45085". An absent field, null or a blank string is missing: it is never checked for length or format, and is a problem only while a
constraint requires it. A boolean, array or object is invalid, with the issue "Value must be text, not <type>" (a boolean, a JSON
array or a JSON object), and value then carries that type, never the content.
typeenumrequiredLoanMetadataValidatorAttributesnamestringrequiredThe field's display name, used in validation messages. For an additionalMetaData.dbiInfo.<dbiXx> path it is also the column label on
statements and reports. Must not be blank.
Example Order Number
Whether a missing or invalid value holds a charge off the customer statement. LoanMetadataNotRequired: never.
LoanMetadataDaysRequiredWithin: the charge is held until the value is valid or until days days after the transaction was created,
whichever comes first; after that the requirement lapses and the charge is published as it is. Whatever this says, a charge is published
at the first statement close 14 days after authorisation, and a refund is never held. Creating a Mastercard digital card is refused while
a field with days of 1 or more is missing or invalid.
typeA missing or invalid value holds back what this constraint governs until the value is valid, or until days days after the transaction was created. 0 or more; 0 never holds anything.
daysinteger (int32)requiredExample 1250
A missing or invalid value is reported on the transaction and holds nothing back.
A missing or invalid value is reported on the transaction and holds nothing back.
Whether a missing or invalid value holds back a captured transaction's publicAt, the time from which the publicAtAfter and
publicAtBefore transaction filters find it. LoanMetadataNotRequired: never. LoanMetadataDaysRequiredWithin: publicAt is set once
the value is valid or once days days have passed since the transaction was created. Once set, publicAt is not withdrawn.
typeA missing or invalid value holds back what this constraint governs until the value is valid, or until days days after the transaction was created. 0 or more; 0 never holds anything.
daysinteger (int32)requiredExample 1250
A missing or invalid value is reported on the transaction and holds nothing back.
A missing or invalid value is reported on the transaction and holds nothing back.
minLengthinteger (int32)requiredThe fewest characters a present value may have, inclusive, from 0 to 30. A missing or blank value is never measured, so 0 behaves as 1 and is stored as 1: a field is made optional by its constraints, not by its length.
Example 1
maxLengthinteger (int32)requiredThe most characters a present value may have, inclusive, from minLength to 30. Equal to minLength asks for exactly that length.
Example 17
formatLoanMetadataFieldFormatrequiredThe characters a present value may contain. Alphanumeric: letters, digits, whitespace and @ . ; : ? + - * / $ & # < > _ , ( ) % ',
for example PENNY LIM or PO-1234/7. Alphabetic: letters and whitespace, for example PENNY LIM. Numeric: digits and whitespace, for
example 045085; a sign or decimal point is refused. IsoDate: eight digits read as yyyyMMdd, for example 20250501; a month above 12
or a day above 31 is refused. Letters and digits include those of any script.
AlphanumericAlphabeticNumericIsoDateUnknownmetadatamap of any JSON valueFree-form data that will be stored against the loan.
referenceLoanIdstringYour own reference for the loan.
Example your-own-reference
{
"type": "LoanCreateRspOffered",
"offer": {
"type": "LoanOfferAttributes",
"loanProductId": "lprod_9f2Kd8QpLzXw",
"loanAgreementId": "lma_9f2Kd8QpLzXw",
"merchantId": "mcht_9f2Kd8QpLzXw",
"timeZone": "string",
"termsAndConditions": "string",
"expiresAt": "2026-08-19T04:21:07Z",
"offerToken": "tok_9f2Kd8QpLzXwR4mN",
"specification": {
"type": "LoanOfferSpecRealtimeSettlement",
"maxLimit": {
"type": "IsoCurrencyAmount",
"minorCurrencyUnits": 1250,
"currency": "AUD"
},
"variableFee": 12.5
},
"metadata": {
"yourKey": {}
},
"referenceLoanId": "your-own-reference"
}
}Error responses
statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}statusCodeinteger (int32)requiredHTTP status code for this error
errorCodestringrequiredAn APG Pay code providing a brief explanation of the underlying error. Use this if you wish to provide custom behaviour based on the error type.
messagestringrequiredHuman readable description of the error
tracerstringAn unique identifier for the request. Provide this to the support team if you wish to query a particular error.
detailstringOptional additional details for the error.
errorTypeDescriptionstringA description of the category of errors for the given statusCode.
metadataobjectOptional key value list of metadata
{
"statusCode": 100,
"errorCode": "string",
"message": "string",
"tracer": "string",
"detail": "string",
"errorTypeDescription": "string"
}