View Categories

Money transfer in 10n payment – P2P

1 min read

P2P Money Transfer (internal) #

This flow covers transfers between two 10nPay individuals via the public gateway. It consists of fee calculation, initiation (SCA challenge), optional code resend, and execution.

0. (Optional) Determine transfer type #

Call GET /api/v1/IndividualPayment/{iban}/is-internal-customer-account to decide whether the beneficiary IBAN belongs to a 10nPay customer. If it returns true, follow the P2P steps below. Otherwise, use the third-party IBAN flow.

1. Calculate transfer fee #

POST https://api-test.10npay.com/app/get-money-transfer-charge
Field Type Description
customerAccount string Source IBAN.
amount number Transfer amount.
id integer Source individual ID.
PaymentType string Use P2P for this scenario.

Response 200MoneyTransferChargeResponse (account balance, fee, fee currency, etc.).

2. Initiate P2P transfer (start SCA) #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/p2p-money-transfer
Field Type Description
sourceCustomerAccount string Source IBAN.
beneficiaryCustomerAccount string Beneficiary IBAN.
transactionAmount number Amount in BGN.
paymentNotes string? Optional reference.
deviceId string Device fingerprint/ID.

Response – returns an SCA status (HTTP 200). If SMS/OTP or in-app approval is needed, the client must prompt the user accordingly.

3. Resend verification code #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/resend-code-p2p-money-transfer

Send the same payload as in step 2 when the OTP expired or was not received.

4. Execute P2P transfer #

POST https://api-test.10npay.com/app/{beneficiaryIndividualId}/execute-p2p-money-transfer
Field Description
sourceCustomerAccount Source IBAN.
beneficiaryCustomerAccount Beneficiary IBAN.
transactionAmount Amount.
paymentNotes Optional reference.
code OTP / SCA code (if required).
deviceId Device fingerprint/ID.

Response 200 – transaction ID (string). If SCA via app is pending, the gateway may return HTTP 202 (Accepted) and the mobile app must poll/finish the in-app challenge before final success.

Error handling #

  • 400 – validation errors (e.g., insufficient balance, invalid accounts).
  • 404 – beneficiary not found.
  • 429 – too many attempts.
  • 500 – retry later.