[{"data":1,"prerenderedAt":133},["ShallowReactive",2],{"page:\u002Fen\u002Fapi-integration":3},{"id":4,"title":5,"body":6,"cta":108,"description":109,"extension":110,"eyebrow":111,"faq":112,"h1":122,"key":123,"lead":124,"meta":125,"navigation":126,"path":127,"rawbody":128,"schemaType":108,"seo":129,"stem":130,"updated":131,"__hash__":132},"pages_en\u002Fen\u002Fapi-integration.md","API integration: accept payment by bank transfer",{"type":7,"value":8,"toc":98},"minimark",[9,25,30,33,37,51,55,63,67,70,74,77,86],[10,11,12],"callout",{},[13,14,15,19,20,24],"p",{},[16,17,18],"strong",{},"What virement.tn is not",": a card payment gateway. There is no hosted payment page, no redirect, and no “paid” response at the end of the API call. When the call returns, the order is not paid — it is ",[21,22,23],"em",{},"committed",". You release it when the webhook is received, not before.",[26,27,29],"h2",{"id":28},"the-buyer-journey","The buyer journey",[31,32],"integration-flow",{},[26,34,36],{"id":35},"prerequisites","Prerequisites",[38,39,40,44],"ul",{},[41,42,43],"li",{},"An active virement.tn merchant account.",[41,45,46,47,50],{},"A ",[16,48,49],{},"verified RIB"," attached to that account — without it, invoice creation is refused. Verification is done from your virement.tn space (Settings → RIB).",[26,52,54],{"id":53},"authentication-principle","Authentication principle",[13,56,57,58,62],{},"Every request carries an API key in an ",[59,60,61],"code",{},"X-Api-Key"," header. The key is generated from your virement.tn space (Settings → API keys → Create a key, Manager role required) and is tied to your account: you can only invoice for yourself. The key and the webhook signing secret are displayed only once, at creation — a key can be revoked at any time.",[26,64,66],{"id":65},"the-validation-code","The validation code",[13,68,69],{},"The centerpiece of the journey: it proves the buyer's consent and replaces entering a card number. The buyer finds it in their own virement.tn space (“My validation code”) — so your payment form asks for just two fields: their phone number and this code. The code is single-use and expires after 24 hours.",[26,71,73],{"id":72},"confirmation-webhook","Confirmation webhook",[13,75,76],{},"As soon as the buyer's bank confirms that the transfer was executed, virement.tn notifies your webhook URL (configured when the key was created) with a signed payload — this signal, and only this signal, should trigger delivery of the ordered good or service.",[13,78,79,80,85],{},"For how the platform works in general, see ",[81,82,84],"a",{"href":83},"\u002Fen\u002Fhow-it-works","how it works",".",[13,87,88,89,93,94,85],{},"To get the technical reference and sandbox access, ",[81,90,92],{"href":91},"\u002Fen\u002Fcontact","contact us",". Step-by-step guide: ",[81,95,97],{"href":96},"\u002Fen\u002Fblog\u002Faccept-bank-transfer-payments-on-your-website","accepting bank transfer payments on your e-commerce site",{"title":99,"searchDepth":100,"depth":100,"links":101},"",3,[102,104,105,106,107],{"id":28,"depth":103,"text":29},2,{"id":35,"depth":103,"text":36},{"id":53,"depth":103,"text":54},{"id":65,"depth":103,"text":66},{"id":72,"depth":103,"text":73},null,"Offer virement.tn as a payment method: direct bank transfer, validation code, signed webhook — with no card gateway and no redirect.","md","For developers",[113,116,119],{"q":114,"a":115},"Does the invoice-creation API call confirm the payment?","No. When the call returns, the order is committed, not paid. It should be released only when the confirmation webhook is received, which signals that the bank has confirmed the transfer.",{"q":117,"a":118},"How is the call authenticated?","With an API key sent in the X-Api-Key header, generated from your virement.tn space (Settings, API keys). It is tied to your account: you can only invoice for yourself.",{"q":120,"a":121},"Where can I find the full technical reference?","It is provided directly to partners during integration, with the endpoints, formats and sandbox environment. Write to us from the Contact page to get it.","Integrate virement.tn as a payment method","integration-partenaires","Your customers pay you by bank transfer, from their own banking app — with no card number to enter, and no card fees for you.",{},true,"\u002Fen\u002Fapi-integration","---\nkey: \"integration-partenaires\"\ntitle: \"API integration: accept payment by bank transfer\"\ndescription: \"Offer virement.tn as a payment method: direct bank transfer, validation code, signed webhook — with no card gateway and no redirect.\"\neyebrow: \"For developers\"\nh1: \"Integrate virement.tn as a payment method\"\nlead: \"Your customers pay you by bank transfer, from their own banking app — with no card number to enter, and no card fees for you.\"\nupdated: \"2026-09-19\"\nfaq:\n  - q: \"Does the invoice-creation API call confirm the payment?\"\n    a: \"No. When the call returns, the order is committed, not paid. It should be released only when the confirmation webhook is received, which signals that the bank has confirmed the transfer.\"\n  - q: \"How is the call authenticated?\"\n    a: \"With an API key sent in the X-Api-Key header, generated from your virement.tn space (Settings, API keys). It is tied to your account: you can only invoice for yourself.\"\n  - q: \"Where can I find the full technical reference?\"\n    a: \"It is provided directly to partners during integration, with the endpoints, formats and sandbox environment. Write to us from the Contact page to get it.\"\n---\n\n::callout\n**What virement.tn is not**: a card payment gateway. There is no hosted payment page, no redirect, and no “paid” response at the end of the API call. When the call returns, the order is not paid — it is *committed*. You release it when the webhook is received, not before.\n::\n\n## The buyer journey\n\n::integration-flow\n::\n\n## Prerequisites\n\n- An active virement.tn merchant account.\n- A **verified RIB** attached to that account — without it, invoice creation is refused. Verification is done from your virement.tn space (Settings → RIB).\n\n## Authentication principle\n\nEvery request carries an API key in an `X-Api-Key` header. The key is generated from your virement.tn space (Settings → API keys → Create a key, Manager role required) and is tied to your account: you can only invoice for yourself. The key and the webhook signing secret are displayed only once, at creation — a key can be revoked at any time.\n\n## The validation code\n\nThe centerpiece of the journey: it proves the buyer's consent and replaces entering a card number. The buyer finds it in their own virement.tn space (“My validation code”) — so your payment form asks for just two fields: their phone number and this code. The code is single-use and expires after 24 hours.\n\n## Confirmation webhook\n\nAs soon as the buyer's bank confirms that the transfer was executed, virement.tn notifies your webhook URL (configured when the key was created) with a signed payload — this signal, and only this signal, should trigger delivery of the ordered good or service.\n\nFor how the platform works in general, see [how it works](\u002Fen\u002Fhow-it-works).\n\nTo get the technical reference and sandbox access, [contact us](\u002Fen\u002Fcontact). Step-by-step guide: [accepting bank transfer payments on your e-commerce site](\u002Fen\u002Fblog\u002Faccept-bank-transfer-payments-on-your-website).\n",{"title":5,"description":109},"en\u002Fapi-integration","2026-09-19","788658YnCz0ZhGRJUBcLQdB4o5miW85n9XIMHQS5yMk",1789922121964]